MFC TreeCtrl树形控件中限定右键点击节点弹出菜单

本文介绍了如何在MFC TreeCtrl树形控件中处理右键点击事件,通过添加事件处理函数并编写相应代码,实现在特定节点上弹出上下文菜单的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建3个菜单,ID分别为IDR_MENU2,IDR_MENU3,IDR_MENU4,这些菜单必须要有子菜单项。

二、在树形控件右键-》属性-》事件-》添加右键点击处理。


三、在消息处理函数中添加代码

void CGar3Dlg::OnRclickTreePhase(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	//动态加载菜单
	CMenu menu[3];
	menu[0].LoadMenu(IDR_MENU2);
	menu[1].LoadMenu(IDR_MENU3);
	menu[2].LoadMenu(IDR_MENU4);
	CPoint pt;
	//pt = GetCurrentMessage()->pt;   //获取当前鼠标点击消息的坐标点
	GetCursorPos(&pt);
	m_maintree.ScreenToClient(&pt);   //将鼠标的屏幕坐标,转换成树形控件的客户区坐标
	UINT uFlags = 0;
	HTREEITEM hItem = m_maintree.HitTest(pt, &uFlags); //然后做点击测试
	if ((hItem != NULL) && (TVHT_ONITEM & uFlags))     //如果点击的位置是在节点位置上面
	{
		m_maintree.SelectItem(hItem);
		//根据不同类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值