win32 SDK子窗口绘画(C / C ++)

时间:2009-01-17 03:08:33

标签: winapi childwindow

我正在使用win32 Platform SDK(在XP专业版上)创建一个应用程序,其中包含一个带有多个子窗口的主窗口。

传递给CreateWindow的样式是WS_OVERLAPPEDWINDOW | WS_VISIBLE(对于主窗口)和WS_CHILDWINDOW | WS_VISIBLE对于孩子。

我看到的错误是当我的应用程序上拖动另一个应用程序时,底层窗口不会被重绘。强制更新的一种简单(但很有瑕疵)的方法是“摇动”标题栏。

我猜我错过了一条Windows消息或没有正确调用win32函数。我的大部分代码都直接来自Petzold的95书。

如果重要,主窗口不需要绘制任何东西:子窗口处理所有显示任务。

1 个答案:

答案 0 :(得分:0)

听起来你没有为WM_PAINT消息调用DefWindowProc。

您确定要正确处理WM_PAINT事件吗? 特别要确保您正在调用的WM_PAINT消息:

DefWindowProc(hwnd,msg,wParam,lParam);

当您的窗口需要重新绘制时,将调用WM_PAINT。

如果您正在尝试处理自己的窗口绘图,请确保在处理程序中调用BeginPaint和EndPaint。