我是WTL C++的新手。我真的对进入RedrawWindows函数的参数感到困惑,尤其是对于标志。我只是想在每次画一条线的时候更新一个窗口,但我不太明白如何
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打个电话
RedrawWIndow(NULL,NULL, NULL, RDW_INTERNALPAINT) 因此,每次我释放鼠标左键时,窗口都会更新。我真的很难理解重画函数中的参数。我试着将它们都设置为空,减去最后一个,但Visual studio说该函数不接受4个参数,即使我阅读了msdn microsoft...
发布于 2013-03-27 02:14:09
您不能调用全局RedrawWindow。
您将调用成员函数CWindow::RedrawWindow,该函数接受3个参数。
BOOL RedrawWindow(
LPCRECT lpRectUpdate = NULL,
HRGN hRgnUpdate = NULL,
UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE
); throw() 编辑:这三个参数都有默认参数,这意味着它们不需要提供单独的RedrawWindow()就可以工作。
发布于 2013-03-27 04:58:59
这不是你应该使用的方式,你应该使用API。您的鼠标按钮处理程序应该使用您标记为需要更新的窗口的特定部分调用Invalidate()或InvalidateRect。然后,您的窗口将在第一个操作系统方便时接收WM_PAINT事件,并且您的画图处理程序将绘制线条。
RedrawWindow这次可能会解决,但是很可能很快就会成为下一个问题的基础,因为你已经走错了路。
https://stackoverflow.com/questions/15644104
复制相似问题