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

来源:互联网 发布:net域名是什么意思 编辑:程序博客网 时间:2024/06/06 06:40

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("我的右键菜单测试");
}
原创粉丝点击