MFC树型控件浏览文件目录(三)--添加

右键菜单
今天把树型控件这个小小的工程写完吧,最后一部就是加上右键弹出菜单,效果图如图3-1,就是在树的节点上单击右键时,会弹出菜单,下面让我们来编码实现。
// TODO: 在此添加控件通知处理程序代码
//临时鼠标的屏幕坐标,用来弹出menu
CPoint ScreenPt;
GetCursorPos(&ScreenPt);
//获取到当前鼠标选择的树节点
m_CurTree = GetSelectTree();
if (m_CurTree != NULL)
{
m_MyTree.SelectItem(m_CurTree); //使右键单击的树节点被选中
CMenu menu;
menu.LoadMenuW(IDR_MENU_MYTREE);
CMenu* pPopup = menu.GetSubMenu(0);//装载第一个子菜单,即我们菜单的第一列
pPopup->TrackPopupMenu(TPM_LEFTALIGN, ScreenPt.x, ScreenPt.y, this);//弹出菜单
}
*pResult = 0;
图3-1 右键菜单效果图
1、第一步,既然要弹出菜单,那我们首先要建立一个菜单:在工程的资源视图里,右键单击“MyTree.rc”->"添加资源",然后选择“Menu”,点击新建。如图3-2所示。新建的菜单默认ID为IDR_MENU1,当然你可以选中菜单后在其属性中修改这个ID,在这里,我们把ID个性为IDR_MENU_MYTREE,如图3-3所示。
图3-2 新建菜单资源
图3-3 修改菜单ID
菜单建立好了之后,我们就简单添加几个菜单项,这里添加的如图3-4所示:
图3-4 添加菜单项
2、点击右键弹出菜单。有了菜单后,我们要为树型控件添加一个右键响应函数,这里就不介绍了,大概如图3-5所示。
图3-5 为树型控件添加右键响应函数
右键响应函数代码如下。很简单,这里就不多介绍了,GetSelectTree();函数在前面的第2节中已经介绍过了,这里不再赘述。
void CMyTreeDlg::OnNMRClickMytree(NMHDR *pNMHDR, LRESULT *pResult)
{
}