一、创建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);
//根据不同类

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

3700

被折叠的 条评论
为什么被折叠?



