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

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

为Onlie_List区域添加右键弹出菜单项的功能:

3个视图:类视图、解决方案视图、资源视图

在资源视图下添加一个Menu:

gh0st远程控制——客户端界面编写(三)_第1张图片

gh0st远程控制——客户端界面编写(三)_第2张图片

更改Menu的ID为IDR_MENU_ONLINE:

gh0st远程控制——客户端界面编写(三)_第3张图片

gh0st远程控制——客户端界面编写(三)_第4张图片

为各控件添加便于区分的ID:

gh0st远程控制——客户端界面编写(三)_第5张图片

在类视图下,点击CPCRemoteDlg类,选择事件,为IDC_ONLINE添加消息处理函数 

gh0st远程控制——客户端界面编写(三)_第6张图片

gh0st远程控制——客户端界面编写(三)_第7张图片

补充知识点:

事件:我们自定义的控件产生的消息

消息:系统定义的消息

重写:重载虚函数 

先写一个在响应右键消息处弹出个信息框测试一下:

gh0st远程控制——客户端界面编写(三)_第8张图片

发现可以正常弹出

gh0st远程控制——客户端界面编写(三)_第9张图片

然后进行正式的代码测试,也就是在Online_list的区域右键要弹出菜单框:

void CPCRemoteDlg::OnNMRClickOnline(NMHDR* pNMHDR, LRESULT* pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(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 

gh0st远程控制——客户端界面编写(三)_第10张图片

在resource.h文件当中先把下面2行删除,再添加上就OK了

gh0st远程控制——客户端界面编写(三)_第11张图片

最终运行结果截图:

gh0st远程控制——客户端界面编写(三)_第12张图片

你可能感兴趣的:(windows,c++,c语言,网络安全)