ポップアップのメニューがアクティブにならない

[戻る]
nagan 2007/02/06(火) 11:14:20
環境は、VC++2005SP1 WindowXPにてMFCで開発を行っております。

動的に生成した自作のListboxクラスにおいて下記処理にて
ポップアップメニューを作成しようとしております。
右クリックにてポップアップメニューは表示されるるのですが、
選択できない状態のままになっております。
どう対応するればよいのかわかりません。
申し訳ありませんが、ご教授ください。
宜しくお願い致します。

//***********************************************************************
//
//
//
//***********************************************************************
void CMyListBox::OnContextMenu(CWnd* pWnd, CPoint point)
{
    CMenu    menu;
    menu.CreatePopupMenu();
    menu.InsertMenu( 0, MF_BYCOMMAND, ID_LIST_POP1, "POP1" );
    menu.InsertMenu( 1, MF_BYCOMMAND, ID_LIST_POP2, "POP2" );

    menu.TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd
() );
    menu.DestroyMenu();
}
//***********************************************************************
//
//
//
//***********************************************************************
BOOL CMyListBox::OnCommand(WPARAM wParam, LPARAM lParam)
{
    switch( wParam )
    {
        case ID_LIST_POP1:
            MessageBox("Menu1起動");
            break;
    
    }
    return CListBox::OnCommand(wParam, lParam);
}

dairygoods 2007/02/06(火) 16:14:30
> 右クリックにてポップアップメニューは表示されるるのですが、
> 選択できない状態のままになっております。

プロジェクトが SDI や MDI であり、
上記の意味が無効状態になってしまうということでしたら、
TrackPopupMenu() の最後の引数を NULL にしてみてください.

nagan 2007/02/06(火) 18:38:55
プロジェクトはSDIで作成しているのですが、TrackPopupMenu() の最後の引数を NULL
とするとポップアップメニュー自体が表示されませんでした。
現状は、ポップアップメニューは表示されるが、無効状態になっています。
すみません、ありがとうございました。

Kerry 2007/02/06(火) 18:59:11
    menu.TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, this );

でどうでしょか?

ryo 2007/02/07(水) 09:32:01
OnContextMenu(CWnd* pWnd, CPoint point)
でひっぱってきてる 「pWnd」でもいける

nagan 2007/02/07(水) 09:58:56
[[解決]]
ありがとうございます。
下記処理でイベントを拾うことができました。
menu.TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, pWnd );

nagan 2007/02/07(水) 10:10:33
menu.TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, this);
でもいけました。

Kerryさん、ryoさんありがとうございます。

古いスレッドには追加発言できません。