树形控件设定图标以及“双击”与“单击时选中”处理
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)
}
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)
}
相关文章推荐
- ios中控件同时响应单击和双击事件以及多击事件
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理;属性类型设定
- 树形控件中双击的处理
- 关于android 控件的单击双击以及长按的问题
- 发现 TSplitter 在嵌套时不好用, 索性写了个替代品(处理MouseDown,MouseMove,MouseUp,然后设定控件的Left值就可以了)
- 苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议经验案例
- 在Winform的DataGridView的单元格中同时显示文本和图标,以及树形结构的示例
- C#动态生成控件以及添加事件处理
- 关于VS2010 转到函数定义无响应 以及MFC项目双击控件无法跳转到响应函数解决方法
- 无尽的控件-GridView行单击与双击
- 苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议经验案例
- 【按键】[独立按键] - 1: 单击,双击,三击以及N击
- [置顶] MFC树形控件CTreeCtrl使用方法、遍历、SetCheck无效、根据名称获取节点、获取选中节点等问题
- cocos2dx实现精灵单击、双击、三击级拖拽分别处理
- [AHK]为AutoHotkey的托盘图标增加左键单击、双击事件动作
- 第三方控件radupload 使用方式以及报错处理
- ListView的OnItemClick无法响应以及子Item控件的事件处理。
- 让你的GridView、DataList 的数据行同时具有单击或双击选中的功能
- C++ Builder 实现动态生成窗口、控件,以及处理控件事件(转载)
- ios开发-单击和双击手势的区分处理