WTL RedrawWindow parameterrs

WTL RedrawWindow parameterrs

本文关键字:parameterrs RedrawWindow WTL      更新时间:2023-10-16

我是wtlc++的新手。我真的很困惑,进入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) 

所以每次我释放鼠标左键,窗口得到更新。我很难理解重绘函数的参数。我试着把它们都设为null减去最后一个但是Visual studio说函数不需要4个参数尽管我读了msdn microsoft。

您没有调用全局RedrawWindow

你正在调用成员函数CWindow::RedrawWindow,它有3个参数。

BOOL RedrawWindow(
   LPCRECT lpRectUpdate = NULL,
   HRGN hRgnUpdate = NULL,
   UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE 
); throw() 
编辑:

这三个参数都有默认参数,这意味着它们不需要单独提供,RedrawWindow()应该单独工作

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

RedrawWindow可能会解决这个问题,但是很可能很快就会成为下一个问题的基础,因为您已经在错误的方向上了。