八角形ボタンクラス(COctButton)


■ 概略説明
 八角形のボタンを表示するクラスです。



八角形にアレンジしたボタンを表示するクラスです。また表示色も変更することができます。
このバージョンは、色の指定方法を変更しました。以前のバージョンはボタンのフェースだけでなく、ハイライトや影の色も指定しなくてはならなかったのですが、このバージョンでは表面色から他の色を割合で求めるように変更しました。
■ プログラムの説明
 COctButtonは、CButtonのオーナー描画のための継承クラスです。
ポイントとしては、ボタンの形状に合わせた、マウスの領域指定とボタンの描画です。
 マウスの領域指定には、CRgnのリージョンクラスを用いています。
リージョンの指定は、まずボタンの最も外側の9点(最初と最後の点は同じ)を決め
CreatePolygonRgn( )関数でリージョンを作成します。
そして、SetWindowRgn( )関数でそのリージョンを登録します。
 描画処理は、比較的簡単で上記の9点を使って八角形を描画し、中央にテキストを書いているだけです。
これらを応用すれば、いろいろな形のボタンを作れるでしょう。

COctButtonの使い方は簡単です。

(1) まず、貴方のダイアログを持つプロジェクトにOctButton.cppとOctButton.hを挿入して下さい。

(2) そして、ダイアログエディターで適当にボタンを作成して下さい。この時、ボタンの大きさは大体正方形になる様にして下さい。表示サイズは縦横短い方の辺に自動的に合わせられます。既製の[OK]ボタンや[キャンセル]ボタンを変形させてもOKです。

(3) 次にこのダイアログのインプリメンテーションファイル内で、上記のボタンからタイプがコントロールの変数を作成します。基本となるクラスはCOctButtonにして下さい。これで八角形のボタンが表示されるはずです。

(4) また、ボタンの色を変更したい場合は、OnInitDialog内でCOctButton::SetColors()をコールして下さい。

例:
m_cBtn.SetColors( RGB( 255, 255, 255), RGB( 0, 0, 255)); // COctButtonの変数です。
最初のパラメータはボタンのテキスト色、2番目は表面色です。

色の変更をしない場合は、通常のボタンと同じ色になります。
■ ファイルのダウンロード
(MFC6.0プロジェクトファィル17KB)