ウィンドウに送信された奇妙な発信WM_PAINTメッセージについて質問があります。これはWindows7で発生し、 WindowsXPでは発生しません。
詳細
私のプログラムには、GUIの更新をトリガーするタイマーがあり、タイマーは次のAPI呼び出しに基づいています。
CreateTimerQueueTimer
タイマーの有効期限を処理するためにシステムに提供されたスレッドで、いくつかのGUI更新を行います。つまり、ウィンドウ(0,0)->(57,50)に線を描画します。
HDC hdc = GetDC (hwnd);
MoveToEx (hdc, 0, 0, NULL);
LineTo (hdc, 57, 50);
ReleaseDC(hwnd,hdc);
はWindowsXPで期待どおりに機能しますが、Windows7では、これにより、システムはWM_PAINTメッセージを更新領域(0,0,58,51)でこのウィンドウに送信します。長方形は、線の影響を受ける正方形の領域よりも1ピクセル広いことに注意してください。
この図面のために到着したこのWM_PAINTは、私には理解できません。ウィンドウはタッチ/オーバーラップ/サイズ変更などされていません。どうやら、この線は長方形の無効化としてシステムによって認識されます。
そして、これはWindows 7の場合にのみ発生します(Windows XPではありません)。
質問
W7でのWDMまたはWindowsの処理について何か新しいことはありますか?これを回避する方法はありますか?
プログラムまたは使用しているグラフィックツールキット(あるいはその両方)のバグである可能性があります。しかし、なぜそれがWindows7でのみ現れるのでしょうか。
手がかりをありがとう!
デニーズ