workbar.cpp
上传用户:netltd
上传日期:2013-02-12
资源大小:7234k
文件大小:5k
源码类别:

绘图程序

开发平台:

Visual C++

  1. // mybar.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "resource.h" 
  5. #include "workbar.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. void CProjectTree::InsertProject(CString name)
  12. {
  13. HTREEITEM RootItem = InsertItem((LPCTSTR)name, ICON_PROJECT, ICON_PROJECT, TVI_ROOT, TVI_SORT);
  14. SetItemData(RootItem, TREE_PROJECT_ITEM);
  15. }
  16. HTREEITEM CProjectTree::InsertFile(CString name)
  17. {
  18. HTREEITEM RootItem;
  19. HTREEITEM fileitem; 
  20. RootItem = GetRootItem();
  21. fileitem = InsertItem((LPCTSTR)name, ICON_FILE, ICON_FILE, RootItem);
  22. SetItemData(fileitem, TREE_FILE_ITEM);
  23. Expand(RootItem, TVE_EXPAND);
  24. return fileitem;
  25. }
  26. HTREEITEM CProjectTree::InsertLayer(HTREEITEM fileitem, CString name, UINT nIocn)
  27. {
  28. HTREEITEM RootItem;
  29. HTREEITEM layerItem; 
  30. RootItem = GetRootItem();
  31. layerItem = InsertItem((LPCTSTR)name, nIocn, nIocn, fileitem);
  32. SetItemData(layerItem, TREE_LAYER_ITEM);
  33. Expand(RootItem, TVE_EXPAND);
  34. Expand(fileitem, TVE_EXPAND);
  35. return layerItem;
  36. }
  37. HTREEITEM CProjectTree::FindFileItem(CString filename)
  38. {
  39. HTREEITEM RootItem;
  40. HTREEITEM FileItem;
  41. RootItem = GetRootItem();
  42. FileItem = GetChildItem(RootItem);
  43. for(;;)
  44. {
  45. if(FileItem == NULL)
  46. break;
  47. CString name = GetItemText(FileItem);
  48. if(name == filename)
  49. return FileItem;
  50. FileItem = GetNextSiblingItem(FileItem);
  51. }
  52.     return NULL;
  53. }
  54. HTREEITEM CProjectTree::FindLayerItem(HTREEITEM fileitem, CString layername)
  55. {
  56. HTREEITEM LayerItem;
  57. LayerItem = GetChildItem(fileitem);
  58. for(;;)
  59. {
  60. if(LayerItem == NULL)
  61. break;
  62. CString name = GetItemText(LayerItem);
  63. if(name == layername)
  64. return LayerItem;
  65. LayerItem = GetNextSiblingItem(LayerItem);
  66. }
  67.     return NULL;
  68. }
  69. /////////////////////////////////////////////////////////////////////////////
  70. // CMyWorkBar
  71. CMyWorkBar::CMyWorkBar()
  72. {
  73. }
  74. CMyWorkBar::~CMyWorkBar()
  75. {
  76. }
  77. BEGIN_MESSAGE_MAP(CMyWorkBar, CSizingControlBar)
  78.     //{{AFX_MSG_MAP(CMyWorkBar)
  79.     ON_WM_CREATE()
  80.     ON_WM_SIZE()
  81.     //}}AFX_MSG_MAP
  82. END_MESSAGE_MAP()
  83. /////////////////////////////////////////////////////////////////////////////
  84. // CMyWorkBar message handlers
  85. int CMyWorkBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  86. {
  87.     if (CSizingControlBar::OnCreate(lpCreateStruct) == -1)
  88.         return -1;
  89.     if (!m_wndTab.Create(WS_CHILD | WS_VISIBLE, CRect(0,0,0,0), this, IDC_TAB))
  90.         return -1;
  91. if (!m_wndTree.Create(WS_CHILD | WS_VISIBLE | TVS_LINESATROOT | TVS_HASLINES 
  92. | TVS_HASBUTTONS | WS_BORDER | WS_TABSTOP | WS_VSCROLL, 
  93. CRect(0,0,0,0), this, IDC_TREE))
  94.         return -1;
  95. pTree = &m_wndTree;
  96. //设置3D外观
  97.     m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
  98. if (!m_wndList.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | WS_EX_CLIENTEDGE, 
  99. CRect(0,0,0,0), this, IDC_LIST))
  100.         return -1;
  101. pList = &m_wndList;
  102. //设置3D外观的另一种方法
  103. SetWindowLong(m_wndList.GetSafeHwnd(), GWL_EXSTYLE, WS_EX_CLIENTEDGE);
  104. //设置字体
  105. if (!m_font.CreateStockObject(DEFAULT_GUI_FONT))
  106.         return -1;
  107.     m_wndTab.SetFont(&m_font);
  108.     //初始化工作区
  109. m_wndTab.InsertItem(0, "项目");
  110. m_wndTab.InsertItem(1, "元件");
  111. //初始化树形框
  112. //给树形控件绑定图标
  113. CImageList  m_TreeImageList;
  114. m_TreeImageList.Create(16, 16, ILC_MASK, 2, 2);
  115. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_PROJECT));
  116. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_FILE));
  117. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_LAYER));
  118. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_CURRENTLAYER));
  119. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_LOCKLAYER));
  120. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_CURRENTLOCKLAYER));
  121. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_HIDELAYER));
  122. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_CURRENTHIDELAYER));
  123. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_LOCKHIDELAYER));
  124. m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_CURRENTLOCKHIDELAYER));
  125. m_wndTree.SetImageList(&m_TreeImageList, TVSIL_NORMAL);
  126. m_TreeImageList.Detach();
  127. m_wndTree.ShowWindow(FALSE);
  128. //初始化列表框
  129. CImageList  m_ListImageList;
  130. m_ListImageList.Create(32, 32, ILC_MASK, 2, 2);
  131. m_ListImageList.Add(AfxGetApp()->LoadIcon(IDI_FILE));
  132.     m_ListImageList.Add(AfxGetApp()->LoadIcon(IDI_FILE));
  133. m_wndList.SetImageList(&m_ListImageList, TVSIL_NORMAL);
  134. m_ListImageList.Detach();
  135. m_wndList.ShowWindow(FALSE);
  136.     return 0;
  137. }
  138. void CMyWorkBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
  139. {
  140. UpdateDialogControls(pTarget, bDisableIfNoHndler);
  141. }
  142. void CMyWorkBar::OnSize(UINT nType, int cx, int cy) 
  143. {
  144.     CSizingControlBar::OnSize(nType, cx, cy);
  145.     
  146.     CRect rc;
  147.     GetClientRect(rc);
  148.     rc.DeflateRect(4, 4);
  149.     m_wndTab.MoveWindow(rc);
  150. rc.left += 5;
  151. rc.top += 30;
  152. rc.right -= 5;
  153.     rc.bottom -= 10;
  154.     m_wndTree.MoveWindow(rc);
  155. m_wndList.MoveWindow(rc);
  156. }
  157. /////////////////////////////////////////////////////////////////////////////