ポップアップメニュー
【サンプル】
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);
}