- ボタンにアイコンを表示 -



毎回至極簡単な事ばかりやってます。
私自身その程度のスキルですのでご勘弁ください。
小さな積み重ねがやがて大きな力になります。(--

今回はボタンにアイコンを表示する方法の紹介。



ボタンのアイコン表示にはCButtonクラスのSetIconメンバー関数を使います。


□ MSDNよりSetIconについての引用 □

 HICON SetIcon( HICON hIcon );

   ・戻り値は以前のアイコンハンドル。
   ・引数は1つで同じくアイコンハンドルです。





ダイヤログの初期化処理(OnInitDialog等)で上記の記述を追加してやればボタンにアイコンが表示されるようになります。



≪ ダイヤログベースでの作成サンプル ≫


 ■ダイヤログにボタンを作成

      





 ■ClassWizardよりボタンにメンバー変数m_btを作成

      

      ※カテゴリ→コントロール 変数タイプ→CButton
      ※変数名は何でもOK





 ■OnInitDialog関数にソース追加

//////////////////////////
// CIcoDlg メッセージ ハンドラ

BOOL CIcoDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// "バージョン情報..." メニュー項目をシステム メニューへ追加します。

// IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL) {
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty()) {
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
// ウィンドウがダイアログでない時は自動的に設定しません。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定

// TODO: 特別な初期化を行う時はこの場所に追加してください。

//アイコンハンドルico_01を作成
HICON ico_01;

//作成したアイコンハンドルにアイコンを格納
ico_01 = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

//SetIcon関数を使いダイヤログのボタンにアイコンを設定
m_Bt.SetIcon(ico_01);


return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
}

デフォルトのアイコン表示ならアイコンハンドルが既に取得されているので

m_Bt.SetIcon(m_hIcon);

とするだけでもOKです。




 ■ボタンプロパティでアイコンをチェックする

      

      ※スタイル→アイコン





 ■以上、コンパイルすれば完成