赞
踩
创建弹出式菜单时,先创建一个菜单资源,然后调用LoadMenu方法加载菜单资源。
lpszResourceName指向一个空终止的字符串,该字符串包含了要装载的菜单资源名称。nIDResource指定将要装载的菜单资源的菜单ID号。
|
调用GetSubMenu方法获取弹出式菜单中的一个菜单项。
CMenu*GetSubMenu(int nPos) const;
参数:nPos:标识菜单项位置,第一个菜单项对应的位置是0,第二个菜单项对应的位置是1,依此类推。
最后调用TrackPopupMenu方法显示一个弹出式菜单。
BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd*pWnd,LPCRECT lpRect=NULL);
m_Menu.LoadMenu(IDR_MENU1); //加载菜单资源
5.打开类向导,添加消息WM_RBUTTONUP,该事件在鼠标右键抬起时触发;
6.处理鼠标右键抬起事件的处理函数,代码如下:
- void CMenuDlg::OnRButtonUp(UINT nFlags, CPoint point)
- {
- // TODO: 在此添加消息处理程序代码和/或调用默认值
- CMenu*pMenu = m_Menus.GetSubMenu(0); //获得菜单句柄
- CRect rect; //声明CRECT类对象
- ClientToScreen(&point); //将客户坐标转换为屏幕坐标
- rect.top = point.x; //将鼠标当前横坐标作为弹出菜单的左上角坐标
- rect.left = point.y; //将鼠标当前纵坐标作为弹出菜单的左上角坐标
- pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_CENTERALIGN, rect.top, rect.left, this, &rect);//显示弹出菜单
- CDialog::OnRButtonUp(nFlags, point); //调用类的方法
- }
7.打开类向导,在其中为“添加文件”菜单项处理单击事件,代码如下:
- void CMenuDlg::OnAdd()
- {
- MessageBox(_T("菜单被按下!"));
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。