MFC: 右键弹出菜单-->选取菜单弹出窗口

首次写MFC界面,献丑了。

一:目标:在一个tree list上添加右键响应菜单
1. 添加菜单资源(ID: IDR_MENU_DEVICE)

菜单项的ID可以编辑,例如IDR_MENU_TREE_ADD_DEVICE

2. 添加tree list响应函数(afx_msg void OnNMRclickTreeDeviceList(NMHDR *pNMHDR, LRESULT *pResult))


3. 响应函数load菜单资源
void CXXXDlg::OnNMRclickTreeDeviceList(NMHDR *pNMHDR, LRESULT *pResult)
{
CMenu pMenu;
HTREEITEM hParent = NULL;
CPoint pt(0, 0);
GetCursorPos(&pt);

        CRect rect(0, 0, 0, 0);
        ScreenToClient(&pt);
GetDlgItem(IDC_TREE_DEVICE_LIST)->GetWindowRect(&rect);
ScreenToClient(&rect);

pt.x = pt.x - rect.left;
pt.y = pt.y - rect.top;

        if(!pMenu.LoadMenu(IDR_MENU_TREE_ALL))
{
return;
}

        GetCursorPos(&pt);
pMenu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTALIGN,pt.x ,pt.y,this); //注意:  TPM_RIGHTALIGN, 否则load不成功
*pResult = 0;
}

二:为菜单项添加弹出窗口
1. 添加窗口资源(ID: IDR_DLG_ADD_DEVICE),并添加窗口类(CDlgAddDevice)


2. 为菜单项添加命令(例如菜单项: IDR_MENU_TREE_ADD_DEVICE )
在tree list的窗口类中添加命令响应函数:void OnMenuAddFileDevice();
在tree list的窗口类中添加消息映射:ON_COMMAND(   IDR_MENU_TREE_ADD_DEVICE  , &CXXXDlg::OnMenuAddDevice)
函数实现:
void CXXXDlg::OnMenuAddDevice()
{
 CDlgAddDevice  dlg;
dlg.DoModal();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值