00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "TreeCtrlEx.h"
00009
00010 #ifdef _DEBUG
00011 #define new DEBUG_NEW
00012 #undef THIS_FILE
00013 static char THIS_FILE[] = __FILE__;
00014 #endif
00015
00016 CTreeCtrlEx::CTreeCtrlEx()
00017 {
00018 }
00019
00020 CTreeCtrlEx::~CTreeCtrlEx()
00021 {
00022 }
00023
00024 BEGIN_MESSAGE_MAP(CTreeCtrlEx, CTreeCtrl)
00025
00026 ON_WM_LBUTTONDOWN()
00027
00028 END_MESSAGE_MAP()
00029
00030 void CTreeCtrlEx::OnLButtonDown(UINT nFlags, CPoint point)
00031 {
00032 UINT uFlags;
00033 HTREEITEM hItem = HitTest (point, &uFlags);
00034
00035 if (hItem && uFlags == TVHT_ONITEMSTATEICON)
00036 {
00037 BOOL bChecked = IsChecked (hItem);
00038 SetCheck (hItem, !bChecked);
00039 return;
00040 }
00041
00042 CTreeCtrl::OnLButtonDown(nFlags, point);
00043 }
00044
00045 void CTreeCtrlEx::SetCheck(HTREEITEM hItem, BOOL bCheck)
00046 {
00047 SetItemState (hItem, INDEXTOSTATEIMAGEMASK ((bCheck ? 2 : 1)), TVIS_STATEIMAGEMASK);
00048 }
00049
00050 BOOL CTreeCtrlEx::IsChecked(HTREEITEM hItem)
00051 {
00052 return GetItemState (hItem, TVIS_STATEIMAGEMASK) >> 12 == 2;
00053 }