首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WTL RedrawWindow参数

WTL RedrawWindow参数
EN

Stack Overflow用户
提问于 2013-03-27 01:54:21
回答 2查看 807关注 0票数 0

我是WTL C++的新手。我真的对进入RedrawWindows函数的参数感到困惑,尤其是对于标志。我只是想在每次画一条线的时候更新一个窗口,但我不太明白如何

代码语言:javascript
复制
LRESULT  CDrawView::OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
    int xPos= GET_X_LPARAM(lParam);
    int yPos = GET_Y_LPARAM(lParam);
    end.X = xPos;
    end.Y = yPos;

    Pen pen(Color(0, 0, 255));
    m_GraphicsImage.DrawLine(&pen, start.X, start.Y, end.X, end.Y);

我试着给RedrawWindow打个电话

代码语言:javascript
复制
RedrawWIndow(NULL,NULL, NULL, RDW_INTERNALPAINT) 

因此,每次我释放鼠标左键时,窗口都会更新。我真的很难理解重画函数中的参数。我试着将它们都设置为空,减去最后一个,但Visual studio说该函数不接受4个参数,即使我阅读了msdn microsoft...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-27 02:14:09

您不能调用全局RedrawWindow

您将调用成员函数CWindow::RedrawWindow,该函数接受3个参数。

代码语言:javascript
复制
BOOL RedrawWindow(
   LPCRECT lpRectUpdate = NULL,
   HRGN hRgnUpdate = NULL,
   UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE 
); throw() 

编辑:这三个参数都有默认参数,这意味着它们不需要提供单独的RedrawWindow()就可以工作。

票数 0
EN

Stack Overflow用户

发布于 2013-03-27 04:58:59

这不是你应该使用的方式,你应该使用API。您的鼠标按钮处理程序应该使用您标记为需要更新的窗口的特定部分调用Invalidate()InvalidateRect。然后,您的窗口将在第一个操作系统方便时接收WM_PAINT事件,并且您的画图处理程序将绘制线条。

RedrawWindow这次可能会解决,但是很可能很快就会成为下一个问题的基础,因为你已经走错了路。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15644104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档