◉ 主控端界面添加右键弹出菜单的功能
为Onlie_List区域添加右键弹出菜单项的功能:
3个视图:类视图、解决方案视图、资源视图
在资源视图下添加一个Menu:
更改Menu的ID为IDR_MENU_ONLINE:
为各控件添加便于区分的ID:
在类视图下,点击CPCRemoteDlg类,选择事件,为IDC_ONLINE添加消息处理函数
补充知识点:
事件:我们自定义的控件产生的消息
消息:系统定义的消息
重写:重载虚函数
先写一个在响应右键消息处弹出个信息框测试一下:
发现可以正常弹出
然后进行正式的代码测试,也就是在Online_list的区域右键要弹出菜单框:
void CPCRemoteDlg::OnNMRClickOnline(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
//加载弹出式菜单
CMenu popup;
popup.LoadMenuA(IDR_MENU_ONLINE);
CMenu* pM = popup.GetSubMenu(0);
CPoint point;
GetCursorPos(&point);
int cnt = pM->GetMenuItemCount();
//如果选中的记录数目为 0 ,即没有任何一条记录被选中
//本次设置菜单的显示模式为:↓
if (m_CList_Online.GetSelectedCount() == 0) {
for (int i = 0; i < cnt; i++) {
//将所有菜单设置为灰色显示(未激活的状态)
pM->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
}
}
//显示弹出式菜单
pM->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
*pResult = 0;
}
出现未定义标识符的BUG
在resource.h文件当中先把下面2行删除,再添加上就OK了
最终运行结果截图: