// DisplayWnd.cpp : 实现文件 // #include "stdafx.h" #include "VoiceStation.h" #include "DisplayWnd.h" #include "DockPane.h" #include "ViewMgr.h" #include "SystemLauncher.h" #pragma region AboutDlg class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() #pragma endregion // CDisplayWnd IMPLEMENT_DYNCREATE(CDisplayWnd, CFrameWndEx) CDisplayWnd::CDisplayWnd() { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } CDisplayWnd::~CDisplayWnd() { } /***************************************************************** **【函数名称】 __InsertMenuItem **【函数功能】 插入新的菜单项 **【参数】 **【返回值】 ****************************************************************/ BOOL CDisplayWnd::InsertMenuItem( UINT beforeItemId, UINT NewItemId, UINT NewItemName ) { CMenu* pMenu = GetMenu(); ASSERT(pMenu != NULL); MENUITEMINFO MenuInfo; memset(&MenuInfo, 0, sizeof(MenuInfo)); MenuInfo.cbSize = sizeof(MenuInfo); MenuInfo.fMask = MIIM_ID | MIIM_STRING; MenuInfo.wID = NewItemId; CString Name; Name.LoadString(NewItemName); MenuInfo.dwTypeData = Name.GetBuffer(0); return pMenu->InsertMenuItem(beforeItemId, &MenuInfo); } /***************************************************************** **【函数名称】 Show **【函数功能】 显示窗口 **【参数】 **【返回值】 ****************************************************************/ void CDisplayWnd::Show( void ) { LoadFrame(IDR_MAINFRAME); ShowWindow(SW_SHOWMAXIMIZED); UpdateWindow(); CViewMgr::GetInstance().setup(this); } /***************************************************************** **【函数名称】 OnNewPane **【函数功能】 新增Pane的处理函数 **【参数】 **【返回值】 ****************************************************************/ void CDisplayWnd::OnNewPane( CDockPane* pPane ) { ASSERT(pPane != NULL); DockPane(pPane); } BEGIN_MESSAGE_MAP(CDisplayWnd, CFrameWndEx) ON_WM_CREATE() ON_WM_CLOSE() ON_COMMAND(ID_MENU_ABOUT, &CDisplayWnd::OnMenuAbout) ON_COMMAND(ID_MENU_LOG, &CDisplayWnd::OnMenuLog) ON_COMMAND(ID_MENU_RES, &CDisplayWnd::OnMenuRes) ON_COMMAND(ID_MENU_EXIT, &CDisplayWnd::OnMenuExit) ON_COMMAND(ID_MENU_LOG_START, &CDisplayWnd::OnMenuLogStart) ON_COMMAND(ID_MENU_LOG_STOP, &CDisplayWnd::OnMenuLogStop) ON_COMMAND(ID_MENU_LINE, &CDisplayWnd::OnMenuViewLine) ON_COMMAND(ID_MENU_FAX, &CDisplayWnd::OnMenuViewFax) ON_UPDATE_COMMAND_UI(ID_MENU_LOG_START, &CDisplayWnd::OnUpdateMenuLogStart) ON_UPDATE_COMMAND_UI(ID_MENU_LOG_STOP, &CDisplayWnd::OnUpdateMenuLogStop) ON_WM_SYSCOMMAND() END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // 状态行指示器 IDS_STR_PRODUCT, IDS_STR_RIGHT, }; // CDisplayWnd 消息处理程序 int CDisplayWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWndEx::OnCreate(lpCreateStruct) == -1) return -1; // 设置主窗口标记 ::SetProp(m_hWnd, AfxGetApp()->m_pszAppName, (HANDLE)1); // 设置图标 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // 添加菜单 CMenu menu; menu.LoadMenu(IDR_MAINFRAME); SetMenu(&menu); menu.Detach(); if (!m_wndStatusBar.Create(this)) { TRACE0("未能创建状态栏\n"); return -1; // 未能创建 } m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); // 设置停靠属性 /*GetDockingManager()->DisableRestoreDockState(TRUE); EnableLoadDockState(FALSE);*/ EnableDocking(CBRS_ALIGN_ANY); CDockingManager::SetDockingMode(DT_SMART); EnableAutoHidePanes(CBRS_ALIGN_ANY); return 0; } void CDisplayWnd::OnClose() { CSystemLauncher::stop(); CFrameWndEx::OnClose(); } void CDisplayWnd::OnMenuAbout() { CAboutDlg Dlg; Dlg.DoModal(); } void CDisplayWnd::OnMenuLog() { // TODO: 在此添加命令处理程序代码 CViewMgr::GetInstance().showLogView(); } void CDisplayWnd::OnMenuRes() { // TODO: 在此添加命令处理程序代码 CViewMgr::GetInstance().showResView(); } void CDisplayWnd::OnMenuExit() { // TODO: 在此添加命令处理程序代码 PostMessage(WM_SYSCOMMAND, SC_CLOSE); } void CDisplayWnd::OnMenuLogStart() { // TODO: 在此添加命令处理程序代码 ILogger::getInstance().start(); } void CDisplayWnd::OnMenuLogStop() { // TODO: 在此添加命令处理程序代码 ILogger::getInstance().stop(); } void CDisplayWnd::OnUpdateMenuLogStart(CCmdUI *pCmdUI) { // TODO: 在此添加命令更新用户界面处理程序代码 if(ILogger::getInstance().isStart()) pCmdUI->SetCheck(); else pCmdUI->SetCheck(0); } void CDisplayWnd::OnUpdateMenuLogStop(CCmdUI *pCmdUI) { // TODO: 在此添加命令更新用户界面处理程序代码 if(ILogger::getInstance().isStart()) pCmdUI->SetCheck(0); else pCmdUI->SetCheck(1); } void CDisplayWnd::OnMenuViewLine() { CViewMgr::GetInstance().showLineView(); } void CDisplayWnd::OnMenuViewFax() { CViewMgr::GetInstance().showFaxView(); } void CDisplayWnd::OnSysCommand(UINT nID, LPARAM lParam) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if(nID == SC_CLOSE) { if(MessageBox(_T("确定要退出VS系统吗"), _T("提示"), MB_OKCANCEL) == IDCANCEL) return; } CFrameWndEx::OnSysCommand(nID, lParam); }