第壹步:在向導中將妳的樹控件與CTreeCtrl的壹個變量關聯起來(就像妳代碼中的m_Mess)。
第二步:在向導中添加樹控件的NM_Click消息(即鼠標點擊消息,下面假設的函數命名為OnClickTree)。
第三步:將妳的數據添加到代碼中(主要是在初始化樹控件數據的函數中,比如妳代碼中的OnInitDialog())。
Htree item hroot = m _ ctrl tree。insertitem("北京");
m_ctrlTree。SetItemData(hRoot,1);
Htree item hchild = m _ ctrl樹。insertitem("朝陽區",hRoot);
m_ctrlTree。SetItemData(hChild,2);
HChild = m_ctrlTree。InsertItem("海澱區",hRoot);
m_ctrlTree。SetItemData(hChild,3);
註意:我用了上面的SetItemData函數,主要是給不同的節點添加不同的標簽。
,妳可以在下面的點擊消息函數中看到它的作用。
步驟4:將鼠標點擊消息響應代碼添加到OnClickTree函數中。
c point pt = GetCurrentMessage()-& gt;pt;//獲取當前鼠標點擊消息的坐標點。
m_ctrlTree。screento client(& amp;pt);//將鼠標的屏幕坐標轉換為樹控件的工作區坐標。
UINT u flags = 0;
HTREEITEM hItem = m_ctrlTree。HitTest(pt & amp;u flags);//然後做壹個點擊測試。
如果((hItem!= NULL)& amp;& amp(TVHT _ ONITEM & ampulags))//如果點擊的位置在節點位置之上,
{
m_ctrlTree。SelectItem(hItem);
//獲取我們壹開始設置的數據。請註意,這就是我開始為每個節點設置不同數據的原因。當然,如果妳的數據節點較少,也可以獲取節點的文本,比如上面設置的“海澱區”,然後通過比較字符串來判斷妳點擊了哪個節點。
int nDat = m_ctrlTree。GetItemData(hItem);
//然後就可以根據不同的節點完成不同的動作。
開關(nDat)
{
案例1:
AfxMessageBox(“北京”);
打破;
案例二:
AfxMessageBox("北京-& gt;朝陽區”);
打破;
案例三:
AfxMessageBox("北京-& gt;海澱區”);
打破;
默認值:
AfxMessageBox(" ERROR ");
}
}
//如果這樣還不能解決妳的問題,我真的很無語了。給妳,老板,哈哈哈哈哈哈。