设定图标与属性:
TreeInit(UINT nBitmapID_, int nDimension_, int nInit_, int nSeled_)
{
CBitmap cBit;
cBit.LoadBitmap(nBitmapID_);
m_cImages.Create(nDimension_, nDimension_, ILC_COLORDDB, nInit_, nGrow);
m_cImages.Add(&cBit, RGB(0, 0, 0));
CTreeCtrl::SetImageList(&m_cImages, LVSIL_NORMAL);
m_nDefImage = nInit_;
m_nSelImage = nSeled_;
// Add Extended Style
DWORD dwSytle = ::GetWindowLong(m_hWnd, GWL_STYLE);
CXFlagAdd(dwSytle, TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);
::SetWindowLong(m_hWnd, GWL_STYLE, dwSytle);
}
双击处理
ClassWizard为CTreeCtrl(树控件)添加的NM_DBLCLK(双击)消息的响应函数中带有一个NMHDR * 型指针形参:OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult)
这个陌生的指针类型常使初用树控件的编程者陷入迷茫之中。实际上我们完全不理会它,也可以实现树控件的双击响应,即在OnDblClkTree( )函数中调用树控件的成员函数CTreeCtrl::GetSelectedItem( )以获取树控件的子项句柄HTREEITEM,得到此句柄后,我们便可用下列成员函数获取子项各种有用信息:
CTreeCtrl::GetItemData( )
CTreeCtrl::GetItemHeight( )
CTreeCtrl::GetItemImage( )
CTreeCtrl::GetItemRect( )
CTreeCtrl::GetItemState( )
CTreeCtrl::GetItemText( )
单击选中处理
我们单击树形控件中前面图标等部分时,并不会自动选中当前单击的列,如果要设为选中状态,我们需要手动处理:通过SelectItem选中列,通过SetItemImage设定选中时的图标
CPoint pt;
GetCursorPos(&pt);
m_ctrlPubAddr.ScreenToClient(&pt);
UINT nFlag = 0;
HTREEITEM hItem = m_ctrlPubAddr.HitTest(pt, &nFlag);
if( NULL != hItem )
{ // Set This Item As Default Item
m_ctrlPubAddr.SelectItem(hItem);
m_ctrlPubAddr.SetItemImage(hItem, m_nDefImage, m_nSelImage)
}
树形控件设定图标以及“双击”与“单击时选中”处理
最新推荐文章于 2025-05-23 16:06:10 发布