メニュー処理 – プログラミング – Home

通知
すべてクリア

[解決済] メニュー処理


komada
 komada
(@komada)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

こんにちは。

メニューの項目を選択したとき、WM_MENUSELECTが送られるじゃないですか。
そのタイミングでウインドウに文字を表示していますが。

逆にメニュー項目からフォーカスが外れた時
ウインドウの文字を消したいですが、何かメッセージがきますか?

できましたら処理法を教えてください。

case WM_MENUSELECT:
switch (LOWORD(wp)){
case 10:
a=1;
InvalidateRect( hwnd, NULL, TRUE);
break;
case 11:
a=2;
InvalidateRect( hwnd, NULL, TRUE);
break;
}

case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
switch(a){
case 1:
TextOut(hdc,0,100,赤です,lstrlen(赤です));
break;
case 2:
TextOut(hdc,0,100,青です,lstrlen(青です));
break;
}


引用未解決
トピックタグ
・・・
 ・・・
(@・・・)
ゲスト
結合: 23年前
投稿: 16
 

WM_KILLFOCUSでいいと思います。


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

回答どうもありがとうございます!

WM_KILLFOCUSはウインドウがフォーカスをなくした時送られますよね。
これはウインドウについたメニューなんですが、
ダイアログについたメニューだとダイアログプロシージャーで処理できそうな気がしま
すが、

ウインドウについたメニューの場合
ウインドウプロシージャでcase WM_KILLFOCUSすると、
親ウインドウがフォーカスをなくした時送られるきがしますが

どのようにすれば課題を克服できるんでしょうか?
よろしければお願いします。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

メニューが閉じられるときにもWM_MENUSELECTが送られます。
パラメータの説明も書いてあるので調べてみてください。


返信引用
オレンジフィッシュ
 オレンジフィッシュ
(@オレンジフィッシュ)
ゲスト
結合: 18年前
投稿: 58
 

ねぇねぇ。

WM_NCMOUSEMOVE って知っている?
これ使えないか。

前にランチャーソフトを作ったときにメニューバー領域の
クリックは WM_NCLBUTTONDOWN、WM_NCLBUTTONDBLCLK を使った。
そしてメニューバー領域のマウス移動を WM_NCMOUSEMOVE で
キャッチしてメッセージを消したりしていた。なので参考になるよね。
http://wisdom.sakura.ne.jp/system/winapi/win32/win42.html


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

回答ありがとうございます!
メニューを閉じるとWM_MENUSELECTがくるみたいですね。

できれば 項目が選択されている時 背景がブルーになる、
マウスがはずれると元の色に戻る、しかしメニューはとじられてない
このタイミング処理したかったですが、
上記のやり方でもいけそうです。

WM_NCMOUSEMOVE はおおと思いました!
座標はスクリーン座標ですね。
メニューをクリックすると項目がドロップダウンして
クライアント領域にかぶってきますが大丈夫なんですかね。

すごくよさそうなんですが自分には難しそうです。

皆さんありがとうございました!
とりあえず解決とします。


返信引用
tafu
 tafu
(@tafu)
ゲスト
結合: 19年前
投稿: 2
 

WM_EXITMENULOOPというのがあります。
これは、使えないですか。


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

回答どうもありがとうございます!
ネットで調べると関係があるようですね。
サンプルがなかなか見つかりませんが。
いろいろ調べてみます。
どうもありがとうございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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