TreeCtrlDlg.cpp 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. // TreeCtrlDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "TreeCtrlDlg.h"
  5. #include "Resource.h"
  6. // CTreeCtrlDlg 对话框
  7. IMPLEMENT_DYNAMIC(CTreeCtrlDlg, CDlgControlItem)
  8. CTreeCtrlDlg::CTreeCtrlDlg(CWnd* pParent /*=NULL*/)
  9. : CDlgControlItem(IDD_TREE, pParent)
  10. {
  11. }
  12. CTreeCtrlDlg::~CTreeCtrlDlg()
  13. {
  14. }
  15. void CTreeCtrlDlg::DoDataExchange(CDataExchange* pDX)
  16. {
  17. CDlgControlItem::DoDataExchange(pDX);
  18. DDX_Control(pDX,IDC_TREE1,m_TreeCtrl);
  19. DDX_Control(pDX,IDC_TREE2,m_TreeCtrl1);
  20. }
  21. BEGIN_MESSAGE_MAP(CTreeCtrlDlg, CDlgControlItem)
  22. ON_BN_CLICKED(IDC_BUTTON1, &CTreeCtrlDlg::OnBnClickedButton1)
  23. ON_BN_CLICKED(IDC_BUTTON14, &CTreeCtrlDlg::OnBnClickedButton14)
  24. ON_BN_CLICKED(IDC_BUTTON2, &CTreeCtrlDlg::OnBnClickedButton2)
  25. ON_BN_CLICKED(IDC_BUTTON3, &CTreeCtrlDlg::OnBnClickedButton3)
  26. ON_BN_CLICKED(IDC_BUTTON4, &CTreeCtrlDlg::OnBnClickedButton4)
  27. ON_BN_CLICKED(IDC_BUTTON5, &CTreeCtrlDlg::OnBnClickedButton5)
  28. ON_BN_CLICKED(IDC_BUTTON10, &CTreeCtrlDlg::OnBnClickedButton10)
  29. ON_BN_CLICKED(IDC_BUTTON11, &CTreeCtrlDlg::OnBnClickedButton11)
  30. ON_BN_CLICKED(IDC_BUTTON21, &CTreeCtrlDlg::OnBnClickedButton21)
  31. ON_BN_CLICKED(IDC_BUTTON22, &CTreeCtrlDlg::OnBnClickedButton22)
  32. ON_BN_CLICKED(IDC_BUTTON7, &CTreeCtrlDlg::OnBnClickedButton7)
  33. ON_BN_CLICKED(IDC_BUTTON13, &CTreeCtrlDlg::OnBnClickedButton13)
  34. END_MESSAGE_MAP()
  35. // CTreeCtrlDlg 消息处理程序
  36. BOOL CTreeCtrlDlg::OnInitDialog()
  37. {
  38. CDlgControlItem::OnInitDialog();
  39. //设置属性
  40. m_TreeCtrl.SetItemHeight(26);
  41. //加载图标
  42. if (m_StatusImage.GetSafeHandle()==NULL)
  43. {
  44. CBitmap Image;
  45. BITMAP ImageInfo;
  46. Image.LoadBitmap(IDB_SERVER_LIST_IMAGE);
  47. Image.GetBitmap(&ImageInfo);
  48. m_StatusImage.Create(18,ImageInfo.bmHeight,ILC_COLOR16|ILC_MASK,0,0);
  49. m_StatusImage.Add(&Image,RGB(255,0,255));
  50. m_TreeCtrl.SetImageList(&m_StatusImage,TVSIL_NORMAL);
  51. }
  52. //父节点
  53. HTREEITEM Root=m_TreeCtrl.InsertItem(TEXT("gym游戏中心"),0,0,TVI_ROOT,TVI_LAST);
  54. //斗地主游戏
  55. HTREEITEM GameItem1=m_TreeCtrl.InsertItem(TEXT("斗地主"),7,6,Root,TVI_LAST);
  56. HTREEITEM Room_Item1_1=m_TreeCtrl.InsertItem(TEXT("网通站点"),8,6,GameItem1,TVI_LAST);
  57. HTREEITEM Room_Item1_1_1=m_TreeCtrl.InsertItem(TEXT("初级房"),9,6,Room_Item1_1,TVI_LAST);
  58. HTREEITEM Room_Item1_1_2=m_TreeCtrl.InsertItem(TEXT("高级房"),9,6,Room_Item1_1,TVI_LAST);
  59. HTREEITEM Room_Item1_1_3=m_TreeCtrl.InsertItem(TEXT("VIP房"),9,6,Room_Item1_1,TVI_LAST);
  60. HTREEITEM Room_Item1_2=m_TreeCtrl.InsertItem(TEXT("电信站点"),8,6,GameItem1,TVI_LAST);
  61. HTREEITEM Room_Item1_2_1=m_TreeCtrl.InsertItem(TEXT("没有合适的房间"),9,6,Room_Item1_2,TVI_LAST);
  62. HTREEITEM Room_Item1_3=m_TreeCtrl.InsertItem(TEXT("其他站点"),8,6,GameItem1,TVI_LAST);
  63. HTREEITEM Room_Item1_3_1=m_TreeCtrl.InsertItem(TEXT("没有合适的房间"),9,6,Room_Item1_3,TVI_LAST);
  64. //虎虎生威游戏
  65. HTREEITEM GameItem2=m_TreeCtrl.InsertItem(TEXT("虎虎生威"),7,6,Root,TVI_LAST);
  66. HTREEITEM Room_Item2_1=m_TreeCtrl.InsertItem(TEXT("没有合适的站点"),8,6,GameItem2,TVI_LAST);
  67. //百人牌九游戏
  68. HTREEITEM GameItem3=m_TreeCtrl.InsertItem(TEXT("百人牌九"),7,6,Root,TVI_LAST);
  69. HTREEITEM Room_Item3_1=m_TreeCtrl.InsertItem(TEXT("没有合适的站点"),8,6,GameItem3,TVI_LAST);
  70. //展开所有节点
  71. ExpandAllItem(&m_TreeCtrl,m_TreeCtrl.GetRootItem());
  72. //m_TreeCtrl.SetButtonImage(TEXT("Res\\TreeCtrl\\Button.png"));
  73. //////////////////////////////////////////////////////////////////////////
  74. //重绘控件
  75. InitTree();
  76. return TRUE; // return TRUE unless you set the focus to a control
  77. // 异常: OCX 属性页应返回 FALSE
  78. }
  79. int CTreeCtrlDlg::SetItemHeight(HTREEITEM hItem)
  80. {
  81. int nOldHeight = m_TreeCtrl.GetItemHeight();
  82. TVITEMEX itemEx;
  83. itemEx.mask = TVIF_INTEGRAL;
  84. itemEx.hItem = hItem;
  85. itemEx.iIntegral = 2;
  86. BOOL bRet = (BOOL)m_TreeCtrl.SendMessage(TVM_SETITEM, 0, LPARAM(&itemEx));
  87. return bRet ? 0 : -1;
  88. }
  89. void CTreeCtrlDlg::ExpandAllItem(CTreeCtrl *pTreeCtrl,HTREEITEM hTreeItem,bool bExpand /*= true*/)
  90. {
  91. if( pTreeCtrl == NULL && pTreeCtrl->GetSafeHwnd() == NULL ) return;
  92. if(!pTreeCtrl->ItemHasChildren(hTreeItem)) return;
  93. HTREEITEM hNextItem = pTreeCtrl->GetChildItem(hTreeItem);
  94. while (hNextItem != NULL)
  95. {
  96. ExpandAllItem(pTreeCtrl,hNextItem);
  97. hNextItem = pTreeCtrl->GetNextItem(hNextItem, TVGN_NEXT);
  98. }
  99. pTreeCtrl->Expand(hTreeItem,bExpand?TVE_EXPAND:TVE_COLLAPSE);
  100. }
  101. void CTreeCtrlDlg::OnBnClickedButton1()
  102. {
  103. ExpandAllItem(&m_TreeCtrl,m_TreeCtrl.GetRootItem(),true);
  104. }
  105. void CTreeCtrlDlg::OnBnClickedButton14()
  106. {
  107. ExpandAllItem(&m_TreeCtrl,m_TreeCtrl.GetRootItem(),false);
  108. }
  109. void CTreeCtrlDlg::OnBnClickedButton2()
  110. {
  111. HTREEITEM hSelectItem = m_TreeCtrl.GetSelectedItem();
  112. m_TreeCtrl.DeleteItem(hSelectItem);
  113. }
  114. void CTreeCtrlDlg::OnBnClickedButton3()
  115. {
  116. m_TreeCtrl.DeleteAllItems();
  117. }
  118. void CTreeCtrlDlg::OnBnClickedButton4()
  119. {
  120. CString str;
  121. str.Format(TEXT("节点的总数量为:%d"),m_TreeCtrl.GetCount());
  122. AfxMessageBox(str);
  123. }
  124. void CTreeCtrlDlg::OnBnClickedButton5()
  125. {
  126. m_TreeCtrl.SetBkColor(RGB(255,0,0));
  127. }
  128. void CTreeCtrlDlg::OnBnClickedButton10()
  129. {
  130. m_TreeCtrl.SetTextColor(RGB(0,0,255));
  131. }
  132. void CTreeCtrlDlg::OnBnClickedButton11()
  133. {
  134. if ( m_TreeCtrl.GetParentItem(m_TreeCtrl.GetSelectedItem()) )
  135. AfxMessageBox(TEXT("有父节点"));
  136. else AfxMessageBox(TEXT("无父节点"));
  137. }
  138. void CTreeCtrlDlg::OnBnClickedButton21()
  139. {
  140. if ( m_TreeCtrl.ItemHasChildren(m_TreeCtrl.GetSelectedItem()) )
  141. AfxMessageBox(TEXT("有子节点"));
  142. else AfxMessageBox(TEXT("无子节点"));
  143. }
  144. void CTreeCtrlDlg::OnBnClickedButton22()
  145. {
  146. AfxMessageBox(m_TreeCtrl.GetItemText(m_TreeCtrl.GetSelectedItem()));
  147. }
  148. void CTreeCtrlDlg::OnBnClickedButton7()
  149. {
  150. if ( m_TreeCtrl.GetCheck(m_TreeCtrl.GetSelectedItem()) )
  151. AfxMessageBox(TEXT("被Check"));
  152. else AfxMessageBox(TEXT("无Check"));
  153. }
  154. void CTreeCtrlDlg::OnBnClickedButton13()
  155. {
  156. DWORD dwAddStyle = m_TreeCtrl.GetStyle();
  157. DWORD dwRemoveStyle = 0;
  158. SetStyle(IDC_CHECK2,TVS_CHECKBOXES,dwAddStyle, dwRemoveStyle);
  159. SetStyle(IDC_CHECK4,TVS_HASBUTTONS,dwAddStyle, dwRemoveStyle);
  160. SetStyle(IDC_CHECK5,TVS_HASLINES,dwAddStyle, dwRemoveStyle);
  161. SetStyle(IDC_CHECK8,TVS_DISABLEDRAGDROP,dwAddStyle, dwRemoveStyle);
  162. SetStyle(IDC_CHECK7,TVS_EDITLABELS,dwAddStyle, dwRemoveStyle);
  163. SetStyle(IDC_CHECK6,TVS_LINESATROOT,dwAddStyle, dwRemoveStyle);
  164. SetStyle(IDC_CHECK9,TVS_SHOWSELALWAYS,dwAddStyle, dwRemoveStyle);
  165. SetStyle(IDC_CHECK10,TVS_TRACKSELECT,dwAddStyle, dwRemoveStyle);
  166. SetStyle(IDC_CHECK11,TVS_FULLROWSELECT,dwAddStyle, dwRemoveStyle);
  167. m_TreeCtrl.ModifyStyle(0,dwAddStyle);
  168. m_TreeCtrl.ModifyStyle(dwRemoveStyle,0);
  169. if ( dwRemoveStyle & TVS_CHECKBOXES)
  170. RemoveCheck(m_TreeCtrl.GetRootItem());
  171. }
  172. void CTreeCtrlDlg::SetStyle( UINT ID,DWORD dwStyle,DWORD &dwAddStyle, DWORD &dwRemoveStyle )
  173. {
  174. if ( IsDlgButtonChecked(ID))
  175. dwAddStyle |= dwStyle;
  176. else if( dwAddStyle & dwStyle)
  177. dwRemoveStyle |= dwStyle;
  178. }
  179. void CTreeCtrlDlg::RemoveCheck( HTREEITEM hTreeItem )
  180. {
  181. m_TreeCtrl.SetItemState(hTreeItem ,INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
  182. HTREEITEM hNextItem = m_TreeCtrl.GetChildItem(hTreeItem);
  183. while (hNextItem != NULL)
  184. {
  185. m_TreeCtrl.SetItemState(hNextItem ,INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
  186. RemoveCheck(hNextItem);
  187. hNextItem = m_TreeCtrl.GetNextItem(hNextItem, TVGN_NEXT);
  188. }
  189. }
  190. void CTreeCtrlDlg::InitTree()
  191. {
  192. m_TreeCtrl1.SetItemHeight(26);
  193. m_TreeCtrl1.SetImageList(&m_StatusImage,TVSIL_NORMAL);
  194. HTREEITEM Root1=m_TreeCtrl1.InsertItem(TEXT("我的下载"),0,0,TVI_ROOT,TVI_LAST);
  195. HTREEITEM GameItem1=m_TreeCtrl1.InsertItem(TEXT("全部任务"),7,6,Root1,TVI_LAST);
  196. HTREEITEM GameItem2=m_TreeCtrl1.InsertItem(TEXT("正在下载"),7,6,Root1,TVI_LAST);
  197. HTREEITEM GameItem3=m_TreeCtrl1.InsertItem(TEXT("已完成"),7,6,Root1,TVI_LAST);
  198. HTREEITEM Room_Item3_1=m_TreeCtrl1.InsertItem(TEXT("影视"),8,6,GameItem3,TVI_LAST);
  199. HTREEITEM Room_Item3_2=m_TreeCtrl1.InsertItem(TEXT("音乐"),8,6,GameItem3,TVI_LAST);
  200. HTREEITEM Room_Item3_3=m_TreeCtrl1.InsertItem(TEXT("软件"),8,6,GameItem3,TVI_LAST);
  201. HTREEITEM Room_Item3_4=m_TreeCtrl1.InsertItem(TEXT("游戏"),8,6,GameItem3,TVI_LAST);
  202. HTREEITEM GameItem4=m_TreeCtrl1.InsertItem(TEXT("私人空间"),7,6,Root1,TVI_LAST);
  203. HTREEITEM GameItem5=m_TreeCtrl1.InsertItem(TEXT("垃圾箱"),7,6,Root1,TVI_LAST);
  204. HTREEITEM GameItem6=m_TreeCtrl1.InsertItem(TEXT("iPad视频"),7,6,Root1,TVI_LAST);
  205. HTREEITEM Root2=m_TreeCtrl1.InsertItem(TEXT("远程服务"),0,0,TVI_ROOT,TVI_LAST);
  206. HTREEITEM ServerItem1=m_TreeCtrl1.InsertItem(TEXT("离线下载"),7,6,Root2,TVI_LAST);
  207. HTREEITEM ServerItem2=m_TreeCtrl1.InsertItem(TEXT("高清片库"),7,6,Root2,TVI_LAST);
  208. HTREEITEM Root3=m_TreeCtrl1.InsertItem(TEXT("移动设备"),0,0,TVI_ROOT,TVI_LAST);
  209. HTREEITEM DeviceItem1=m_TreeCtrl1.InsertItem(TEXT("连接向导"),7,6,Root3,TVI_LAST);
  210. HTREEITEM DeviceItem2=m_TreeCtrl1.InsertItem(TEXT("我的iPad"),7,6,Root3,TVI_LAST);
  211. ExpandAllItem(&m_TreeCtrl1,Root1);
  212. ExpandAllItem(&m_TreeCtrl1,Root2);
  213. ExpandAllItem(&m_TreeCtrl1,Root3);
  214. //+-按钮
  215. m_TreeCtrl1.SetButtonImage(TEXT("Res\\TreeCtrl\\Button.png"));
  216. m_TreeCtrl1.SetHovenImage(TEXT("Res\\TreeCtrl\\LIST_ITEM_SELECT.png"),CRect(2,2,2,2));
  217. m_TreeCtrl1.SetPressImage(TEXT("Res\\TreeCtrl\\LIST_ITEM_DOWN.png"),CRect(2,2,2,2));
  218. m_TreeCtrl1.SetScrollImage(&m_TreeCtrl1,TEXT("Res\\Scroll\\SKIN_SCROLL.bmp"));
  219. m_TreeCtrl1.m_colNormalText = RGB(1,55,102);
  220. //插入图标
  221. m_TreeCtrl1.InsertImage(DeviceItem2,TEXT("Res\\TreeCtrl\\offdown_lefttab.png"));
  222. m_TreeCtrl1.InsertImage(ServerItem1,TEXT("Res\\TreeCtrl\\offdown_lefttab.png"));
  223. m_TreeCtrl1.InsertImage(GameItem6,TEXT("Res\\TreeCtrl\\offdown_lefttab.png"));
  224. }