CTreeView右クリックポップアップメニュー


今日CTreeViewでノードを右クリックしてメニューをポップアップする操作をしたとき、戻ってきたHTREEITEMハンドルはいつも空の値で、何が原因なのか分かりません.プログラムは単一ドキュメントで、次の方法を使用します.
 
POINT point;
	UINT uFlags;

	GetCursorPos(&point);
	CTreeCtrl &pCtrl = GetTreeCtrl();

	pCtrl.ScreenToClient(&point);
	HTREEITEM hItem = pCtrl.HitTest(point, &uFlags);

右クリックで返されるhItemは常に空です.今まで原因を知らなかった.
 
 
void CMyTreeView::OnNMRClick(NMHDR *pNMHDR, LRESULT *pResult)
{
	/*
	NM_TREEVIEW* pTreeView = (NM_TREEVIEW*)pNMHDR;
	HTREEITEM hItem = pTreeView->itemNew.hItem;
	*/
	
	HTREEITEM hSel = GetTreeCtrl().GetSelectedItem();
	
	if (hSel != NULL )
	{
		HTREEITEM hChildItem = GetTreeCtrl().GetChildItem(hSel);
		if (!hChildItem)//       ,     
		{
			CString strSel   = GetTreeCtrl().GetItemText(hSel);
			strFileName     = strSel;
 			strItemPath      = strSel;
			HTREEITEM hParentItem = GetTreeCtrl().GetParentItem(hSel);
			while (hParentItem)
			{
				strItemPath  = _T("\\")+strItemPath;
				strSel     = GetTreeCtrl().GetItemText(hParentItem);
				strItemPath  = strSel+strItemPath;
				hParentItem = GetTreeCtrl().GetParentItem(hParentItem);
			}
		}
	}

	CMenu Menu,*pSubMenu;
	Menu.LoadMenu(IDR_MENU1);
	pSubMenu = Menu.GetSubMenu(0);

	CPoint Pt;
	GetCursorPos(&Pt);
	pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,Pt.x,Pt.y,this);

	*pResult = 0;
}

 
 
 
この方法では、ノードを右クリックする前に、選択したノードを左クリックし、右クリックする必要があります.右クリックメニューが表示されます.