「普通のボタンにはもう飽きたのさ」
ドロップダウンボタンを作る
本章の目的である、IEの標準のボタン(戻る、進む、中止、更新とか)を作る為には、
普通のボタンだけでなく、右側に▼が付いたドロップダウンボタンが必要になります
というわけで、作ってみましょう
「割と面倒だった気がするからパス」
まぁ、確かにメニューとか書かないといけないから面倒ですけど、
必要なことなので・・・・
ドロップダウンボタンの作り方
ドロップダウンボタンを作るには、
・TB_SETEXTENDEDSTYLEにTBSTYLE_EX_DRAWDDARROWSを指定
・fsStyleにTBSTYLE_DROPDOWNを指定
の2つをする必要があります
前者は
SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_DRAWDDARROWS);
みたいに書きます
OnCreate時に書いておけば反映されます
後者はこんな感じ
btn.fsStyle = TBSTYLE_BUTTON | TBSTYLE_DROPDOWN | BTNS_AUTOSIZE | BTNS_SHOWTEXT;
この2つを追記すると、こんなボタンになります
ちゃんと▼が出てます
でも、この状態だと▼を押しても何も起きません
ドロップダウン時のメニューを作る
▼ボタンを押した際に、メニューが出るようにする為に、
・▼ボタンを押された際のイベントを取得する
・メニューを作る
の2点を実装してあげる必要があります
メニューまで作っていると長くなるので、今回は▼ボタンを押された際に、
メッセージボックスを出すところまでやってみようと思います
▼ボタンのイベントは、WM_NOTIFYに届きます
ということで、ToolbarWindow.hに、WM_NOTIFYを取る記述を加えて、
ToolbarWindow.cppに、メッセージボックスの記述を書きます
記述はこんな感じ
・ToolbarWindow.h
・ToolbarWindow.cpp
クマーボタンのドロップダウンボタンが押されたことを判定する為に、
LPNMCUSTOMDRAWにキャストしたり、dwDrawStageを見たりしていますが、
この辺の詳しい話は・・・・よく知りません
「サンプルソースのコピペってことだな」
暇になったら、ちゃんと調べて説明書きます
いつか、きっと・・・・
※後述、ここでLPNMCUSTOMDRAWって、明らかに変だよね
コメントスペース