環境は、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);
}
> 右クリックにてポップアップメニューは表示されるるのですが、
> 選択できない状態のままになっております。
プロジェクトが SDI や MDI であり、
上記の意味が無効状態になってしまうということでしたら、
TrackPopupMenu() の最後の引数を NULL にしてみてください.
プロジェクトはSDIで作成しているのですが、TrackPopupMenu() の最後の引数を NULL
とするとポップアップメニュー自体が表示されませんでした。
現状は、ポップアップメニューは表示されるが、無効状態になっています。
すみません、ありがとうございました。
menu.TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, this );
でどうでしょか?
OnContextMenu(CWnd* pWnd, CPoint point)
でひっぱってきてる 「pWnd」でもいける
ありがとうございます。
下記処理でイベントを拾うことができました。
menu.TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, pWnd );
menu.TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, this);
でもいけました。
Kerryさん、ryoさんありがとうございます。