Renderings.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. // Renderings.cpp : 定义 DLL 的初始化例程。
  2. //
  3. #include "stdafx.h"
  4. #include "Renderings.h"
  5. #include "DlgRenderings.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #endif
  9. //
  10. //TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的,
  11. // 则从此 DLL 导出的任何调入
  12. // MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
  13. // 该函数的最前面。
  14. //
  15. // 例如:
  16. //
  17. // extern "C" BOOL PASCAL EXPORT ExportedFunction()
  18. // {
  19. // AFX_MANAGE_STATE(AfxGetStaticModuleState());
  20. // // 此处为普通函数体
  21. // }
  22. //
  23. // 此宏先于任何 MFC 调用
  24. // 出现在每个函数中十分重要。这意味着
  25. // 它必须作为函数中的第一个语句
  26. // 出现,甚至先于所有对象变量声明,
  27. // 这是因为它们的构造函数可能生成 MFC
  28. // DLL 调用。
  29. //
  30. // 有关其他详细信息,
  31. // 请参阅 MFC 技术说明 33 和 58。
  32. //
  33. // CRenderingsApp
  34. BEGIN_MESSAGE_MAP(CRenderingsApp, CWinApp)
  35. END_MESSAGE_MAP()
  36. // CRenderingsApp 构造
  37. CRenderingsApp::CRenderingsApp()
  38. {
  39. // TODO: 在此处添加构造代码,
  40. // 将所有重要的初始化放置在 InitInstance 中
  41. }
  42. // 唯一的一个 CRenderingsApp 对象
  43. CRenderingsApp theApp;
  44. // CRenderingsApp 初始化
  45. BOOL CRenderingsApp::InitInstance()
  46. {
  47. CWinApp::InitInstance();
  48. return TRUE;
  49. }
  50. // 返回FALSE,则hMemery由调用程序释放;
  51. extern "C" BOOL PASCAL EXPORT LoadRenderings( IN LPCTSTR lpRenderings, IN HGLOBAL hMemery, IN DWORD dwMemSize )
  52. {
  53. if ( lpRenderings == NULL || lpRenderings[0] == '\0')
  54. return FALSE;
  55. // PNG图片路径;
  56. g_strPathOfPNG = lpRenderings;
  57. if ( hMemery == NULL || dwMemSize == 0 )
  58. return FALSE;
  59. BYTE *pData = (BYTE*)GlobalLock(hMemery);
  60. if ( pData == NULL )
  61. {
  62. GlobalUnlock(hMemery);
  63. GlobalFree(hMemery);
  64. return FALSE;
  65. }
  66. CMemFile mf;
  67. mf.Attach(pData, dwMemSize);
  68. CArchive ar(&mf, CArchive::load);
  69. g_AryCustomerImage.Serialize(ar);
  70. ar.Close();
  71. mf.Detach();
  72. GlobalUnlock(hMemery);
  73. GlobalFree(hMemery);
  74. ULONG_PTR gdiplusToken;
  75. GdiplusStartupInput gdiplusStartupInput;
  76. GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
  77. AFX_MANAGE_STATE(AfxGetStaticModuleState());
  78. // 获取桌面分辨率;
  79. GetDesktopInfo();
  80. CDlgRenderings dlg;
  81. dlg.DoModal();
  82. Gdiplus::GdiplusShutdown(gdiplusToken);
  83. return TRUE;
  84. }