MFCアプリケーションを継承し、OnPaint
に応答するいくつかのオーナー描画ウィジェットを持つウィンドウを持ち、さまざまな描画を行います。MFCカスタムOnPaintが確実に呼び出されない
私は、さまざまなユーザーのアクションに応じて再描画するためのコントロールを強制するために、次のコードがあったことに気づい:
CRect rect;
m_myControl.GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect, FALSE);
私はこれがそうのように単純化することができると思っていた:
m_myControl.Invalidate(FALSE);
しかし、実際には、私がこのようにすると、コントロールペイントはときどき他のものではない。具体的には、ウィンドウ内のコントロールとやりとりしているときに、ときどきmyControl
が単なる灰色の塗装になります。コードをより複雑なInvalidateRect
スタイルに変更しました。もう一度うまく機能しています。
なぜここに違いがありますか?
コントロールが描画されていない可能性がありますが、代わりに親ウィンドウがそれを行っていますか? –
後者の方法を使用してグレーになるコントロールは、親ウィンドウのOnPaintによって描画されます。コントロールの1つは、それ自体を塗りつぶしても問題はありません。 – StilesCrisis