VS2005のソリューションエクスプローラや
VC6のワークスペースウィンドウなどには、
画面右上に「×」などのボタンが置かれていて、
それをマウスで押すことができます。
Spy++でそのウィンドウを調べようとしたところ、
ファインダツールでこのボタンの位置にカーソルを合わせても
元のウィンドウ全体が対象になってしまいます。
これはつまり、その位置にボタン機能を持つウィンドウがあるわけではなく、
ソリューションエクスプローラのウィンドウが
自分自身のマウスイベントで座標を照らし合わせながら
ボタンクリックなどの処理をエミュレート(?)したり
その位置にボタンっぽく描画しているという解釈でよろしいのでしょうか。
このようなボタン処理を作られたかたはいらっしゃいませんでしょうか。
よろしくお願いいたします。
タイトルバーにある[最小化][最大化][閉じる]ボタンは[ボタン風の画像]です。
WM_NCHITTESTメッセージでタイトルバーにあるボタン領域をチェックして
クリック処理をしてます。
だから
> VS2005のソリューションエクスプローラや
> VC6のワークスペースウィンドウなどには、
もこれと同じですね。
::DrawFrameControl()はたまに使いますね。
金魚ちゃんさん、FUKUさん、解説ありがとうございます。
これってやはり、ソリューションエクスプローラ自身が
全ボタンを演じているということだったのですか。
この手の処理はボタンごとに子ウィンドウにして、
親に通知してやるものだと思っていましたが、
このような方法でやってしまうのもありなのですね。
#エクスプローラのサイドバーの「×」は
#それ自体が子ウィンドウ(ToolbarWindow32)のようです。
#MSも統一感が無いですね。