1、使用Tree控件時,採用了CheckBox風格,但是如何響應複選框的點擊操作呢?具體實現如下:
(1)可以通過響應NM_CLICK消息來達到上述效果,並在其響應函數中做點擊測試,以確定點擊的複選框;
(2)首先添加該消息的響應函數,並添加代碼如下:
void CkaProjectCleanDlg::OnNMClickTree(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知處理程序代碼
CPoint pt = GetCurrentMessage()->pt; //獲取當前鼠標點擊消息的座標點
m_ctlTree.ScreenToClient(&pt); //將鼠標的屏幕座標,轉換成樹形控件的客戶區座標
UINT uFlags = 0;
HTREEITEM hItem = m_ctlTree.HitTest(pt, &uFlags);//然後做點擊測試
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))//如果點擊的位置是在節點位置上面
{
m_ctlTree.SelectItem(hItem);
}
*pResult = 0;
}
(3)OK現在,進行單擊操作的複選框已經被選中了,它的item值就是hItem;(4)另注:m_ctlTree是一個屬性控件的綁定變量;