给树控件添加右键菜单

来源:互联网 发布:学而后知不足的下一句 编辑:程序博客网 时间:2024/05/22 01:54
 

步骤1:

添加MM_CONTEXTMENU消息:

添加代码如下:

void CConfigurationToolDlg::OnContextMenu(CWnd* pWnd, CPoint point)

{

         // TODO: Add your message handler code here

         CPoint cPoint;

         CMenu RightMenu;

         CRect ItemRect;

         int   nImag;

        

         GetCursorPos(&cPoint);   //获取鼠标的位置

         m_DevTree.ScreenToClient(&cPoint);    //将鼠标的屏幕坐标转换为树控件的客户坐标

        

         HTREEITEM hItem = m_DevTree.HitTest(cPoint);

         if (hItem == NULL)

         {

                   return;

         }

         m_DevTree.SelectItem(hItem);

        

         m_DevTree.GetItemImage(hItem, nImag, nImag);

         if (nImag != 0)

         {

                   return;

         }

         m_DevTree.ClientToScreen(&cPoint);

        

         RightMenu.CreatePopupMenu();

         RightMenu.AppendMenu(MF_STRING, MENU_ADDDEV, "添加不同网段的设备");

       RightMenu.TrackPopupMenu(TPM_LEFTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON, cPoint.x,cPoint.y, FromHandle(m_hWnd));

}

步骤2:

手动添加相应菜单消息:

1.      在.h文件中添加消息函数声明:

afx_msg void OnPopuMenu(UINT nID);

2.      在.cpp文件中添加消息映射

ON_COMMAND_RANGE(MENU_BASE, MENU_END, OnPopuMenu)

3.      添加函数体

void CConfigurationToolDlg::OnPopuMenu(UINT nID)

{

    switch(nID)

       {

       case MENU_ADDDEV:

              CAddDevipDlg dlg;

              dlg.DoModal();

              break;

 

       }

}

4.      忘了定义消息了

#define  MENU_BASE     WM_USER+10000

#define  MENU_ADDDEV   WM_USER+10001

#define  MENU_END      WM_USER+10002

原创粉丝点击