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

IP电话/视频会议

开发平台:

Visual C++

  1. // WB.cpp : Defines the initialization routines for the DLL.
  2. //
  3. #include "stdafx.h"
  4. #include "WB.h"
  5. #include "MainFrame.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. //
  12. // Note!
  13. //
  14. // If this DLL is dynamically linked against the MFC
  15. // DLLs, any functions exported from this DLL which
  16. // call into MFC must have the AFX_MANAGE_STATE macro
  17. // added at the very beginning of the function.
  18. //
  19. // For example:
  20. //
  21. // extern "C" BOOL PASCAL EXPORT ExportedFunction()
  22. // {
  23. // AFX_MANAGE_STATE(AfxGetStaticModuleState());
  24. // // normal function body here
  25. // }
  26. //
  27. // It is very important that this macro appear in each
  28. // function, prior to any calls into MFC.  This means that
  29. // it must appear as the first statement within the 
  30. // function, even before any object variable declarations
  31. // as their constructors may generate calls into the MFC
  32. // DLL.
  33. //
  34. // Please see MFC Technical Notes 33 and 58 for additional
  35. // details.
  36. //
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CWBApp
  39. BEGIN_MESSAGE_MAP(CWBApp, CWinApp)
  40. //{{AFX_MSG_MAP(CWBApp)
  41. //}}AFX_MSG_MAP
  42. END_MESSAGE_MAP()
  43. /////////////////////////////////////////////////////////////////////////////
  44. // CWBApp construction
  45. CWBApp::CWBApp()
  46. {
  47. }
  48. /*
  49.   定义数据包结构
  50.   用户名 + 图元id + 图元类型 + 图元操作(包括增加、删除和移动) + 图元的参数
  51.   增加:图元类型 + 图元区域 + 图元的参数(包括颜色等等)
  52.   删除:图元操作为空
  53.   修改:图元操作区域的位置 + 图元颜色
  54. */
  55. /////////////////////////////////////////////////////////////////////////////
  56. // The one and only CWBApp object
  57. CWBApp theApp;
  58. extern "C" __declspec( dllexport ) CWnd *  CreateWBWnd( void ( * OnWB )( void * pContext , CWnd * pWnd , char * buffer , int size ) , void * pContext , const char * username )
  59. {
  60. AFX_MANAGE_STATE(AfxGetStaticModuleState());
  61. if( ! strlen( username ) )
  62. {
  63. CWnd::GetActiveWindow( )->MessageBox( "用户名不能为空,请输入用户名" , "电子白板" , MB_ICONSTOP | MB_OK );
  64. return NULL;
  65. }
  66. CMainFrame * frame = new CMainFrame( );
  67.     //回调函数
  68. frame->GetView( )->OnWB = OnWB;
  69.     //用户自定义参数
  70. frame->GetView( )->pContext = pContext;
  71. //用户名
  72. frame->GetView( )->userName = username;
  73. frame->SetWindowText( frame->GetView( )->userName + " - 电子白板" );
  74. return frame;
  75. }
  76. extern "C" __declspec( dllexport ) void SetWBMessage( CWnd * pWnd , char * buffer , int size )
  77. {
  78. AFX_MANAGE_STATE(AfxGetStaticModuleState( ) );
  79. CMainFrame * frame = ( CMainFrame * )pWnd;
  80. if( ::IsWindow( frame->GetSafeHwnd( ) ) )
  81. {
  82. try
  83. {
  84. frame->GetView( )->parseData( buffer , size );
  85. }
  86. catch( ... )
  87. {
  88. }
  89. }
  90. }