ウィンドウではないボタン – プログラミング – Home

ウィンドウではないボタン
 
通知
すべてクリア

[解決済] ウィンドウではないボタン


亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

VS2005のソリューションエクスプローラや
VC6のワークスペースウィンドウなどには、
画面右上に「×」などのボタンが置かれていて、
それをマウスで押すことができます。

Spy++でそのウィンドウを調べようとしたところ、
ファインダツールでこのボタンの位置にカーソルを合わせても
元のウィンドウ全体が対象になってしまいます。

これはつまり、その位置にボタン機能を持つウィンドウがあるわけではなく、
ソリューションエクスプローラのウィンドウが
自分自身のマウスイベントで座標を照らし合わせながら
ボタンクリックなどの処理をエミュレート(?)したり
その位置にボタンっぽく描画しているという解釈でよろしいのでしょうか。

このようなボタン処理を作られたかたはいらっしゃいませんでしょうか。
よろしくお願いいたします。


引用未解決
トピックタグ
金魚ちゃん
 金魚ちゃん
(@金魚ちゃん)
ゲスト
結合: 16年前
投稿: 52
 

タイトルバーにある[最小化][最大化][閉じる]ボタンは[ボタン風の画像]です。
WM_NCHITTESTメッセージでタイトルバーにあるボタン領域をチェックして
クリック処理をしてます。

だから
> VS2005のソリューションエクスプローラや
> VC6のワークスペースウィンドウなどには、
もこれと同じですね。


返信引用
FUKU
 FUKU
(@FUKU)
ゲスト
結合: 17年前
投稿: 73
 

::DrawFrameControl()はたまに使いますね。


返信引用
亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

金魚ちゃんさん、FUKUさん、解説ありがとうございます。
これってやはり、ソリューションエクスプローラ自身が
全ボタンを演じているということだったのですか。

この手の処理はボタンごとに子ウィンドウにして、
親に通知してやるものだと思っていましたが、
このような方法でやってしまうのもありなのですね。

#エクスプローラのサイドバーの「×」は
#それ自体が子ウィンドウ(ToolbarWindow32)のようです。
#MSも統一感が無いですね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました