MFCアプリを継承しましたが、ウィンドウには、OnPaint
さまざまな描画に応答して実行する所有者描画ウィジェットがいくつかあります。
さまざまなユーザーアクションに応じてコントロールを強制的に再描画するために、次のコードがあることに気付きました。
CRect rect;
m_myControl.GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect, FALSE);
私はこれを次のように単純化できると思いました:
m_myControl.Invalidate(FALSE);
しかし、実際には、このようにすると、コントロールはペイントすることがありますが、他のペイントはペイントしません。具体的には、ウィンドウ内のコントロールを操作しているときに、myControl
灰色で塗りつぶされてしまうことがあります。コードをより複雑なInvalidateRect
スタイルに戻しましたが、再びうまく機能しています。
なぜここに違いがあるのでしょうか?