您的位置:首页 > 其它

MFC 中CMenu菜单的的使用

2015-10-26 18:15 169 查看
这里以生活中鼠标右键点击出来属性的菜单为例子。

第一:在工程中使用菜单控件来生成右键显示的项

第二:直接用API函数来生成右键显示的项

第一种方法比较简单,其属性可以在工程中选择。

首先创建鼠标右键的消息响应函数

然后在消息响应函数中添加如下代码

GetCursorPos(&point); //获取鼠标的当前位置

CMenu menu;//声明菜单对象

VERIFY(menu.LoadMenu(IDR_TEST_));//判断加载菜单资源是否成功

CMenu* pPopup = menu.GetSubMenu(0); //获得第一个弹出菜单的指针,也就是菜单中的第一个弹出菜单

ASSERT(pPopup != NULL); //p断言不为空

CWnd* pWndPopupOwner = this;//当前类的指针

//下面遍历主要是为找到第一个不含有WS_CHILD的窗口指针

while (pWndPopupOwner->GetStyle() & WS_CHILD)

pWndPopupOwner = pWndPopupOwner->GetParent();

//下面就是弹出菜单

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner);

第2种

GetCursorPos(&point);

CMenu menu1;

menu1.CreatePopupMenu(); //动态创建弹出式菜单对象

menu1.AppendMenu(MF_STRING,IDR_TEST_,L" 菜单项");

menu1.InsertMenu(1,MF_BYPOSITION|MF_POPUP|MF_STRING,(UINT)IDR_TEST_,L"子菜单"); //添加子菜单

menu1.TrackPopupMenu(TPM_RIGHTBUTTON, point.x, point.y, this);

menu1.DestroyMenu();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: