質問: mfc formviewの背景色 mfcで開発してます。 cformviewのクライアント領域を4分割して、右上だけ背景色を他の領域とは違う色にしたいのですが、 invalidaterect(null, true)の後のonerasebkgnd()とondraw()で、fillsolidrect()で右上だけ塗りつぶしても色が変わりません。 何が原因と考えられるでしょうか? よろしくお願いします。
回答: >invalidaterect(null, true)の後のonerasebkgnd()とondraw()で、 >fillsolidrect()で右上だけ塗りつぶしても色が変わりません。 invalidaterect()で無効化したウィンドウはonpaint()で描画します。(言い換えれば、invalidaterect()するとonpaint()が発生し、onpaint()の処理を書き換えずにデフォルトの処理のままにすると、デフォルトの背景しか描画されず、onpaint()以外で行った描画はすべて「無かった事」になります) また、onerasebkgnd()は、ウィンドウをリサイズした際にしか呼ばれません。 さらに http://www.bnote.net/sdk_mfc/mfc1.shtml には 「sdiやmdiアプリケーションの描画処理は ondraw() で行い(印刷や印刷プレビューも)。 ダイアログベースでは onpaint()で描画処理を行うようです。 」 と書いてあります。