Last Updated 2011/04/06 |
Programming Tips Visual C++ MFC CButton | 索 引 |
ボタンのオーナー描画
2004/06/10
ボタンの色を変更する為に,ボタンのスタイルをオーナー描画とする. ClassWizard で WM_DRAWITEM のハンドラを指定すれば以下のハンドラが作成される.
nIDCtl にはコントロールの識別子が入っている. DRAWITEMSTRUCT 構造体の CtlType には,ボタンであれば ODT_BUTTON,メニューであれば ODT_MENU が格納されている. itemState には描画すべき状態が格納されている. ODS_SELECTED であれば「ボタンが押された状態」を描画しなければならない. ODS_FOCUS であれば「ボタンにフォーカスがある状態」を描画しなければならない. 描画するにはデバイスコンテキストが必要である.このデバイスコンテキストも DRAWITEMSTRUCT 構造体から取得する.
とすれば CDC クラスが使用できる. オーナー描画は全てを自分で描画しなければならない.ボタンの枠や影もそれに漏れない.当然フォーカスがあたっている時の点線も同様である. ボタンのイメージを描画するには,DrawFrameControl() を使用するとよい.
また,フォーカス時の点線は DrawFocusRect() を使用する. 参照 ボタンの色 ボタンのフォント(オーナー描画) |
|