當前位置:編程學習大全網 - 源碼下載 - VC++樹,單擊節點事件

VC++樹,單擊節點事件

很簡單:

第壹步:在向導中給妳的樹形控件關聯壹個CTreeCtrl的變量(就像妳代碼中的m_Mess)

第二步:在向導中,添加該樹形控件的NM_Click消息(就是鼠標單擊消息,以下假設函數名為OnClickTree)

第三步:在代碼中添加妳的數據(主要是在初始化樹形控件的數據的函數中,如妳代碼中的OnInitDialog()就可以)

HTREEITEM hRoot = m_ctrlTree.InsertItem("北京");

m_ctrlTree.SetItemData(hRoot, 1);

HTREEITEM hChild = m_ctrlTree.InsertItem("朝陽區", hRoot);

m_ctrlTree.SetItemData(hChild, 2);

hChild = m_ctrlTree.InsertItem("海澱區", hRoot);

m_ctrlTree.SetItemData(hChild, 3);

註意:我在上面用了SetItemData函數,主要是給不同的節點添加不同的標記

,在下面的單擊消息函數中就可以看出它的作用

第四步:在OnClickTree函數中添加鼠標單擊消息響應代碼

CPoint pt = GetCurrentMessage()->pt; //獲取當前鼠標點擊消息的坐標點

m_ctrlTree.ScreenToClient(&pt); //將鼠標的屏幕坐標,轉換成樹形控件的客戶區坐標

UINT uFlags = 0;

HTREEITEM hItem = m_ctrlTree.HitTest(pt, &uFlags);//然後做點擊測試

if ((hItem != NULL) && (TVHT_ONITEM & uFlags))//如果點擊的位置是在節點位置上面

{

m_ctrlTree.SelectItem(hItem);

//獲取開始我們設置的數據,註意這就是我為什麽開始要每個節點設置不同的數據的原因。當然,如果妳的數據節點比較少,妳也可以通過獲取節點的文字,如上面設置的"海澱區",然後通過字符串比較來判斷點擊了哪個節點

int nDat = m_ctrlTree.GetItemData(hItem);

//然後根據不同的節點,妳完成不同的動作即可

switch (nDat)

{

case 1:

AfxMessageBox("北京");

break;

case 2:

AfxMessageBox("北京->朝陽區");

break;

case 3:

AfxMessageBox("北京->海澱區");

break;

default:

AfxMessageBox("ERROR");

}

}

//要是這樣還搞不定妳的問題,我真就無語了,給分吧,老大,哈哈哈哈哈

  • 上一篇:怎麽學打麻將公式圖解
  • 下一篇:vb使用xmlhttp獲取網頁源碼怎麽用正則表達式過濾和提取標簽內的連接?
  • copyright 2024編程學習大全網