gh0st远程控制——客户端界面编写(三)

本文讲述了如何在CPCRemoteDlg中为Onlie_List区域添加右键弹出菜单,包括自定义事件处理、消息传递、菜单加载与显示,以及解决资源文件中未定义标识符的问题,最后展示了最终运行结果的截图。
摘要由CSDN通过智能技术生成

◉ 主控端界面添加右键弹出菜单的功能

为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了

最终运行结果截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值