中间件标准版5.1git,去除基础模块

DisplayWnd.cpp 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. // DisplayWnd.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "VoiceStation.h"
  5. #include "DisplayWnd.h"
  6. #include "DockPane.h"
  7. #include "ViewMgr.h"
  8. #include "SystemLauncher.h"
  9. #pragma region AboutDlg
  10. class CAboutDlg : public CDialogEx
  11. {
  12. public:
  13. CAboutDlg();
  14. // 对话框数据
  15. enum { IDD = IDD_ABOUTBOX };
  16. protected:
  17. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  18. // 实现
  19. protected:
  20. DECLARE_MESSAGE_MAP()
  21. };
  22. CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
  23. {
  24. }
  25. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialogEx::DoDataExchange(pDX);
  28. }
  29. BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
  30. END_MESSAGE_MAP()
  31. #pragma endregion
  32. // CDisplayWnd
  33. IMPLEMENT_DYNCREATE(CDisplayWnd, CFrameWndEx)
  34. CDisplayWnd::CDisplayWnd()
  35. {
  36. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  37. }
  38. CDisplayWnd::~CDisplayWnd()
  39. {
  40. }
  41. /*****************************************************************
  42. **【函数名称】 __InsertMenuItem
  43. **【函数功能】 插入新的菜单项
  44. **【参数】
  45. **【返回值】
  46. ****************************************************************/
  47. BOOL CDisplayWnd::InsertMenuItem( UINT beforeItemId, UINT NewItemId, UINT NewItemName )
  48. {
  49. CMenu* pMenu = GetMenu();
  50. ASSERT(pMenu != NULL);
  51. MENUITEMINFO MenuInfo;
  52. memset(&MenuInfo, 0, sizeof(MenuInfo));
  53. MenuInfo.cbSize = sizeof(MenuInfo);
  54. MenuInfo.fMask = MIIM_ID | MIIM_STRING;
  55. MenuInfo.wID = NewItemId;
  56. CString Name;
  57. Name.LoadString(NewItemName);
  58. MenuInfo.dwTypeData = Name.GetBuffer(0);
  59. return pMenu->InsertMenuItem(beforeItemId, &MenuInfo);
  60. }
  61. /*****************************************************************
  62. **【函数名称】 Show
  63. **【函数功能】 显示窗口
  64. **【参数】
  65. **【返回值】
  66. ****************************************************************/
  67. void CDisplayWnd::Show( void )
  68. {
  69. LoadFrame(IDR_MAINFRAME);
  70. ShowWindow(SW_SHOWMAXIMIZED);
  71. UpdateWindow();
  72. CViewMgr::GetInstance().setup(this);
  73. }
  74. /*****************************************************************
  75. **【函数名称】 OnNewPane
  76. **【函数功能】 新增Pane的处理函数
  77. **【参数】
  78. **【返回值】
  79. ****************************************************************/
  80. void CDisplayWnd::OnNewPane( CDockPane* pPane )
  81. {
  82. ASSERT(pPane != NULL);
  83. DockPane(pPane);
  84. }
  85. BEGIN_MESSAGE_MAP(CDisplayWnd, CFrameWndEx)
  86. ON_WM_CREATE()
  87. ON_WM_CLOSE()
  88. ON_COMMAND(ID_MENU_ABOUT, &CDisplayWnd::OnMenuAbout)
  89. ON_COMMAND(ID_MENU_LOG, &CDisplayWnd::OnMenuLog)
  90. ON_COMMAND(ID_MENU_RES, &CDisplayWnd::OnMenuRes)
  91. ON_COMMAND(ID_MENU_EXIT, &CDisplayWnd::OnMenuExit)
  92. ON_COMMAND(ID_MENU_LOG_START, &CDisplayWnd::OnMenuLogStart)
  93. ON_COMMAND(ID_MENU_LOG_STOP, &CDisplayWnd::OnMenuLogStop)
  94. ON_COMMAND(ID_MENU_LINE, &CDisplayWnd::OnMenuViewLine)
  95. ON_COMMAND(ID_MENU_FAX, &CDisplayWnd::OnMenuViewFax)
  96. ON_UPDATE_COMMAND_UI(ID_MENU_LOG_START, &CDisplayWnd::OnUpdateMenuLogStart)
  97. ON_UPDATE_COMMAND_UI(ID_MENU_LOG_STOP, &CDisplayWnd::OnUpdateMenuLogStop)
  98. ON_WM_SYSCOMMAND()
  99. END_MESSAGE_MAP()
  100. static UINT indicators[] =
  101. {
  102. ID_SEPARATOR, // 状态行指示器
  103. IDS_STR_PRODUCT,
  104. IDS_STR_RIGHT,
  105. };
  106. // CDisplayWnd 消息处理程序
  107. int CDisplayWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
  108. {
  109. if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
  110. return -1;
  111. // 设置主窗口标记
  112. ::SetProp(m_hWnd, AfxGetApp()->m_pszAppName, (HANDLE)1);
  113. // 设置图标
  114. SetIcon(m_hIcon, TRUE); // 设置大图标
  115. SetIcon(m_hIcon, FALSE); // 设置小图标
  116. // 添加菜单
  117. CMenu menu;
  118. menu.LoadMenu(IDR_MAINFRAME);
  119. SetMenu(&menu);
  120. menu.Detach();
  121. if (!m_wndStatusBar.Create(this))
  122. {
  123. TRACE0("未能创建状态栏\n");
  124. return -1; // 未能创建
  125. }
  126. m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
  127. // 设置停靠属性
  128. /*GetDockingManager()->DisableRestoreDockState(TRUE);
  129. EnableLoadDockState(FALSE);*/
  130. EnableDocking(CBRS_ALIGN_ANY);
  131. CDockingManager::SetDockingMode(DT_SMART);
  132. EnableAutoHidePanes(CBRS_ALIGN_ANY);
  133. return 0;
  134. }
  135. void CDisplayWnd::OnClose()
  136. {
  137. CSystemLauncher::stop();
  138. CFrameWndEx::OnClose();
  139. }
  140. void CDisplayWnd::OnMenuAbout()
  141. {
  142. CAboutDlg Dlg;
  143. Dlg.DoModal();
  144. }
  145. void CDisplayWnd::OnMenuLog()
  146. {
  147. // TODO: 在此添加命令处理程序代码
  148. CViewMgr::GetInstance().showLogView();
  149. }
  150. void CDisplayWnd::OnMenuRes()
  151. {
  152. // TODO: 在此添加命令处理程序代码
  153. CViewMgr::GetInstance().showResView();
  154. }
  155. void CDisplayWnd::OnMenuExit()
  156. {
  157. // TODO: 在此添加命令处理程序代码
  158. PostMessage(WM_SYSCOMMAND, SC_CLOSE);
  159. }
  160. void CDisplayWnd::OnMenuLogStart()
  161. {
  162. // TODO: 在此添加命令处理程序代码
  163. ILogger::getInstance().start();
  164. }
  165. void CDisplayWnd::OnMenuLogStop()
  166. {
  167. // TODO: 在此添加命令处理程序代码
  168. ILogger::getInstance().stop();
  169. }
  170. void CDisplayWnd::OnUpdateMenuLogStart(CCmdUI *pCmdUI)
  171. {
  172. // TODO: 在此添加命令更新用户界面处理程序代码
  173. if(ILogger::getInstance().isStart())
  174. pCmdUI->SetCheck();
  175. else
  176. pCmdUI->SetCheck(0);
  177. }
  178. void CDisplayWnd::OnUpdateMenuLogStop(CCmdUI *pCmdUI)
  179. {
  180. // TODO: 在此添加命令更新用户界面处理程序代码
  181. if(ILogger::getInstance().isStart())
  182. pCmdUI->SetCheck(0);
  183. else
  184. pCmdUI->SetCheck(1);
  185. }
  186. void CDisplayWnd::OnMenuViewLine()
  187. {
  188. CViewMgr::GetInstance().showLineView();
  189. }
  190. void CDisplayWnd::OnMenuViewFax()
  191. {
  192. CViewMgr::GetInstance().showFaxView();
  193. }
  194. void CDisplayWnd::OnSysCommand(UINT nID, LPARAM lParam)
  195. {
  196. // TODO: 在此添加消息处理程序代码和/或调用默认值
  197. if(nID == SC_CLOSE)
  198. {
  199. if(MessageBox(_T("确定要退出VS系统吗"), _T("提示"), MB_OKCANCEL) == IDCANCEL)
  200. return;
  201. }
  202. CFrameWndEx::OnSysCommand(nID, lParam);
  203. }