熊「普通のボタンにはもう飽きたのさ」


ドロップダウンボタンを作る

本章の目的である、IEの標準のボタン(戻る、進む、中止、更新とか)を作る為には、
普通のボタンだけでなく、右側に▼が付いたドロップダウンボタンが必要になります

というわけで、作ってみましょう

熊「割と面倒だった気がするからパス」

まぁ、確かにメニューとか書かないといけないから面倒ですけど、
必要なことなので・・・・


ドロップダウンボタンの作り方

ドロップダウンボタンを作るには、
TB_SETEXTENDEDSTYLETBSTYLE_EX_DRAWDDARROWSを指定
fsStyleTBSTYLE_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って、明らかに変だよね


HOME    次へ


コメントスペース