MFC树右键菜单的创建及使用

1、使用ClassWizard创建树节点右键消息,实现右键消息响应函数如下:

void CTreeDlg::OnRButtonClickTree(NMHDR* pNMHDR, LRESULT* pResult)

{
    //获取屏幕坐标
    CPoint pt;
    GetCursorPos(&pt);

    //将屏幕坐标转化为客户区坐标
    UINT uFlags;
    m_Mytree.ScreenToClient(&pt);

    //获取鼠标点中位置的item
    HTREEITEM hItem = m_Mytree.HitTest(pt,&uFlags);
    if (NULL != hItem)
    {
        //设置当前节点为选中节点
        m_Mytree.SelectItem(hItem);
    }
    else
    {
        MessageBox("获取节点句柄失败!");
        return;
    }
//注:以上步骤获取右击时树的节点句柄,不能直接使用:    m_Mytree.GetSelectedItem();

    //创建菜单
    CMenu popmenu;
    popmenu.CreatePopupMenu();
    

    //添加菜单项目

    //当前头文件处定义:#define    IDM_MYTREE_MENU_1    101           //菜单ID

    popmenu.AppendMenu(MF_STRING, IDM_MYTREE_MENU_1, "&我的右键菜单");

    //显示菜单
     CPoint ptMenu;
    GetCursorPos(&ptMenu);
    popmenu.TrackPopupMenu(TPM_RIGHTBUTTON, ptMenu.x, ptMenu.y, this);
    
    *pResult = 0;
}


2、*.cpp消息关联中关联菜单消息ID及响应菜单响应函数:    ON_COMMAND(IDM_MYTREE_MENU_1, MyTreeMenu);

在*.h中定义菜单响应函数:afx_msg void MyTreeMenu();;

*.cpp中实现消息响应函数如下:

void CTreeDlg::MyTreeMenu()

{
    MessageBox("我的右键菜单测试");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值