Dlg_Main.cpp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. // Dlg_Main.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_HC_CARDOCX.h"
  5. #include "Dlg_Main.h"
  6. #include "Global.h"
  7. #include ".\dlg_main.h"
  8. // CDlg_Main 对话框
  9. IMPLEMENT_DYNAMIC(CDlg_Main, CDialog)
  10. CDlg_Main::CDlg_Main(CWnd* pParent /*=NULL*/)
  11. : CDialog(CDlg_Main::IDD, pParent)
  12. {
  13. m_pMonitor = NULL;
  14. m_pPlayBack = NULL;
  15. m_pSettings = NULL;
  16. m_nShowIndex = -1;
  17. }
  18. CDlg_Main::~CDlg_Main()
  19. {
  20. delete m_pMonitor;
  21. delete m_pPlayBack;
  22. delete m_pSettings;
  23. }
  24. void CDlg_Main::DoDataExchange(CDataExchange* pDX)
  25. {
  26. CDialog::DoDataExchange(pDX);
  27. DDX_Control(pDX, IDC_TAB1, m_Tab_Item);
  28. DDX_Control(pDX, IDC_BTN_MONITER, m_Btn_Moniter);
  29. DDX_Control(pDX, IDC_BTN_PLAYBACK, m_Btn_PlayBack);
  30. DDX_Control(pDX, IDC_BTN_SETTINGS, m_Btn_Settings);
  31. }
  32. BEGIN_MESSAGE_MAP(CDlg_Main, CDialog)
  33. ON_BN_CLICKED(IDC_BTN_MONITER, OnBnClickedBtnMoniter)
  34. ON_BN_CLICKED(IDC_BTN_PLAYBACK, OnBnClickedBtnPlayback)
  35. ON_BN_CLICKED(IDC_BTN_SETTINGS, OnBnClickedBtnSettings)
  36. ON_WM_CTLCOLOR()
  37. ON_WM_ERASEBKGND()
  38. END_MESSAGE_MAP()
  39. // CDlg_Main 消息处理程序
  40. BOOL CDlg_Main::OnInitDialog()
  41. {
  42. CDialog::OnInitDialog();
  43. m_Btn_Moniter.SetIcon(IDI_MONITER);
  44. m_Btn_Moniter.DrawBorder(FALSE);
  45. m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1);
  46. m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2);
  47. m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2);
  48. m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2);
  49. m_Btn_PlayBack.SetIcon(IDI_PlayBack);
  50. m_Btn_PlayBack.DrawBorder(FALSE);
  51. m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1);
  52. m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2);
  53. m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2);
  54. m_Btn_PlayBack.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2);
  55. m_Btn_Settings.SetIcon(IDI_SETTINGS);
  56. m_Btn_Settings.DrawBorder(FALSE);
  57. m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1);
  58. m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2);
  59. m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2);
  60. m_Btn_Settings.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2);
  61. this->MoveWindow( 0,0,g_nFrameWeight,g_nFrameHeight );
  62. SetCtrlPos();
  63. InitChildWindow();
  64. OnBnClickedBtnMoniter();
  65. // TODO: 在此添加额外的初始化設置
  66. //m_Tab_Item.AddPage("视频监控", &Dlg_VedioMonitor, IDD_HKVISION_DIALOG);
  67. //m_Tab_Item.AddPage("视频回放", &Dlg_VedioBackPlay, IDD_PLAYER_DIALOG);
  68. //m_Tab_Item.AddPage("参数设置", &Dlg_Settings, IDD_DLG_SETTINGS);
  69. ////
  70. //m_Tab_Item.Show();
  71. //m_Tab_Item.SetCurSel(1);
  72. return TRUE; // return TRUE unless you set the focus to a control
  73. // 异常: OCX 属性页应返回 FALSE
  74. }
  75. void CDlg_Main::SetCtrlPos()
  76. {
  77. CRect rMain;
  78. this->GetWindowRect( rMain );
  79. ScreenToClient( &rMain );
  80. CRect rect;
  81. int nBtnW=0,nBtnH=60;
  82. int nSpace=10;
  83. nBtnW = 200;
  84. rect.left = nSpace;
  85. rect.right = rect.left+nBtnW;
  86. rect.top = nSpace;
  87. rect.bottom = rect.top+nBtnH;
  88. m_Btn_Moniter.MoveWindow( rect );
  89. rect.left = rect.right+nSpace;
  90. rect.right = rect.left+nBtnW;
  91. rect.top = nSpace;
  92. rect.bottom = rect.top+nBtnH;
  93. m_Btn_PlayBack.MoveWindow( rect );
  94. rect.left = rect.right+nSpace;
  95. rect.right = rect.left+nBtnW;
  96. rect.top = nSpace;
  97. rect.bottom = rect.top+nBtnH;
  98. m_Btn_Settings.MoveWindow( rect );
  99. GetDlgItem(IDC_TAB1)->MoveWindow( 10,rect.bottom+20,rMain.right-20,rMain.bottom-100 );
  100. }
  101. void CDlg_Main::InitChildWindow(void)
  102. {
  103. CRect rect;
  104. GetDlgItem( IDC_TAB1 )->GetWindowRect( rect );
  105. ScreenToClient( &rect );
  106. m_pMonitor = new CHKVisionDlg;
  107. m_pMonitor->Create(IDD_HKVISION_DIALOG,this);
  108. m_pMonitor->SetCtrlPos( rect );
  109. m_pMonitor->ShowWindow(SW_HIDE);
  110. m_pPlayBack = new CPlayerDlg;
  111. m_pPlayBack->Create(IDD_PLAYER_DIALOG, this);
  112. //m_pPlayBack->SetCtrlPos( rect );
  113. m_pPlayBack->ShowWindow(SW_HIDE);
  114. m_pSettings = new CDlg_Settings;
  115. m_pSettings->Create(IDD_DLG_SETTINGS, this);
  116. m_pSettings->SetCtrlPos( rect );
  117. m_pSettings->ShowWindow(SW_HIDE);
  118. }
  119. void CDlg_Main::HighAllDlg()
  120. {
  121. m_Btn_Moniter.m_nIsChoose = -1;
  122. m_Btn_PlayBack.m_nIsChoose = -1;
  123. m_Btn_Settings.m_nIsChoose = -1;
  124. m_pMonitor->ShowWindow(SW_HIDE);
  125. m_pPlayBack->ShowWindow(SW_HIDE);
  126. m_pSettings->ShowWindow(SW_HIDE);
  127. CRect rect;
  128. GetWindowRect(&rect);
  129. ScreenToClient(&rect);
  130. rect.bottom = 80;
  131. InvalidateRect(rect);
  132. }
  133. void CDlg_Main::InitMoniterRect()
  134. {
  135. HighAllDlg();
  136. CRect rc(0,0,0,0);
  137. GetDlgItem(IDC_TAB1)->GetWindowRect( rc );
  138. ScreenToClient( &rc );
  139. m_pMonitor->MoveWindow(&rc,TRUE);
  140. m_pMonitor->ShowWindow(SW_SHOW);
  141. }
  142. void CDlg_Main::InitPlayBackRect()
  143. {
  144. HighAllDlg();
  145. CRect rc(0,0,0,0);
  146. GetDlgItem(IDC_TAB1)->GetWindowRect( rc );
  147. ScreenToClient( &rc );
  148. m_pPlayBack->MoveWindow(&rc,TRUE);
  149. m_pPlayBack->ShowWindow(SW_SHOW);
  150. }
  151. void CDlg_Main::InitSettingsRect()
  152. {
  153. HighAllDlg();
  154. CRect rc(0,0,0,0);
  155. GetDlgItem(IDC_TAB1)->GetWindowRect( rc );
  156. ScreenToClient( &rc );
  157. m_pSettings->MoveWindow(&rc,TRUE);
  158. m_pSettings->ShowWindow(SW_SHOW);
  159. }
  160. void CDlg_Main::OnBnClickedBtnMoniter()
  161. {
  162. if( m_nShowIndex==0 )
  163. return;
  164. m_nShowIndex = 0;
  165. InitMoniterRect();
  166. m_Btn_Moniter.m_nIsChoose = 1;
  167. }
  168. void CDlg_Main::OnBnClickedBtnPlayback()
  169. {
  170. if( m_nShowIndex==1 )
  171. return;
  172. m_nShowIndex = 1;
  173. InitPlayBackRect();
  174. m_Btn_PlayBack.m_nIsChoose = 1;
  175. }
  176. void CDlg_Main::OnBnClickedBtnSettings()
  177. {
  178. if( m_nShowIndex==2 )
  179. return;
  180. m_nShowIndex = 2;
  181. InitSettingsRect();
  182. m_Btn_Settings.m_nIsChoose = 1;
  183. }
  184. HBRUSH CDlg_Main::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  185. {
  186. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  187. // TODO: 在此更改 DC 的任何属性
  188. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  189. return hbr;
  190. }
  191. BOOL CDlg_Main::OnEraseBkgnd(CDC* pDC)
  192. {
  193. CBrush br1,br2;
  194. CRect rect, rect2;
  195. GetWindowRect(&rect);
  196. ScreenToClient(&rect);
  197. br1.CreateSolidBrush(g_Color1);
  198. br2.CreateSolidBrush(g_Color2);
  199. pDC->FillRect(rect,&br2);
  200. rect.bottom = 80;
  201. pDC->FillRect(rect,&br1);
  202. CRect rc;
  203. switch( m_nShowIndex )
  204. {
  205. case 0:
  206. m_Btn_Moniter.GetWindowRect( rc );ScreenToClient( &rc );
  207. rc.InflateRect( 10,10,0,20 );
  208. pDC->FillRect(rc,&br2);
  209. break;
  210. case 1:
  211. m_Btn_PlayBack.GetWindowRect( rc );ScreenToClient( &rc );
  212. rc.InflateRect( 0,10,0,20 );
  213. pDC->FillRect(rc,&br2);
  214. break;
  215. case 2:
  216. m_Btn_Settings.GetWindowRect( rc );ScreenToClient( &rc );
  217. rc.InflateRect( 0,10,0,20 );
  218. pDC->FillRect(rc,&br2);
  219. break;
  220. }
  221. DeleteObject( br1 );
  222. DeleteObject( br2 );
  223. return TRUE;
  224. //return CDialog::OnEraseBkgnd(pDC);
  225. }