// DisplayWnd.cpp : 实现文件 // #include "stdafx.h" #include "resource.h" #include "DisplayWnd.h" #include "DockPane.h" #include "ViewMgr.h" #include "ControlShell.h" #pragma region AboutDlg class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 virtual BOOL OnInitDialog(); // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BOOL CAboutDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 CStatic* pLogoCtrl = (CStatic*)GetDlgItem(IDC_STATIC_LOGO); #ifdef _VERSION_EHANG HBITMAP bm = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BMP_LOGO_EHANG)); if(bm != NULL) pLogoCtrl->SetBitmap(bm); SetDlgItemText(IDC_STATIC_ABOUT_VERSION, _T("毅航Ehangcom_StableCore子系统V4.0")); SetDlgItemText(IDC_STATIC_ABOUT_RIGHT, _T("Copyright (C) 2015 广州市毅航互联通信股份有限公司")); #else pLogoCtrl->ModifyStyle(SS_BITMAP, SS_ICON); HICON Icon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MAINFRAME)); if(Icon != NULL) pLogoCtrl->SetIcon(Icon); SetDlgItemText(IDC_STATIC_ABOUT_VERSION, _T("河南华谊中间件_StableCore子系统V4.0")); SetDlgItemText(IDC_STATIC_ABOUT_RIGHT, _T("Copyright (C) 2015 河南华谊网络科技有限公司")); #endif return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } 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() { } /***************************************************************** **【函数名称】 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_MESSAGE(WM_CORE_EVENT, OnCoreEvent) ON_WM_CREATE() ON_WM_CLOSE() ON_COMMAND(ID_MENU_ABOUT, &CDisplayWnd::OnMenuAbout) 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_VIEW_LOG, &CDisplayWnd::OnMenuViewLog) ON_COMMAND(ID_MENU_VIEW_VOIP, &CDisplayWnd::OnMenuViewVoip) ON_COMMAND(ID_MENU_VIEW_DSP, &CDisplayWnd::OnMenuViewDsp) ON_COMMAND(ID_MENU_VIEW_DTI, &CDisplayWnd::OnMenuViewDti) ON_COMMAND(ID_MENU_VIEW_IPM, &CDisplayWnd::OnMenuViewIpm) ON_COMMAND(ID_MENU_VIEW_MEETING, &CDisplayWnd::OnMenuViewMeeting) ON_UPDATE_COMMAND_UI(ID_MENU_LOG_START, &CDisplayWnd::OnUpdateMenuLogStart) ON_UPDATE_COMMAND_UI(ID_MENU_LOG_STOP, &CDisplayWnd::OnUpdateMenuLogStop) ON_WM_SYSCOMMAND() ON_WM_TIMER() END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // 状态行指示器 IDS_STR_PRODUCT, IDS_STR_RIGHT, }; // CDisplayWnd 消息处理程序 LRESULT CDisplayWnd::OnCoreEvent( WPARAM wParam, LPARAM lParam ) { UINT Event = (UINT)wParam; switch(Event) { case CORE_EVENT_DEV_RES_NEW: { DEV_RES_ID* pResId = (DEV_RES_ID*)lParam; ASSERT(pResId != NULL); CViewMgr::GetInstance().onResNew(pResId); ASSERT(pResId == NULL); } break; case CORE_EVENT_DEV_RES_DEL: { DEV_RES_ID* pResId = (DEV_RES_ID*)lParam; ASSERT(pResId != NULL); CViewMgr::GetInstance().onResDel(pResId); ASSERT(pResId == NULL); } break; case CORE_EVENT_DEV_RES_STATE: { DEV_RES_ID* pResId = (DEV_RES_ID*)lParam; ASSERT(pResId != NULL); CViewMgr::GetInstance().onResState(pResId); ASSERT(pResId == NULL); } break; case CORE_EVENT_DEV_CLOSE: { LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{UI}: 与设备连接中断,系统在30秒后退出,稍后将自行重启!")); SetTimer(ms_QuitTimer, 30 * 1000, NULL); } break; } return 0; } 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(TRUE); EnableDocking(CBRS_ALIGN_ANY); CDockingManager::SetDockingMode(DT_SMART); EnableAutoHidePanes(CBRS_ALIGN_ANY); return 0; } void CDisplayWnd::OnClose() { CControlShell::GetInstance().close(); CFrameWndEx::OnClose(); } void CDisplayWnd::OnMenuAbout() { CAboutDlg Dlg; Dlg.DoModal(); } void CDisplayWnd::OnMenuViewLog() { // TODO: 在此添加命令处理程序代码 CViewMgr::GetInstance().showLogView(); } 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::OnMenuViewVoip() { CViewMgr::GetInstance().showResView(DEV_RES_TYPE_VOIP); } void CDisplayWnd::OnMenuViewDsp() { // TODO: 在此添加命令处理程序代码 CViewMgr::GetInstance().showResView(DEV_RES_TYPE_DSP); } void CDisplayWnd::OnMenuViewDti() { // TODO: 在此添加命令处理程序代码 CViewMgr::GetInstance().showResView(DEV_RES_TYPE_TRUNK); } void CDisplayWnd::OnMenuViewIpm() { // TODO: 在此添加命令处理程序代码 CViewMgr::GetInstance().showResView(DEV_RES_TYPE_IPM); } void CDisplayWnd::OnMenuViewMeeting() { //CViewMgr::GetInstance().showResView(DEV_RES_TYPE_CONFERENCE); } void CDisplayWnd::OnSysCommand(UINT nID, LPARAM lParam) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if(nID == SC_CLOSE) { if(MessageBox(_T("确定要退出SC吗"), _T("提示"), MB_OKCANCEL) == IDCANCEL) return; } CFrameWndEx::OnSysCommand(nID, lParam); } void CDisplayWnd::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if(nIDEvent == ms_QuitTimer) { KillTimer(nIDEvent); PostMessage(WM_CLOSE); } CFrameWndEx::OnTimer(nIDEvent); }