您的位置:首页 > 其它

Windows 界面:右键菜单的实现

2008-01-30 18:10 323 查看
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:有空就给点回复吧!:)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: