对话框弹出右键菜单

使用上下文菜单
 
Windows 95应用程序支持单击鼠标右键弹出上下文菜单的功能,这可通过处理
WM_CONTEXTMENU消息来实现。当在窗口内单击鼠标右键时,窗口将接收到
WM_CONTEXTMENU消息,在该消息的处理函数内装载上下文菜单,并调用
CMenu::TrackPopupMenu函数便可显示上下文菜单。CMenu::TrackPopupMenu函数的
原型如下:

BOOL TrackPopupMenu( UINT nFlags,// 显示和选取方式标志
                     int x,
       int y, // 显示菜单的左上角坐标
                     CWnd* pWnd, // 接收菜单操作的窗口对象
                     LPCRECT lpRect = NULL ); // 敏感区域

为了使用上下文菜单,首先应在资源编辑器中编制好上下文菜单,假设上下文菜单名
为IDR_MENU_CONTEXT;其次,用ClassWizard给窗口增加处理消息WM_CONTEXTMENU的
函数OnContextMenu,以及各菜单命令的处理函数;然后编写相应的代码。

下面的是OnContextMenu函数的代码实例:
void CEllipseWndDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
 CMenu menu;
 // 装入菜单
 menu.LoadMenu(IDR_MENU_CONTEXT);
 // 显示菜单
 menu.GetSubMenu(0)->TrackPopupMenu(
 TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON, 
 point.x, point.y, this);
}
 

以上代码可以实现其功能但是,菜单所弹出的位置不合适,可以用以下代码在鼠标处弹出菜单


void CMyDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
 // TODO: Add your message handler code here


 CMenu menu;
 menu.LoadMenu(IDR_MENU_POP);
 CMenu *pop = menu.GetSubMenu(0);

 POINT ptMouse;
 GetCursorPos(&ptMouse);


 pop->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,ptMouse.x,ptMouse.y,this);
 
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值