たまにはVC++

『オーナードローを作る』
2003.JUn.22

ボタンのオーナードロー

オーナードローについては前にやってます。
ボタンのオーナードローはメニューほど面倒くさくはありませんが、やっぱり「オーナー描画」というだけあって、それなりに面倒くさいです。
とにもかくにもやってみましょう。
いいからソースを見せろ!

どうぞ
やっぱソース見ないとピンときませんね。
オーナードローメッセージ

ボタンのオーナードローは WM_DRAWITEM メッセージが来るので、ここに描画ルーチンを書きます。
このメッセージは処理をした場合TRUEを返さなくてはなりません。

ちなみに何も描画しないと、ボタンはデフォルトの表面色を持った、ただの平面でしかありません。
つまり、ボタンの枠も自分で描画しないといけないという事です。
淡色表示(無効状態)のボタン

意外と「無効状態」のサンプルってネットにないんですよねー。
「そんな所までやらんにゃならんのか・・・」とは思わないでそこまで出来るのがオーナードローなんです。
自由度が高いって事ですね。(まぁ制限もありますが)

無効状態、つまりEnabledWindow()なんかで、ボタンを無効化した場合、通常文字色が灰色になって、画像なんかはマスク色を除いた部分が暗い灰色になります。
これはSetTextColorイメージリストコントロールを使えば、あっさり実現できます。
使い方はサンプルを見てください。
サンプル画像

サンプル画像です。





フォーカスの枠も描画しています。
あと画像じゃ分かりづらいですが、淡色文字は2重になっています。
終わり

これで終わりです。
折角のオーナードローですから、もっと色々画像を変えてみると面白いと思いますよ。

今回やったサンプルです。
c05.lzh (7.58KB)



[先頭ページへ] [次のページへ]

リンクフリー  Copyright (C) K_Yaguchi