2012-02-07 33 views
0

私はC++のMFC MDIアプリケーションを持っています。私はそれにいくつかのボタンを備えたツールバーを持っています。私はこのツールバーにいくつかのチェックボックスを追加する必要があり、私は私のボタンと同じようにカスタムビットマップを持つ必要があります。ありがとうカスタムビットマップを使用してMFCのツールバーにチェックボックスを追加するにはどうすればよいですか?

編集: 私はvisual stuidos 2008のツールバーエディタを使用して作成できるピクセル画像を参照しています。通常のチェックボックスの代わりに画像を作成したいと思います。

+0

に役立つかもしれないリンクです詳細/例/あなたが達成したいもののモックアップを提供してください。 "ボタンのようにカスタムビットマップを持つ必要がある" – Kris

答えて

2

ツールバーではチェックボックスを使用しません。

には通常のボタンを使用してください。モードをチェックしてください。これは、ユーザーがボタンを離したときにボタンが押されたままであることを意味します。もう一度クリックすると、ボタンが放されます。これは、チェックボックスと同じ動作です。

あなたはコードでチェック可能として、ツールバーのボタンを設定することができ、次のいずれか

m_ToolBar.SetButtonStyle(nButtonId, TBBS_CHECKBOX); 

またはリソースエディタで対応するプロパティを有効にすることもできます。

ボタンを押したときに表示される画像を変更する場合は、ON_UPDATE_COMMAND_UIハンドラでm_ToolBar.GetButtonInfo()を使用して画像が状態と一致するかどうかを確認します。そうでない場合は、m_ToolBar.SetButtonInfo()を使用して変更し、ツールバーの画像リストに追加された余分な画像のインデックスを指定します。

+0

setbuttonstyleを呼び出すときにImがデバッグアサーションに失敗し、デバッガが 'VERIFY(pBar-> DefWindowProc(TB_GETBUTTON、nIndex、(LPARAM)pButton)); ' – ldgorman

+0

あなたのインデックスはおそらく間違っています。 –

+0

ありがとうございました。これは、メッセージを送信するのと比較して、非常に便利で、はるかに簡単です: 'm_wndToolBar.SendMessage(TB_CHECKBUTTON、ID_BUTTON、FALSE);'をチェックしてチェックを外します。唯一のことは、私のボタンのインデックスは、私が期待するものからオフセットされているようです。何か案は? – ldgorman

関連する問題