您的位置:首页 > 其它

树形控件设定图标以及“双击”与“单击时选中”处理

2009-03-20 10:41 435 查看
设定图标与属性:
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)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐