ポップアップメニュー




【サンプル】

protected:
	CMenu pCMenu;  //メニュークラスの宣言


//マウスを右クリック時にポップアップメニューが開くようにする。
void CMenuPopUpDlg::OnRButtonDown(UINT nFlags, CPoint point) 
{
	
	
	if(pCMenu == NULL){
		//メニューが開いていない時
		if(pCMenu.CreatePopupMenu()){	//ポップアップメニューを作成
			
			//メニューの項目を設定
			pCMenu.AppendMenu(MF_STRING, 10,"TEST1");
			pCMenu.AppendMenu(MF_STRING, 20,"TEST2");
			pCMenu.AppendMenu(MF_STRING, 30,"TEST3");

			//メニューを表示
			CRect WinRect;
			this->GetWindowRect(WinRect);

			pCMenu.TrackPopupMenu(TPM_CENTERALIGN,
					   WinRect.left + point.x,
                       WinRect.top + point.y,
                                             this, NULL);
		}
	}
	else{
		//メニューを破棄
		pCMenu.DestroyMenu();
	}


	CDialog::OnRButtonDown(nFlags, point);
}

//メニューの選択以外で、マウスが左クリックされたとき
void CMenuPopUpDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	
	pCMenu.DestroyMenu();

	CDialog::OnLButtonDown(nFlags, point);
}


//メニューからのメッセージを受け取るための仮想関数
BOOL CMenuPopUpDlg::OnCommand(WPARAM wParam, LPARAM lParam) 
{

	switch(wParam){
	case 10:
		AfxMessageBox("TEST1");
		break;
	case 20:
		AfxMessageBox("TEST2");
		break;
	case 30:
		AfxMessageBox("TEST3");
		break;
	}
	pCMenu.DestroyMenu();

	return CDialog::OnCommand(wParam, lParam);
}