Windows 界面:右键菜单的实现

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:有空就给点回复吧!:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值