// Dlg_Main.cpp : 实现文件 // #include "stdafx.h" #include "StoneU_HC_CARDOCX.h" #include "Dlg_Main.h" #include "Global.h" #include ".\dlg_main.h" // CDlg_Main 对话框 IMPLEMENT_DYNAMIC(CDlg_Main, CDialog) CDlg_Main::CDlg_Main(CWnd* pParent /*=NULL*/) : CDialog(CDlg_Main::IDD, pParent) { m_pMonitor = NULL; m_pPlayBack = NULL; m_pSettings = NULL; m_nShowIndex = -1; } CDlg_Main::~CDlg_Main() { delete m_pMonitor; delete m_pPlayBack; delete m_pSettings; } void CDlg_Main::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TAB1, m_Tab_Item); DDX_Control(pDX, IDC_BTN_MONITER, m_Btn_Moniter); DDX_Control(pDX, IDC_BTN_PLAYBACK, m_Btn_PlayBack); DDX_Control(pDX, IDC_BTN_SETTINGS, m_Btn_Settings); } BEGIN_MESSAGE_MAP(CDlg_Main, CDialog) ON_BN_CLICKED(IDC_BTN_MONITER, OnBnClickedBtnMoniter) ON_BN_CLICKED(IDC_BTN_PLAYBACK, OnBnClickedBtnPlayback) ON_BN_CLICKED(IDC_BTN_SETTINGS, OnBnClickedBtnSettings) ON_WM_CTLCOLOR() ON_WM_ERASEBKGND() END_MESSAGE_MAP() // CDlg_Main 消息处理程序 BOOL CDlg_Main::OnInitDialog() { CDialog::OnInitDialog(); m_Btn_Moniter.SetIcon(IDI_MONITER); m_Btn_Moniter.DrawBorder(FALSE); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); m_Btn_PlayBack.SetIcon(IDI_PlayBack); m_Btn_PlayBack.DrawBorder(FALSE); m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); m_Btn_Settings.SetIcon(IDI_SETTINGS); m_Btn_Settings.DrawBorder(FALSE); m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); this->MoveWindow( 0,0,g_nFrameWeight,g_nFrameHeight ); SetCtrlPos(); InitChildWindow(); OnBnClickedBtnMoniter(); // TODO: 在此添加额外的初始化設置 //m_Tab_Item.AddPage("视频监控", &Dlg_VedioMonitor, IDD_HKVISION_DIALOG); //m_Tab_Item.AddPage("视频回放", &Dlg_VedioBackPlay, IDD_PLAYER_DIALOG); //m_Tab_Item.AddPage("参数设置", &Dlg_Settings, IDD_DLG_SETTINGS); //// //m_Tab_Item.Show(); //m_Tab_Item.SetCurSel(1); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlg_Main::SetCtrlPos() { CRect rMain; this->GetWindowRect( rMain ); ScreenToClient( &rMain ); CRect rect; int nBtnW=0,nBtnH=60; int nSpace=10; nBtnW = 200; rect.left = nSpace; rect.right = rect.left+nBtnW; rect.top = nSpace; rect.bottom = rect.top+nBtnH; m_Btn_Moniter.MoveWindow( rect ); rect.left = rect.right+nSpace; rect.right = rect.left+nBtnW; rect.top = nSpace; rect.bottom = rect.top+nBtnH; m_Btn_PlayBack.MoveWindow( rect ); rect.left = rect.right+nSpace; rect.right = rect.left+nBtnW; rect.top = nSpace; rect.bottom = rect.top+nBtnH; m_Btn_Settings.MoveWindow( rect ); GetDlgItem(IDC_TAB1)->MoveWindow( 10,rect.bottom+20,rMain.right-20,rMain.bottom-100 ); } void CDlg_Main::InitChildWindow(void) { CRect rect; GetDlgItem( IDC_TAB1 )->GetWindowRect( rect ); ScreenToClient( &rect ); m_pMonitor = new CHKVisionDlg; m_pMonitor->Create(IDD_HKVISION_DIALOG,this); m_pMonitor->SetCtrlPos( rect ); m_pMonitor->ShowWindow(SW_HIDE); m_pPlayBack = new CPlayerDlg; m_pPlayBack->Create(IDD_PLAYER_DIALOG, this); //m_pPlayBack->SetCtrlPos( rect ); m_pPlayBack->ShowWindow(SW_HIDE); m_pSettings = new CDlg_Settings; m_pSettings->Create(IDD_DLG_SETTINGS, this); m_pSettings->SetCtrlPos( rect ); m_pSettings->ShowWindow(SW_HIDE); } void CDlg_Main::HighAllDlg() { m_Btn_Moniter.m_nIsChoose = -1; m_Btn_PlayBack.m_nIsChoose = -1; m_Btn_Settings.m_nIsChoose = -1; m_pMonitor->ShowWindow(SW_HIDE); m_pPlayBack->ShowWindow(SW_HIDE); m_pSettings->ShowWindow(SW_HIDE); CRect rect; GetWindowRect(&rect); ScreenToClient(&rect); rect.bottom = 80; InvalidateRect(rect); } void CDlg_Main::InitMoniterRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_TAB1)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pMonitor->MoveWindow(&rc,TRUE); m_pMonitor->ShowWindow(SW_SHOW); } void CDlg_Main::InitPlayBackRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_TAB1)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pPlayBack->MoveWindow(&rc,TRUE); m_pPlayBack->ShowWindow(SW_SHOW); } void CDlg_Main::InitSettingsRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_TAB1)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pSettings->MoveWindow(&rc,TRUE); m_pSettings->ShowWindow(SW_SHOW); } void CDlg_Main::OnBnClickedBtnMoniter() { if( m_nShowIndex==0 ) return; m_nShowIndex = 0; InitMoniterRect(); m_Btn_Moniter.m_nIsChoose = 1; } void CDlg_Main::OnBnClickedBtnPlayback() { if( m_nShowIndex==1 ) return; m_nShowIndex = 1; InitPlayBackRect(); m_Btn_PlayBack.m_nIsChoose = 1; } void CDlg_Main::OnBnClickedBtnSettings() { if( m_nShowIndex==2 ) return; m_nShowIndex = 2; InitSettingsRect(); m_Btn_Settings.m_nIsChoose = 1; } HBRUSH CDlg_Main::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } BOOL CDlg_Main::OnEraseBkgnd(CDC* pDC) { CBrush br1,br2; CRect rect, rect2; GetWindowRect(&rect); ScreenToClient(&rect); br1.CreateSolidBrush(g_Color1); br2.CreateSolidBrush(g_Color2); pDC->FillRect(rect,&br2); rect.bottom = 80; pDC->FillRect(rect,&br1); CRect rc; switch( m_nShowIndex ) { case 0: m_Btn_Moniter.GetWindowRect( rc );ScreenToClient( &rc ); rc.InflateRect( 10,10,0,20 ); pDC->FillRect(rc,&br2); break; case 1: m_Btn_PlayBack.GetWindowRect( rc );ScreenToClient( &rc ); rc.InflateRect( 0,10,0,20 ); pDC->FillRect(rc,&br2); break; case 2: m_Btn_Settings.GetWindowRect( rc );ScreenToClient( &rc ); rc.InflateRect( 0,10,0,20 ); pDC->FillRect(rc,&br2); break; } DeleteObject( br1 ); DeleteObject( br2 ); return TRUE; //return CDialog::OnEraseBkgnd(pDC); }