1,首先在資源欄的 menu 項建立好要使用的菜單;
2,對於一般的視窗和控制項,可以使用 ClassWizard 建立其訊息處理函數 OnContextMenu() ;
3,特定地區的右鍵菜單也可以建立滑鼠右鍵訊息響應;
4,在訊息響應函數中快顯功能表:
void CScanFileList::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
{
// TODO: Add your message handler code here
//按右鍵顯示菜單
CMenu Menu;
Menu.LoadMenu(IDR_MAINFRAME);
CMenu *pPopUpMenu = Menu.GetSubMenu(1);
//show menu
pPopUpMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, AfxGetMainWnd());
}
5,如果是響應右鍵訊息,那麼快顯功能表的位置參數就要使用 API 來獲得了,沒錯,就是擷取滑鼠當前位置:
case WM_RBUTTONDOWN:
POINT pt;
if (!GetCursorPos(&pt))
{
// error
CString strErr;
strErr.Format(_T("Cannot pop mouse right button memu, GetCursorPos failed !/r/n/r/nError: %s")
, GetErrorMsgAndCode() // 本函數參見我的另一文:http://tb.blog.csdn.net/TrackBack.aspx?PostId=2071783
);
AfxMessageBox(strErr);
return;
}
CMenu rbMenu;
rbMenu.LoadMenu(IDR_MENU_RButton);
CMenu *pPopUpMenu = rbMenu.GetSubMenu(0);
pPopUpMenu->TrackPopupMenu(TPM_LEFTALIGN, pt.x, pt.y, this);
break;
6,That's All,就是這麼簡單。(ps:有空就給點回複吧!:)