我有一个关于奇怪地发送到我的窗口的 WM_PAINT 消息的问题。它发生在Windows 7上,不会发生在Windows XP上。
细节
在我的程序中,我有一个触发 GUI 更新的计时器,该计时器基于此 API 调用:
CreateTimerQueueTimer
在为我的系统提供处理计时器到期的线程中,我做了一些 GUI 更新,即在窗口(0,0)->(57,50)中画一条线:
HDC hdc = GetDC (hwnd);
MoveToEx (hdc, 0, 0, NULL);
LineTo (hdc, 57, 50);
ReleaseDC(hwnd,hdc);
正如我在Windows XP上所期望的那样工作,但在Windows7上,这使得系统向这个窗口发送 WM_PAINT 消息,更新区域为:(0,0,58,51)。请注意,矩形比受线影响的正方形区域宽一个像素。
由于此绘图而到达的 WM_PAINT 是我不明白的。窗口没有被触摸/重叠/调整大小等。显然,这条线被系统识别为矩形无效。
这只发生在 Windows 7 中(与 Windows XP 不同)。
问题
W7 中的 WDM 或 Windows 处理有什么新东西吗?有什么办法可以避免这种情况?
这可能是我的程序或我正在使用的图形工具包中的一个错误(或两者兼而有之)。但为什么它只出现在 Windows 7 上呢?
感谢您提供任何线索!
丹尼