`
hcmfys
  • 浏览: 356322 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

check1

 
阅读更多

在CTreeCtrl中捕获复选框选中消息,父子节点选中状态联动

一些代码 2009-09-23 08:11:49 阅读98 评论0 字号:订阅

void CMyDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_TREEVIEW* pHdr = (NM_TREEVIEW*)pNMHDR;
*pResult = 0;

CPoint point;
UINT uFlag;
GetCursorPos(&point);
ScreenToClient(&point);

HTREEITEM item = m_ctrlTree.HitTest(point, &uFlag);
if((item) && (TVHT_ONITEMSTATEICON & uFlag))
{
BOOL bCheck = m_ctrlTree.GetCheck(item);
SetItemCheckState(item, !bCheck);}
}

/************************************************************************/
/* 根据选择的节点选中状态,设置相关节点的选中状态 */
/************************************************************************/
void CHistoryDlg::SetItemCheckState(HTREEITEM item, BOOL bCheck)
{
SetChildCheck(item, bCheck);
SetParentCheck(item, bCheck);
}

/************************************************************************/
/* 设置子节点的选中状态 */
/************************************************************************/
void CHistoryDlg::SetChildCheck(HTREEITEM item, BOOL bCheck)
{
HTREEITEM child = m_ctrlTree.GetChildItem(item);
while(child)
{
m_ctrlTree.SetCheck(child, bCheck);
SetChildCheck(child, bCheck);
child = m_ctrlTree.GetNextItem(child, TVGN_NEXT);
}
}

/************************************************************************/
/* 设置父节点选中状态 */
/************************************************************************/
void CHistoryDlg::SetParentCheck(HTREEITEM item, BOOL bCheck)
{
HTREEITEM parent = m_ctrlTree.GetParentItem(item);
if(parent == NULL)
return;

if(bCheck)
m_ctrlTree.SetCheck(parent, bCheck);
else
{
HTREEITEM bro = m_ctrlTree.GetNextItem(item, TVGN_NEXT);
BOOL bFlag = false;
while(bro)
{
if(m_ctrlTree.GetCheck(bro))
{
bFlag = true;
break;
}
bro = m_ctrlTree.GetNextItem(bro, TVGN_NEXT);
}
if(!bFlag)
{
bro = m_ctrlTree.GetNextItem(item, TVGN_PREVIOUS);
while(bro)
{
if(m_ctrlTree.GetCheck(bro))
{
bFlag = true;
break;
}
bro = m_ctrlTree.GetNextItem(bro, TVGN_PREVIOUS);
}
}
if(!bFlag)
m_ctrlTree.SetCheck(parent, false);
}

SetParentCheck(parent, GetCheck(parent));
}

分享到:
评论

相关推荐

    UFTZDB1.ZMQ_DATA_LENGTH_RULE_CHECK1.sql

    UFTZDB1.ZMQ_DATA_LENGTH_RULE_CHECK1.sql

    VS2019Check box实例

    **处理消息**: 要响应Check Box的状态改变,需要为对话框类添加成员变量(通常是`BOOL`类型)来存储Check Box的状态,然后添加`ON_BN_CLICKED`消息映射,将控件ID与成员函数连接起来,如`ON_BN_CLICKED(IDC_CHECK1, ...

    160个Crackme027之First CD-Check1

    查壳分析程序前置知识什么是光盘检测检测原理拆解光盘保护CD-Check分析作者低级的错误暴力破解CD-Check校验结果查壳程序是使用VC6写的 没有壳分析程序

    cppcheck操作手册

    cppcheck操作手册 Cppcheck是C/C++代码分析工具,可以检测bugs和不安全的编程结构,目标是检测代码中的真实错误,而不是报告虚拟警告。Cppcheck可以分析非标准语法的代码,例如嵌入式项目常用的语法。 Cppcheck的...

    Check1st: ADA Website Compliance Checker-crx插件

    Check1st:ADA网站合规性检查器 Google Chrome的Check1st开发人员插件是一个免费,易于使用的自动化测试工具,用于识别不符合Web内容可访问性准则(WCAG)2.1的基于HTML的Web内容。 Check1st ADA网站合规性检查器是...

    cppcheck在sourceinsight上使用

    ### cppcheck在SourceInsight上的使用详解 #### 一、cppcheck简介与安装 cppcheck是一种广泛应用于C/C++代码的静态分析工具,它能够帮助开发者发现潜在的编程错误、编码风格问题以及不符合最佳实践的地方。cppcheck...

    Qt Creator plugin动手实践(4)修改qtc-cppcheck源码,快捷使用cppcheck

    在本实践教程中,我们将深入探索Qt Creator插件开发,特别是如何修改qtc-cppcheck插件的源码,以便更高效地利用cppcheck静态分析工具。cppcheck是一款开源的C/C++代码检查器,能帮助开发者在编译之前发现潜在的错误...

    cppcheck规则编写文档

    1. **检查器(Checker)**:cppcheck中的检查器是负责执行特定检查的模块。你可以编写新的检查器来查找代码中的特定模式。 2. **表达式匹配(Expression Matching)**:cppcheck使用正则表达式来识别代码中的特定...

    cppcheck1.59

    cppcheck1.59,c++代码静态检测工具

    Check3000的使用方法

    ### Check3000的使用方法详解 #### 一、建立标准账套 **1. 新建账套** - **步骤一:** 打开Check3000标准版软件后,点击菜单栏中的“文件”选项,再选择“新建账套”。此时会出现一个向导界面,引导用户完成账套...

    cppcheck_win10安装包.zip

    1. **cppcheck 的功能:** - **错误检查:**cppcheck 能够检测出许多编译器无法检测到的错误,比如类型不匹配、数组越界、未初始化的变量等。 - **内存泄漏检测:**它能够帮助开发者找出可能导致内存泄漏的代码...

    kis数据修复工具check3000

    标题中的“kis数据修复工具check3000”指的是一个专门用于修复数据的软件工具,名为Check3000。在IT行业中,数据修复工具通常用于帮助恢复因硬件故障、病毒感染、意外删除或其他原因导致的数据丢失。Check3000可能...

    dependency-check-7.1.1-release

    1. 定期更新dependency-check工具到最新版本,以获取最新的安全数据和修复。 2. 配置输出报告格式,如XML、HTML,以便于查看和存档。 3. 将dependency-check集成到CI/CD流程,确保每次代码变更后都会进行安全检查。 ...

    WITH CHECK OPTION的用法

    在数据库管理领域,尤其是SQL语言的应用中,"WITH CHECK OPTION"是一个重要的概念,它主要用于视图的定义中,以限制通过视图进行的数据修改操作。本文将深入探讨WITH CHECK OPTION的用法及其背后的原理,帮助读者更...

    cppcheck操作文档

    cppcheck --xml=cppcheck.xml file1.c ``` ##### 2.7 多线程检查 cppcheck还支持多线程检查,可以显著提高检查速度,特别是在大型项目中: ``` cppcheck --enable=all --threads=4 path ``` #### 三、预处理器...

    文件检查FileCheck

    1. **核心概念** - **关键字**:在FileCheck过程中,关键字是用户自定义的一段字符串,用于查找或排除的目标。例如,如果一个文件是日志文件,我们可能希望检查其中是否存在错误代码或特定事件的描述。 - **文件...

    mysqlcheck.exe 修复mysql数据库

    1. **检查(Check)**:`-c`或`--check`选项允许你扫描数据库表,查找潜在的问题,如丢失的索引、重复键或损坏的数据块。 2. **修复(Repair)**:如果你的表出现了问题,`-r`或`--repair`选项可以帮助修复这些问题...

    cppcheck 2.10.1

    1. **语法错误检测**:cppcheck可以识别并报告语法错误,帮助开发者避免由于语法错误导致的编译失败。 2. **类型错误检测**:它可以分析变量的类型,检测可能的类型不匹配问题,如将整型值赋给浮点型变量等。 3. **...

Global site tag (gtag.js) - Google Analytics