MainFrame.cpp
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:10k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. // MainFrame.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "WB.h"
  5. #include "MainFrame.h"
  6. #include "DrawWBWnd.h"
  7. #include "WndDialog.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMainFrame
  15. CMainFrame::CMainFrame()
  16. {
  17. this->view = new CDrawView( this );
  18. this->m_bRgn = false;
  19. this->m_bWnd = false;
  20. this->cArrow = ::AfxGetApp( )->LoadCursor( MAKEINTRESOURCE( IDC_ARROW ) );
  21. this->cErase = ::AfxGetApp( )->LoadCursor( MAKEINTRESOURCE( IDC_ERASE ) );
  22. this->cLock = ::AfxGetApp( )->LoadCursor( MAKEINTRESOURCE( IDC_LOCK ) );
  23. this->cPen = ::AfxGetApp( )->LoadCursor( MAKEINTRESOURCE( IDC_PEN ) );
  24. this->cPen1 = ::AfxGetApp( )->LoadCursor( MAKEINTRESOURCE( IDC_PEN1 ) );
  25. this->cBeam = ::AfxGetApp( )->LoadStandardCursor( MAKEINTRESOURCE( IDC_IBEAM ) );
  26. this->cCross = ::AfxGetApp( )->LoadStandardCursor( MAKEINTRESOURCE( IDC_CROSS ) );
  27. this->Create( NULL , "电子白板" , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CFrameWnd::rectDefault , NULL , 0 );
  28. }
  29. CMainFrame::~CMainFrame()
  30. {
  31. }
  32. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  33. //{{AFX_MSG_MAP(CMainFrame)
  34. ON_WM_CREATE()
  35. //}}AFX_MSG_MAP
  36. ON_COMMAND_RANGE( IDC_RADIO1 , IDC_RADIO16 , OnTool )
  37. ON_COMMAND_RANGE( IDC_1 , IDC_28 , OnColor )
  38. ON_COMMAND( IDC_LINE , OnLine )
  39. END_MESSAGE_MAP()
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CMainFrame message handlers
  42. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  43. {
  44. if ( CFrameWnd::OnCreate(lpCreateStruct) == -1 )
  45. return -1;
  46. this->view->Create( NULL , NULL , AFX_WS_DEFAULT_VIEW , CRect( 0 , 0 , 0 , 0 ) , this , AFX_IDW_PANE_FIRST , NULL );
  47. this->EnableDocking( CBRS_ALIGN_ANY );
  48. this->InitColor( );
  49. this->InitTool( );
  50. return 0;
  51. }
  52. void CMainFrame::InitTool( void )
  53. {
  54. this->toolBar.Create( this , IDD_TOOL_DIALOG , CBRS_LEFT , 1 );
  55. this->reToolBar.Create( this , RBS_AUTOSIZE , WS_CHILD | WS_VISIBLE | CBRS_LEFT );
  56. this->reToolBar.AddBar( &this->toolBar , RGB( 214 , 239 , 255 ) , RGB( 214 , 239 , 255 ) , NULL , RBBS_NOGRIPPER | RBBS_HIDDEN | RBBS_FIXEDSIZE );
  57. CImageList imglist;
  58. imglist.Create( IDB_WB_TOOL , 16 , 1 , RGB( 192 , 192 , 192 ) );
  59. CButton * btn = NULL;
  60. HICON hIcon = NULL;
  61. CString text;
  62. CImageList imglist2;
  63. imglist2.Create( IDB_OPEN_SAVE_BITMAP , 15 , 1 , RGB( 255 , 0 , 0 ) );
  64. btn = ( CButton * )this->toolBar.GetDlgItem( IDC_OPEN );
  65. if( btn )
  66. {
  67. btn->ModifyStyle( 0 , BS_ICON );
  68. btn->GetWindowText( text );
  69. if( text.IsEmpty( ) )
  70. text = "  ";
  71. ToolTip( btn->GetSafeHwnd( ) , text );
  72. hIcon = imglist2.ExtractIcon( 0 );
  73. btn->SetIcon( hIcon );
  74. }
  75. btn = ( CButton * )this->toolBar.GetDlgItem( IDC_SAVE );
  76. if( btn )
  77. {
  78. btn->ModifyStyle( 0 , BS_ICON );
  79. btn->GetWindowText( text );
  80. if( text.IsEmpty( ) )
  81. text = "  ";
  82. ToolTip( btn->GetSafeHwnd( ) , text );
  83. hIcon = imglist2.ExtractIcon( 1 );
  84. btn->SetIcon( hIcon );
  85. }
  86. for( int i = 0; i < imglist.GetImageCount( ); i ++ )
  87. {
  88. btn = ( CButton * )this->toolBar.GetDlgItem( IDC_RADIO1 + i );
  89. if( btn )
  90. {
  91. btn->ModifyStyle( 0 , BS_ICON );
  92. btn->GetWindowText( text );
  93. if( text.IsEmpty( ) )
  94. text = "  ";
  95. ToolTip( btn->GetSafeHwnd( ) , text );
  96. hIcon = imglist.ExtractIcon( i );
  97. btn->SetIcon( hIcon );
  98. }
  99. }
  100. this->linectrl.SubclassDlgItem( IDC_LINE , &this->toolBar );
  101. }
  102. void CMainFrame::InitColor( void )
  103. {
  104. this->colorBar.Create( this , IDD_COLOR_DIALOG , CBRS_BOTTOM , 2 );
  105. this->rcColorBar.Create( this , RBS_AUTOSIZE , WS_CHILD | WS_VISIBLE | CBRS_BOTTOM );
  106. this->rcColorBar.AddBar( & this->colorBar , RGB( 214 , 239 , 255 ) , RGB( 214 , 239 , 255 ) , NULL , RBBS_NOGRIPPER | RBBS_HIDDEN | RBBS_FIXEDSIZE );
  107. this->curClrCtrl.SubclassDlgItem( IDC_SELECT , &this->colorBar );
  108.     //1黑色
  109. this->clrCtrl[ 0 ].SubclassDlgItem( IDC_1 , &this->colorBar );
  110. //2白色
  111. this->clrCtrl[ 1 ].SubclassDlgItem( IDC_2 , &this->colorBar );
  112. this->clrCtrl[ 1 ].SetColor( RGB( 255 , 255 , 255 ) );
  113. //3深灰
  114. this->clrCtrl[ 2 ].SubclassDlgItem( IDC_3 , &this->colorBar );
  115. this->clrCtrl[ 2 ].SetColor( RGB( 128 , 128 , 128 ) );
  116. //4浅灰
  117. this->clrCtrl[ 3 ].SubclassDlgItem( IDC_4 , &this->colorBar );
  118. this->clrCtrl[ 3 ].SetColor( RGB( 192 , 192 , 192 ) );
  119. //5深红
  120. this->clrCtrl[ 4 ].SubclassDlgItem( IDC_5 , &this->colorBar );
  121. this->clrCtrl[ 4 ].SetColor( RGB( 128 , 0 , 0 ) );
  122. //6浅红
  123. this->clrCtrl[ 5 ].SubclassDlgItem( IDC_6 , &this->colorBar );
  124. this->clrCtrl[ 5 ].SetColor( RGB( 255 , 0 , 0 ) );
  125. //7深黄
  126. this->clrCtrl[ 6 ].SubclassDlgItem( IDC_7 , &this->colorBar );
  127. this->clrCtrl[ 6 ].SetColor( RGB( 128 , 128 , 0 ) );
  128. //8浅黄
  129. this->clrCtrl[ 7 ].SubclassDlgItem( IDC_8 , &this->colorBar );
  130. this->clrCtrl[ 7 ].SetColor( RGB( 255 , 255 , 0 ) );
  131. //9深绿
  132. this->clrCtrl[ 8 ].SubclassDlgItem( IDC_9 , &this->colorBar );
  133. this->clrCtrl[ 8 ].SetColor( RGB( 0 , 128 , 0 ) );
  134. //10浅绿
  135. this->clrCtrl[ 9 ].SubclassDlgItem( IDC_10 , &this->colorBar );
  136. this->clrCtrl[ 9 ].SetColor( RGB( 0 , 255 , 0 ) );
  137. //11
  138. this->clrCtrl[ 10 ].SubclassDlgItem( IDC_11 , &this->colorBar );
  139. this->clrCtrl[ 10 ].SetColor( RGB( 0 , 128 , 128 ) );
  140. //12
  141. this->clrCtrl[ 11 ].SubclassDlgItem( IDC_12 , &this->colorBar );
  142. this->clrCtrl[ 11 ].SetColor( RGB( 0 , 255 , 255 ) );
  143. //13
  144. this->clrCtrl[ 12 ].SubclassDlgItem( IDC_13 , &this->colorBar );
  145. this->clrCtrl[ 12 ].SetColor( RGB( 0 , 0 , 128 ) );
  146.     //14
  147. this->clrCtrl[ 13 ].SubclassDlgItem( IDC_14 , &this->colorBar );
  148. this->clrCtrl[ 13 ].SetColor( RGB( 0 , 0 , 255 ) );
  149. //15
  150. this->clrCtrl[ 14 ].SubclassDlgItem( IDC_15, &this->colorBar );
  151. this->clrCtrl[ 14 ].SetColor( RGB( 128 , 0 , 128 ) );
  152. //16
  153. this->clrCtrl[ 15 ].SubclassDlgItem( IDC_16, &this->colorBar );
  154. this->clrCtrl[ 15 ].SetColor( RGB( 255 , 0 , 255 ) );
  155. //17
  156. this->clrCtrl[ 16 ].SubclassDlgItem( IDC_17, &this->colorBar );
  157. this->clrCtrl[ 16 ].SetColor( RGB( 128 , 128 , 64 ) );
  158.     //18
  159. this->clrCtrl[ 17 ].SubclassDlgItem( IDC_18, &this->colorBar );
  160. this->clrCtrl[ 17 ].SetColor( RGB( 255 , 255 , 128 ) );
  161.     //19
  162. this->clrCtrl[ 18 ].SubclassDlgItem( IDC_19, &this->colorBar );
  163. this->clrCtrl[ 18 ].SetColor( RGB( 0 , 64 , 64 ) );
  164.     //20
  165. this->clrCtrl[ 19 ].SubclassDlgItem( IDC_20, &this->colorBar );
  166. this->clrCtrl[ 19 ].SetColor( RGB( 0 , 255 , 128 ) );
  167. //21
  168. this->clrCtrl[ 20 ].SubclassDlgItem( IDC_21, &this->colorBar );
  169. this->clrCtrl[ 20 ].SetColor( RGB( 0 , 128 , 255 ) );
  170. //22
  171. this->clrCtrl[ 21].SubclassDlgItem( IDC_22, &this->colorBar );
  172. this->clrCtrl[ 21 ].SetColor( RGB( 128 , 255 , 255 ) );
  173. //23
  174. this->clrCtrl[ 22 ].SubclassDlgItem( IDC_23, &this->colorBar );
  175. this->clrCtrl[ 22 ].SetColor( RGB( 0 , 64 , 128 ) );
  176. //24
  177. this->clrCtrl[ 23 ].SubclassDlgItem( IDC_24, &this->colorBar );
  178. this->clrCtrl[ 23 ].SetColor( RGB( 128 , 128 , 255 ) );
  179.     //25
  180. this->clrCtrl[ 24 ].SubclassDlgItem( IDC_25, &this->colorBar );
  181. this->clrCtrl[ 24 ].SetColor( RGB( 64 , 0 , 255 ) );
  182. //26
  183. this->clrCtrl[ 25 ].SubclassDlgItem( IDC_26, &this->colorBar );
  184. this->clrCtrl[ 25 ].SetColor( RGB( 255 , 0 , 128 ) );
  185. //27
  186. this->clrCtrl[ 26 ].SubclassDlgItem( IDC_27, &this->colorBar );
  187. this->clrCtrl[ 26 ].SetColor( RGB( 128 , 64 , 0 ) );
  188. //28
  189. this->clrCtrl[ 27 ].SubclassDlgItem( IDC_28, &this->colorBar );
  190. this->clrCtrl[ 27 ].SetColor( RGB( 255 , 128 , 64 ) );
  191. }
  192. //工具选择
  193. void CMainFrame::OnTool( UINT id )
  194. {
  195. if( ! this->toolBar.GetDlgItem( id )->IsWindowVisible( ) )
  196. return;
  197. int index = id - IDC_RADIO1;
  198. bool empty = true;
  199. switch( index )
  200. {
  201. case 0 : index = CDraw::SELECT; empty = false; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cArrow ); break;
  202. case 1 : index = CDraw::SELECT; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cErase ); break;
  203. case 2 : index = CDraw::TEXT ; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cBeam ); break;
  204. case 3 : index = CDraw::PEN1; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cPen1 );break;
  205. case 4 : index = CDraw::PEN; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cPen );break;
  206. case 5 : index = CDraw::LINE; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cCross );break;
  207. case 6 : index = CDraw::RECT; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cCross );break;
  208. case 7 : index = CDraw::RECT; empty = false; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cCross );break;
  209. case 8 : index = CDraw::CIRCLE; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cCross );break;
  210. case 9 : index = CDraw::CIRCLE; empty = false; ::SetClassLong( this->view->GetSafeHwnd( ) , GCL_HCURSOR , ( long )this->cCross );break;
  211. case 10 : break;
  212. case 11 : this->view->GetIterator( )->SetIterator( );break;
  213. case 12 : break;
  214. case 13 : break;
  215. case 14 : 
  216. {
  217. if( ! this->m_bRgn )
  218. {
  219. CWndDialog dlg( IDD_RGN_DIALOG );
  220. if( dlg.DoModal( ) == IDOK )
  221. this->m_bRgn = dlg.m_check;
  222. else 
  223. return;
  224. }
  225. index = CDraw::WBWND; 
  226. }
  227. break;
  228. case 15 : 
  229. {
  230. if( ! this->m_bWnd )
  231. {
  232. CWndDialog dlg( IDD_WND_DIALOG );
  233. if( dlg.DoModal( ) == IDOK )
  234. this->m_bWnd = dlg.m_check;
  235. else 
  236. return;
  237. }
  238. index = CDraw::WBWND1; 
  239. }
  240. break;
  241. }//选择画笔
  242. this->view->SelectDraw( index , this->curClrCtrl.GetColor( ) , this->linectrl.GetWidth( ) , empty );
  243. }
  244. //颜色选择
  245. void CMainFrame::OnColor( UINT id )
  246. {
  247. CColorCtrl * clr = ( CColorCtrl * )this->colorBar.GetDlgItem( id );
  248. if( clr )
  249. this->curClrCtrl.SetColor( clr->GetColor( ) );
  250.     //设定颜色
  251. if( this->view->GetDraw( ) )
  252. this->view->GetDraw( )->SetColor( this->curClrCtrl.GetColor( ) );
  253. }
  254. //线条选择
  255. void CMainFrame::OnLine( void )
  256. {   //设定线型
  257. if( this->view->GetDraw( ) )
  258. this->view->GetDraw( )->SetWidth( this->linectrl.GetWidth( ) );
  259. }
  260. BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam) 
  261. {
  262. if( ! CFrameWnd::OnCommand(wParam, lParam) )
  263. return this->view->SendMessage( WM_COMMAND , wParam , lParam );
  264. return true;
  265. }