MFCでのボタンの使い方

スクリーンショット_062013_091626_PM

プログラムにおいて基本であるボタンの使い方について説明します。

まずは、MFCプログラムにおいて、ダイアローグベースのプロジェクトを作成します。

ここではTestという名前のプロジェクトを作成しました。

そして、以下のようにボタンを配置します。

スクリーンショット_062013_091626_PM

右のツールボックスからボタンを選択してドラッグアンドドロップで配置できます。

大きさも自由に変えることができます。

プロパティについて

ボタンを配置するとプロパティの設定ができます。

プロパティでは以下の項目をよく使用するのでおさえておきましょう。

  • Caption:ボタンに表示される文字を決めます
  • ID:ボタンのIDです。プログラムでボタンを操作する際に必要です。

ここでは、Captionを「表示」とし、IDを「IDC_BUTTON1」とします。

イベントの作成

では、ボタンを押した際の操作をプログラムしましょう。

ボタンを選択してプロパティのイベントボタンを押します。

そして、BN_CLICKEDを選択します。

スクリーンショット_062013_092506_PM

すると、TestDlg.hに以下のように追加されます。

void CTestDlg::OnBnClickedButton1()
{

 // TODO: ここにコントロール通知ハンドラー コードを追加します。

}

 

このTODO以下にボタンを押した際の命令を記述していきます。

今回はメッセージボックスを表示させるので、

void CTestDlg::OnBnClickedButton1()
{

 // TODO: ここにコントロール通知ハンドラー コードを追加します。
 AfxMessageBox("ボタンが押されました。");

}

とプログラムしました。これによりボタンを押すと「ボタンが押されました。」と表示されます。

ボタンの有効化と無効化

ボタンを押してほしくない場合がプログラムを組んでいると起きてきます。

そこで、ボタンの有効化と無効化について説明します。

ボタンの有効化と無効化は

((CButton*)GetDlgItem(IDC_BUTTON1))->EnableWindow(FALSE);

の命令で実現できます。TRUEで有効、FALSEで無効です。

GetDlgItemによりIDがIDC_BUTTON1の情報を得ています。

そして、EnableWindowで有効か無効かを決めることができます。

ボタンを消す

ボタンを見えなくすることもできます。

ボタンを見えなくするには

((CButton*)GetDlgItem(IDC_BUTTON1))->ShowWindow(FALSE);

とします。FALSEで見えなくなり、TRUEで見えるようになります。

ボタンにビットマップを表示させる

ボタンに文字でなくてビットマップを表示させたい場合があります。

そのような場合は、まず、表示させたいビットマップを読み込みます。

リソースビューの「Bitmap」上で右クリックして、「リソースの追加」を選択します。

そして、「Bitmap」を選び「インポート」により読みたいビットマップファイルを選択します。

するとビットマップが読み込まれ「IDB_BITMAP1」のような感じになります。

このIDはプロパティで変えられるので、好きなIDへ変更しましょう。

 

続いて、ビットマップ制御用のオブジェクトを導入します。

クラスビューの「***View」上で右クリックして、「追加->変数の追加」を選択します。

そして、変数の種類をCBitmap、変数名は好きに決めてください。ここではm_bitとします。

値を入れたら完了をクリックします。

 

次に、ダイアローグの編集画面で、ボタンのプロパティである「Bitmap」をTrueとします。

あとは、

m_bit.LoadBitmap(IDB_BITMAP);
CButton *pButton;
pButton=(CButton *)GetDlgItem(IDC_BUTTON);
pButton->SetBitmap(m_bit);

とすればボタンにビットマップが表示されます。

著者:安井 真人(やすい まさと)