【发布时间】:2011-04-16 21:53:32
【问题描述】:
我有一个关于奇怪地发送到我的窗口的 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 上呢?
感谢您提供任何线索!
丹尼
【问题讨论】: