HeroesView.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:6k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // HeroesView.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "advanced.h"
  22. #include "HeroesView.h"
  23. #ifdef _DEBUG
  24. #define new DEBUG_NEW
  25. #undef THIS_FILE
  26. static char THIS_FILE[] = __FILE__;
  27. #endif
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CHeroesView
  30. IMPLEMENT_DYNCREATE(CHeroesView, CWnd)
  31. CHeroesView::CHeroesView()
  32. {
  33. m_nFilter = 0;
  34. }
  35. CHeroesView::~CHeroesView()
  36. {
  37. }
  38. BEGIN_MESSAGE_MAP(CHeroesView, CWnd)
  39. //{{AFX_MSG_MAP(CHeroesView)
  40. ON_WM_SIZE()
  41. ON_WM_ERASEBKGND()
  42. ON_WM_SETFOCUS()
  43. //}}AFX_MSG_MAP
  44. ON_COMMAND_RANGE(ID_BUTTON_BLUE, ID_FAMILY_HAWKS, OnFilterColor)
  45. ON_UPDATE_COMMAND_UI_RANGE(ID_BUTTON_BLUE, ID_FAMILY_HAWKS, OnUpdateFilterColor)
  46. END_MESSAGE_MAP()
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CHeroesView drawing
  49. void CHeroesView::OnDraw(CDC* /*pDC*/)
  50. {
  51. }
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CHeroesView diagnostics
  54. #ifdef _DEBUG
  55. void CHeroesView::AssertValid() const
  56. {
  57. CWnd::AssertValid();
  58. }
  59. void CHeroesView::Dump(CDumpContext& dc) const
  60. {
  61. CWnd::Dump(dc);
  62. }
  63. #endif //_DEBUG
  64. /////////////////////////////////////////////////////////////////////////////
  65. // CHeroesView message handlers
  66. void CHeroesView::OnInitialUpdate()
  67. {
  68. VERIFY(InitCommandBars());
  69. CXTPCommandBars* pCommandBars = GetCommandBars();
  70. CXTPToolBar* pToolBar = pCommandBars->Add(_T("Heroes Bar"), xtpBarTop);
  71. VERIFY(pToolBar->LoadToolBar(IDR_TOOLBAR_HEROES));
  72. pToolBar->GetControls()->Remove(pToolBar->GetControl(0));
  73. CXTPControl* pControl = pToolBar->GetControls()->Add(xtpControlButtonPopup, IDR_HEROES_FAMILY, _T(""), 0);
  74. pControl->SetFlags(xtpFlagManualUpdate);
  75. pControl->SetStyle(xtpButtonIconAndCaption);
  76. pToolBar->EnableDocking(xtpFlagAlignTop);
  77. pCommandBars->GetCommandBarsOptions()->ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);
  78. pCommandBars->GetCommandBarsOptions()->bShowExpandButtonAlways = FALSE;
  79. CRect rc;
  80. GetClientRect(&rc);
  81. if (!m_listCtrl.CWnd::CreateEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, NULL,
  82. WS_CHILD|WS_VISIBLE|LVS_AUTOARRANGE,
  83. rc, this, AFX_IDW_PANE_FIRST))
  84. {
  85. TRACE0("Failed to create tree control.n");
  86. return;
  87. }
  88. if (!m_imageList.Create (32, 32, ILC_COLOR24 | ILC_MASK, 1, 20))
  89. {
  90. TRACE0 ("Failed to create image list.n");
  91. return;
  92. }
  93. CWinApp* pWinApp = AfxGetApp();
  94. ASSERT_VALID(pWinApp);
  95. m_imageList.Add (pWinApp->LoadIcon (IDI_AQUAMAN));
  96. m_imageList.Add (pWinApp->LoadIcon (IDI_ATOM));
  97. m_imageList.Add (pWinApp->LoadIcon (IDI_BATMAN));
  98. m_imageList.Add (pWinApp->LoadIcon (IDI_FIRESTORM));
  99. m_imageList.Add (pWinApp->LoadIcon (IDI_FLASH));
  100. m_imageList.Add (pWinApp->LoadIcon (IDI_GREENARROW));
  101. m_imageList.Add (pWinApp->LoadIcon (IDI_GREENLANTERN));
  102. m_imageList.Add (pWinApp->LoadIcon (IDI_HAWKMAN));
  103. m_imageList.Add (pWinApp->LoadIcon (IDI_HAWKWOMAN));
  104. m_imageList.Add (pWinApp->LoadIcon (IDI_REDTORNADO));
  105. m_imageList.Add (pWinApp->LoadIcon (IDI_SUPERMAN));
  106. m_imageList.Add (pWinApp->LoadIcon (IDI_WONDERWOMAN));
  107. m_listCtrl.SetImageList (&m_imageList, LVSIL_NORMAL);
  108. for (int i = 0; i < 11; i++) InsertItem(i);
  109. RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposDefault);
  110. }
  111. void CHeroesView::InsertItem(int nItem)
  112. {
  113. switch (nItem)
  114. {
  115. case 0: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Aquaman"), 0); break;
  116. case 1: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Atom"), 1); break;
  117. case 2: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Batman"),        2); break;
  118. case 3: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Firestorm"),     3); break;
  119. case 4: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Flash"),         4); break;
  120. case 5: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Green Arrow"),   5); break;
  121. case 6: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Green Lantern"), 6); break;
  122. case 7: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Hawkman"),       7); break;
  123. case 8: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Hawkwoman"),     8); break;
  124. case 9: m_listCtrl.InsertItem ( m_listCtrl.GetItemCount(), _T("Red Tornado"),   9); break;
  125. case 10: m_listCtrl.InsertItem (m_listCtrl.GetItemCount(), _T("Superman"),     10); break;
  126. case 11: m_listCtrl.InsertItem (m_listCtrl.GetItemCount(), _T("Wonder Woman"), 11); break;
  127. }
  128. }
  129. void CHeroesView::OnSize(UINT nType, int cx, int cy)
  130. {
  131. CWnd::OnSize(nType, cx, cy);
  132. RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposDefault);
  133. }
  134. BOOL CHeroesView::PreCreateWindow(CREATESTRUCT& cs)
  135. {
  136. cs.style |= WS_CLIPSIBLINGS| WS_CLIPCHILDREN;
  137. return CWnd::PreCreateWindow(cs);
  138. }
  139. BOOL CHeroesView::OnEraseBkgnd(CDC* /*pDC*/)
  140. {
  141. return TRUE;
  142. }
  143. void CHeroesView::OnSetFocus(CWnd* /*pOldWnd*/)
  144. {
  145. if (m_listCtrl.GetSafeHwnd())
  146. {
  147. m_listCtrl.SetFocus();
  148. }
  149. }
  150. void CHeroesView::OnFilterColor(UINT nID)
  151. {
  152. m_listCtrl.DeleteAllItems();
  153. if (m_nFilter == (int)nID)
  154. {
  155. m_nFilter = 0;
  156. for (int i = 0; i < 11; i++) InsertItem(i);
  157. return;
  158. }
  159. m_nFilter = nID;
  160. switch (m_nFilter)
  161. {
  162. case ID_BUTTON_RED:
  163. InsertItem(0);
  164. InsertItem(3);
  165. InsertItem(4);
  166. break;
  167. case ID_BUTTON_BLUE:
  168. InsertItem(1);
  169. InsertItem(2);
  170. InsertItem(10);
  171. break;
  172. case ID_BUTTON_GREEN:
  173. InsertItem(5);
  174. InsertItem(6);
  175. break;
  176. case ID_FAMILY_HAWKS:
  177. InsertItem(7);
  178. InsertItem(8);
  179. break;
  180. }
  181. }
  182. void CHeroesView::OnUpdateFilterColor(CCmdUI* pCmd)
  183. {
  184. pCmd->SetCheck(pCmd->m_nID == (UINT)m_nFilter);
  185. }