ポップアップメニュー

久しぶりにパソコンネタ

多くの方には意味不明(呪文)な予感・・・・
自分用の覚書ですm(__)m

昨日から解決できずにイライラしてました

ダイアログに CTreeCtrl(ツリービュー)を配置
そのアイテムをマウスの右クリックで
メニューを表示して処理したい・・・

処理関数はダイアログ側に記述
メニューは表示されるのに灰色状態でクリックできない
ダイアログがメッセージを受信できない状態なのは
すぐ判ったのですが何故?かが理解できず・・・

当初のコード

DWORD dw = ::GetMessagePos();
POINTS po = MAKEPOINTS(dw);

CMenu mnuTop;

mnuTop.LoadMenu(IDR_POPUP_MENU); // MENU のロード

CMenu* pPopup = mnuTop.GetSubMenu(0);
ASSERT_VALID(pPopup);

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, po.x, po.y, AfxGetMainWnd(), NULL);

どうしてもツリーを配置してあるダイアログに
メッセージが届かず (?_?) となってました・・・

今一度参考書を眺めてみて解決しました

動くコード

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, po.x, po.y, this, NULL);

第4引数を this とか ダイアログの hWnd にすればOK
判れば当然だが・・・・その時は気がつかないもんさw

AfxGetMainWnd()
これじゃもとのフレームにメッセージ送ってるしだけだし・・・

スッキリはしたけど 疲れた

ポップアップメニュー」への5件のフィードバック

  1. とろりん。

    オヤジさん。
    おまじないか、呪文か、宇宙人
    の世界ですね。
    これ、誰がわかるのですか。
    あはは。
    旅しゃんとかも、わかるのかしらん。

    返信
  2. misogoma

    ウィザードになれないオヤジです(笑

    大丈夫です Windows 使ってる99%以上の
    人が理解出来ませんw

    理解できちゃったらオヤジの存在意義
    (仕事の約1/4?)が無くなります(爆

    返信
  3. 旅人

    とろりん。しゃん、私も 多くの方 の一員です(笑

    オヤジさんはスッキリされたそうですが、私はまるで(汗

    今朝、新しいOSが発売されるというので前夜から行列を作って並んでいた人達も分かりません

    返信
  4. misogoma

    Windows Vista ですね

    Windows XP の期限が切れるまで
    オヤジも当分要りません
    (全く買う気無し)

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA