莫认的TreeView是左键选择,比较不习惯。在网上找了半天也没找到右键选择的例子。只好自己写吧。
1,首先截取右键NOTIFY消息。
NOTIFY_CODE_HANDLER(NM_RCLICK, OnTreeViewRBtnClick)
2,先要获得右键所点的Item。再选中这个Item,需要的话显示一个右键菜单。
LRESULT OnTreeViewRBtnClick(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
{
DWORD pos = GetMessagePos();
POINT pnt;
pnt.x = GET_X_LPARAM(pos);
pnt.y = GET_Y_LPARAM(pos);
m_treeview.ScreenToClient(&pnt);
HTREEITEM item = m_treeview.HitTest(pnt, NULL);
if(item == NULL)
return 0;
TreeView_SelectItem(m_treeview, item);
//show a context menu
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu contextmenu = menu.GetSubMenu(0);
m_CmdBar.TrackPopupMenu(contextmenu,TPM_LEFTBUTTON|TPM_RIGHTBUTTON, GET_X_LPARAM(pos), GET_Y_LPARAM(pos));
return 0;
}