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

设定图标与属性:
    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)
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值