checktreectrl.cpp
来自「深入浅出Visual C++入门进阶与应用实例 随书光盘 作者 何志丹」· C++ 代码 · 共 75 行
CPP
75 行
// CheckTreeCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "Ex040203.h"
#include "CheckTreeCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCheckTreeCtrl
CCheckTreeCtrl::CCheckTreeCtrl()
{
}
CCheckTreeCtrl::~CCheckTreeCtrl()
{
}
BEGIN_MESSAGE_MAP(CCheckTreeCtrl, CTreeCtrl)
//{{AFX_MSG_MAP(CCheckTreeCtrl)
ON_WM_KEYDOWN()
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCheckTreeCtrl message handlers
void CCheckTreeCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CTreeCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
//处理空格键
if(nChar== ' ')
{
HTREEITEM hItem = GetSelectedItem();
TravelChild(hItem);
}
}
void CCheckTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
CTreeCtrl::OnLButtonDown(nFlags, point);
HTREEITEM hItem = HitTest(point, NULL);
TravelChild(hItem);
}
void CCheckTreeCtrl::TravelChild(HTREEITEM hItem)
{
if(NULL == hItem)
return ;
bool bCheck = GetCheck(hItem);
//查找子节点,没有就结束
HTREEITEM hChildItem= GetChildItem(hItem);
while(NULL != hChildItem)
{
//设置或取消钩取状态
SetCheck(hChildItem,bCheck) ;
//处理子节点
TravelChild(hChildItem);
//下一个兄弟节点
hChildItem = GetNextSiblingItem(hChildItem);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?