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

对话框与窗口

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  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 "Notifications.h"
  22. #include "MainFrm.h"
  23. #ifdef _DEBUG
  24. #define new DEBUG_NEW
  25. #undef THIS_FILE
  26. static char THIS_FILE[] = __FILE__;
  27. #endif
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CMainFrame
  30. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  31. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  32. //{{AFX_MSG_MAP(CMainFrame)
  33. ON_WM_CREATE()
  34. ON_WM_CLOSE()
  35. //}}AFX_MSG_MAP
  36. ON_XTP_CREATECOMMANDBAR()
  37. ON_XTP_INITCOMMANDSPOPUP()
  38. ON_XTP_CREATECONTROL()
  39. ON_XTP_AFTERCREATECONTROL()
  40. ON_UPDATE_COMMAND_UI(ID_WINDOW_GOTO, OnUpdateGoto)
  41. ON_XTP_EXECUTE(ID_WINDOW_GOTO, OnGoto)
  42. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  43. END_MESSAGE_MAP()
  44. static UINT indicators[] =
  45. {
  46. ID_SEPARATOR,           // status line indicator
  47. ID_INDICATOR_CAPS,
  48. ID_INDICATOR_NUM,
  49. ID_INDICATOR_SCRL,
  50. };
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CMainFrame construction/destruction
  53. CMainFrame::CMainFrame()
  54. {
  55. // TODO: add member initialization code here
  56. }
  57. CMainFrame::~CMainFrame()
  58. {
  59. }
  60. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  61. {
  62. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  63. return -1;
  64. // Create Status bar.
  65. // Important: All control bars including the Status Bar
  66. // must be created before CommandBars....
  67. if (!m_wndStatusBar.Create(this) ||
  68. !m_wndStatusBar.SetIndicators(indicators,
  69. sizeof(indicators)/sizeof(UINT)))
  70. {
  71. TRACE0("Failed to create status barn");
  72. return -1;      // fail to create
  73. }
  74. // Initialize the command bars
  75. if (!InitCommandBars())
  76. return -1;
  77. // Get a pointer to the command bars object.
  78. CXTPCommandBars* pCommandBars = GetCommandBars();
  79. if(pCommandBars == NULL)
  80. {
  81. TRACE0("Failed to create command bars object.n");
  82. return -1;      // fail to create
  83. }
  84. // Add the menu bar
  85. CXTPCommandBar* pMenuBar = pCommandBars->SetMenu(
  86. _T("Menu Bar"), IDR_MAINFRAME);
  87. if(pMenuBar == NULL)
  88. {
  89. TRACE0("Failed to create menu bar.n");
  90. return -1;      // fail to create
  91. }
  92. // Create ToolBar
  93. CXTPToolBar* pToolBar = (CXTPToolBar*)
  94. pCommandBars->Add(_T("Standard"), xtpBarTop);
  95. if (!pToolBar || !pToolBar->LoadToolBar(IDR_MAINFRAME))
  96. {
  97. TRACE0("Failed to create toolbarn");
  98. return -1;
  99. }
  100. CXTPPaintManager::SetTheme(xtpThemeNativeWinXP);
  101. // Load the previous state for toolbars and menus.
  102. LoadCommandBars(_T("CommandBars"));
  103. return 0;
  104. }
  105. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  106. {
  107. if( !CMDIFrameWnd::PreCreateWindow(cs) )
  108. return FALSE;
  109. cs.lpszClass = _T("XTPMainFrame");
  110. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  111. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  112. return TRUE;
  113. }
  114. /////////////////////////////////////////////////////////////////////////////
  115. // CMainFrame diagnostics
  116. #ifdef _DEBUG
  117. void CMainFrame::AssertValid() const
  118. {
  119. CMDIFrameWnd::AssertValid();
  120. }
  121. void CMainFrame::Dump(CDumpContext& dc) const
  122. {
  123. CMDIFrameWnd::Dump(dc);
  124. }
  125. #endif //_DEBUG
  126. /////////////////////////////////////////////////////////////////////////////
  127. // CMainFrame message handlers
  128. int CMainFrame::OnCreateCommandBar(LPCREATEBARSTRUCT lpCreatePopup)
  129. {
  130. if (lpCreatePopup->bPopup && _tcscmp(lpCreatePopup->lpcstrCaption, _T("Edit")) == 0)
  131. {
  132. CXTPPopupBar* pPopupBar = CXTPPopupBar::CreatePopupBar(GetCommandBars());
  133. pPopupBar->SetTearOffPopup(_T("Edit Bar"), 1000);
  134. lpCreatePopup->pCommandBar = pPopupBar;
  135. return TRUE;
  136. }
  137. return FALSE;
  138. }
  139. int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl)
  140. {
  141. if (lpCreateControl->nID == ID_VIEW_FULLSCREEN )
  142. {
  143. CXTPControlButton* pButton = (CXTPControlButton*)CXTPControlButton::CreateObject();
  144. pButton->SetStyle(xtpButtonIconAndCaption);
  145. lpCreateControl->pControl = pButton;
  146. return TRUE;
  147. }
  148. if (lpCreateControl->nID == ID_WINDOW_GOTO)
  149. {
  150. CXTPControlComboBox* pComboState = (CXTPControlComboBox*)CXTPControlComboBox::CreateObject();
  151. pComboState->SetDropDownWidth(150);
  152. lpCreateControl->pControl = pComboState;
  153. return TRUE;
  154. }
  155. return FALSE;
  156. }
  157. void CMainFrame::OnAfterCreateControl(LPCREATECONTROLSTRUCT lpCreateControl)
  158. {
  159. lpCreateControl;
  160. ASSERT(lpCreateControl->pControl);
  161. }
  162. void CMainFrame::OnInitCommandsPopup(CXTPPopupBar* pCommandBar)
  163. {
  164. // get the list of commands for the popup.
  165. CXTPControls* pCommandList = pCommandBar->GetControls();
  166. // Remove "New" menu item from the File menu.
  167. CXTPControl* pCommandNew = pCommandList->FindControl(
  168. xtpControlButton, ID_FILE_NEW, TRUE, FALSE);
  169. if (pCommandNew)
  170. {
  171. pCommandList->Remove(pCommandNew);
  172. }
  173. // Rename menu item "Save" to "Save Document".
  174. CXTPControl* pCommandSave = pCommandList->FindControl(
  175. xtpControlButton, ID_FILE_SAVE, TRUE, FALSE);
  176. if (pCommandSave)
  177. {
  178. CWnd* pWnd = MDIGetActive();
  179. CString strCaption;
  180. if (pWnd) pWnd->GetWindowText(strCaption);
  181. pCommandSave->SetCaption("&Save " + strCaption);
  182. }
  183. // Rename menu item "Print..." to "Print Document...".
  184. CXTPControl* pCommandPrint = pCommandList->FindControl(
  185. xtpControlButton, ID_FILE_PRINT, TRUE, FALSE);
  186. if (pCommandPrint)
  187. {
  188. CWnd* pWnd = MDIGetActive();
  189. CString strCaption;
  190. if (pWnd) pWnd->GetWindowText(strCaption);
  191. pCommandPrint->SetCaption("&Print " + strCaption +"...");
  192. }
  193. // Sample of dynamic creation. Recommended to make it in OnCreateControl handler.
  194. CXTPControl* pControlIcons = pCommandList->FindControl(
  195. xtpControlButton, ID_VIEW_ICONS, TRUE, FALSE);
  196. if (pControlIcons)
  197. {
  198. CXTPControlPopup* pPopup = (CXTPControlPopup*)pControlIcons->GetControls()->SetControlType(pControlIcons, xtpControlPopup);
  199. pPopup->SetFlags(xtpFlagManualUpdate);
  200. CXTPPopupToolBar* pPopupBar = CXTPPopupToolBar::CreatePopupToolBar(GetCommandBars());
  201. pPopupBar->LoadToolBar(IDR_MAINFRAME);
  202. pPopupBar->SetWidth(200);
  203. pPopup->SetCommandBar(pPopupBar);
  204. pPopupBar->InternalRelease();
  205. }
  206. // Combo box's List bar.
  207. if (pCommandBar->GetPosition() == xtpBarListBox)
  208. {
  209. CXTPControlComboBox* pControl = DYNAMIC_DOWNCAST(CXTPControlComboBox, pCommandBar->GetControlPopup());
  210. ASSERT(pControl != NULL);
  211. pControl->ResetContent();
  212. int nID = AFX_IDM_FIRST_MDICHILD;
  213. HWND hWndChild = ::GetDlgItem(m_hWndMDIClient, nID);
  214. while (hWndChild)
  215. {
  216. TCHAR lpText[256];
  217. ::GetWindowText(hWndChild, lpText, 256);
  218. pControl->AddString(lpText);
  219. hWndChild = ::GetDlgItem(m_hWndMDIClient, ++nID);
  220. }
  221. }
  222. }
  223. void CMainFrame::OnUpdateGoto(CCmdUI* pCmdUI)
  224. {
  225. pCmdUI->Enable(MDIGetActive() != NULL);
  226. }
  227. void CMainFrame::OnClose()
  228. {
  229. // Save the current state for toolbars and menus.
  230. SaveCommandBars(_T("CommandBars"));
  231. CMDIFrameWnd::OnClose();
  232. }
  233. void CMainFrame::OnCustomize()
  234. {
  235. // Get a pointer to the command bars object.
  236. CXTPCommandBars* pCommandBars = GetCommandBars();
  237. if(pCommandBars != NULL)
  238. {
  239. // Instanciate the customize dialog object.
  240. CXTPCustomizeSheet dlg(pCommandBars);
  241. // Add the options page to the customize dialog.
  242. CXTPCustomizeOptionsPage pageOptions(&dlg);
  243. dlg.AddPage(&pageOptions);
  244. // Add the commands page to the customize dialog.
  245. CXTPCustomizeCommandsPage* pCommands = dlg.GetCommandsPage();
  246. pCommands->AddCategories(IDR_NOTIFTYPE);
  247. // Use the command bar manager to initialize the
  248. // customize dialog.
  249. pCommands->InsertAllCommandsCategory();
  250. pCommands->InsertBuiltInMenus(IDR_NOTIFTYPE);
  251. pCommands->InsertNewMenuCategory();
  252. // Dispaly the dialog.
  253. dlg.DoModal();
  254. }
  255. }
  256. void CMainFrame::OnGoto(NMHDR* pNMHDR, LRESULT* pResult)
  257. {
  258. NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR;
  259. CXTPControlComboBox* pControl = (CXTPControlComboBox*)tagNMCONTROL->pControl;
  260. if (pControl->GetType() == xtpControlComboBox)
  261. {
  262. CString strText = pControl->GetListBoxText();
  263. if (!strText.IsEmpty())
  264. {
  265. int nID = AFX_IDM_FIRST_MDICHILD;
  266. HWND hWndChild = ::GetDlgItem(m_hWndMDIClient, nID);
  267. while (hWndChild)
  268. {
  269. CWnd* pWnd = CWnd::FromHandle(hWndChild);
  270. CString strCaption;
  271. pWnd->GetWindowText(strCaption);
  272. if (strCaption == strText)
  273. {
  274. MDIActivate(pWnd);
  275. break;
  276. }
  277. hWndChild = ::GetDlgItem(m_hWndMDIClient, ++nID);
  278. }
  279. }
  280. *pResult = TRUE;
  281. }
  282. }