ポップアップメニューのWM_COMMAND メッセージを受け取るには?

解決


ひろ  2004-08-02 20:48:27  No: 54106

VC6、MFCダイアログベースで制作しています。

親のダイアログからモーダルでダイアログを開き、そのモーダル
ダイアログにリストビューがあります。そのリストビューのアイ
テムを右クリックしポップアップメニューを表示して、「項目を
削除」というような機能をつけようとしています。しかし、ポッ
プアップメニューは表示するのですが、うまくいきません。

CMenu menu;
CPoint posMouse;

VERIFY(menu.LoadMenu(IDR_MENU_POPUP));
::GetCursorPos(&posMouse);
menu.GetSubMenu(1)->TrackPopupMenu(TPM_LEFTALIGN
    |TPM_LEFTBUTTON, posMouse.x, posMouse.y, this);

ポップアップメニューを表示する部分は以上のように記述している
のですが、モーダルダイアログのクラス内に「項目を削除」などの
処理を書いても、何も起こらずポップアップメニューが消えてしま
います。押されたWM_COMMANDメッセージが親ダイアログのクラスへ
行ってしまいます。
  これを、モーダルダイアログのクラス内でWM_COMMANDメッセージ
を受け取り、そこで、「項目を削除」などの処理を書きたいのです
が、どうすれば、よいのでしょうか?TrackPopupMenuの最後の引数
thisをどうかすればよいと思うのですが、そのあたりがよくわかり
ません。

ご教授お願いいたします。


hirai  2004-08-02 21:22:18  No: 54107

普通にクラスウィザードのメッセージマップで追加できませんか?
モーダルダイアログクラス、メニューのIDを選択し、"関数の追加"を押すだけ
ですが...


ひろ  2004-08-02 21:31:43  No: 54108

ご返答ありがとうございます。

うまくいきました。最初、hirariさんのご指導と同じやりかたでやって
いたのですが、なぜか親ダイアログの方へメッセージがいってしまい、
とまどってました。しかし、何度かやっていたら、うまくできました。
何が原因だったのでしょう・・・さっぱり

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加