<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

  • 随笔 - 44
  • 文章 - 0
  • 评论 - 86
  • 引用 - 0

常用链接

留言簿(6)

随笔分类(31)

随笔档案(44)

Mining

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜

如何禁用Tree Control 的节点

Tree Control : how to disable an item

Tree Control 不支持节点的禁用, 但是可以通过自绘实现, 主要如下:

1. 标记节点是否禁用. 可以用 SetItemData & GetItemData 来设置&获取节点数据

2. 在禁用的节点上, 要过滤一些对节点操作, 如expanding, selecting, drag & drop 等.
TVN_SELCHANGING  节点选中改变时
TVN_ITEMEXPANDING 节点展开时
TVN_BEGINDRAG  节点开始被拖拉
TVN_BEGINLABELEDIT 节点被编辑

//Preventing selection: (handle TVN_SELCHANGING)
void CYourDialog::OnSelchangingTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
  NM_TREEVIEW
* pNMTreeView = (NM_TREEVIEW*) pNMHDR;
  
if(((CItemStruct *) m_tree.GetItemData(pNMTreeView->iNewItem))->m_bDisabled)
  {
    
*pResult = 1// 设置 *pResult=1 表示TVN_SELCHANGING 这个操作不能继续
    return;
  }
  
*pResult = 0;
}


3. 对禁用节点进行自画, 用图标,颜色将禁用节点和其他节点进行区分
a) 直接在 WM_PAINT 中进行自画 (或对Tree Control的绘图结果进行修改)
 可以参考: 如何在树型控件中使用背景位图

b) 相应 WM_OWERDRAW 事件
 可以参考: Outlook风格的单列使用不同的颜色显示新邮件数


参考:
MFC Tree Control: How to disable an item? 
Setting color and font attribute for individual items

posted on 2008-01-14 19:16 泡泡牛 阅读(1929) 评论(1)  编辑 收藏 引用 所属分类: Develop

评论

# re: 如何禁用Tree Control 的节点 2008-03-24 01:11 在职研究生

标记节点是否禁用. 可以用 SetItemData & GetItemData 来设置&获取节点数据
  回复  更多评论    

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理