ポップアップメニューを表示する

例えば、あるダイアログ上で右クリックしたときにポップアップメニューを表示する処理を行うには、次のようにする。
メニューリソースの作成
メニューリソースを作成する。ポップアップメニューの場合は、 下図のようなサブメニューが1つのポップアップメニューとして扱われる。つまりこの例では、 右クリックすると「終了(&X)」メニューだけのポップアップメニューが表示されるようになる。
ちなみに下図の「POPUP1」という文字列の部分は任意の文字列でよい。
プログラムでの記述
ClassWizardを使用し、ダイアログクラスにWM_RBUTTONDOWNメッセージのハンドラOnRButtonDown関数を定義する。
この中で、以下のようにしてポップアップメニューを呼び出す。
void CMyDialog::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
	CMenu menu;
	VERIFY(menu.LoadMenu(IDR_MENU1));
	CMenu* pPopup = menu.GetSubMenu(0);
	ASSERT(pPopup != NULL);

	ClientToScreen(&point);

	pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
		 point.x, point.y, AfxGetMainWnd());

	CDialog::OnRButtonDown(nFlags, point);
}

目次へ