SouiInit.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #include "stdafx.h"
  2. #include "SouiInit.h"
  3. #include "SRadioBox2.h"
  4. #include "StabtypeControl.h"
  5. #include "SSwitch2.h"
  6. //从PE文件加载,注意从文件加载路径位置
  7. #define RES_TYPE 0
  8. //#define SYSRES_TYPE 0
  9. // #define RES_TYPE 0 //PE
  10. // #define RES_TYPE 1 //ZIP
  11. // #define RES_TYPE 2 //7z
  12. // #define RES_TYPE 2 //文件
  13. //去掉多项支持,以免代码显得混乱
  14. #if (RES_TYPE==1)
  15. #include "resprovider-zip\zipresprovider-param.h"
  16. #else
  17. #if (RES_TYPE==2)
  18. #include "resprovider-7zip\zip7resprovider-param.h"
  19. #endif
  20. #endif
  21. #ifdef _DEBUG
  22. #define SYS_NAMED_RESOURCE _T("soui-sys-resourced.dll")
  23. #else
  24. #define SYS_NAMED_RESOURCE _T("soui-sys-resource.dll")
  25. #endif
  26. //定义唯一的一个R,UIRES对象,ROBJ_IN_CPP是resource.h中定义的宏。
  27. ROBJ_IN_CPP
  28. void InitDir(TCHAR *Path)
  29. {
  30. if (Path == NULL)
  31. {
  32. TCHAR szCurrentDir[MAX_PATH] = { 0 };
  33. GetModuleFileName(NULL, szCurrentDir, sizeof(szCurrentDir));
  34. LPTSTR lpInsertPos = _tcsrchr(szCurrentDir, _T('\\'));
  35. #ifdef _DEBUG
  36. _tcscpy(lpInsertPos + 1, _T("..\\SProxy"));
  37. #else
  38. _tcscpy(lpInsertPos + 1, _T("\0"));
  39. #endif
  40. SetCurrentDirectory(szCurrentDir);
  41. }
  42. else
  43. SetCurrentDirectory(Path);
  44. }
  45. void InitSystemRes(SApplication * theApp,SComMgr *pComMgr)
  46. {
  47. #ifdef _DEBUG
  48. //选择了仅在Release版本打包资源则系统资源在DEBUG下始终使用DLL加载
  49. {
  50. HMODULE hModSysResource = LoadLibrary(SYS_NAMED_RESOURCE);
  51. if (hModSysResource)
  52. {
  53. CAutoRefPtr<IResProvider> sysResProvider;
  54. CreateResProvider(RES_PE, (IObjRef**)&sysResProvider);
  55. sysResProvider->Init((WPARAM)hModSysResource, 0);
  56. theApp->LoadSystemNamedResource(sysResProvider);
  57. FreeLibrary(hModSysResource);
  58. }
  59. else
  60. {
  61. SASSERT(0);
  62. }
  63. }
  64. #else
  65. //从DLL加载系统资源
  66. {
  67. /*HMODULE hModSysResource = LoadLibrary(SYS_NAMED_RESOURCE);
  68. if (hModSysResource)
  69. {
  70. CAutoRefPtr<IResProvider> sysResProvider;
  71. CreateResProvider(RES_PE, (IObjRef**)&sysResProvider);
  72. sysResProvider->Init((WPARAM)hModSysResource, 0);
  73. theApp->LoadSystemNamedResource(sysResProvider);
  74. FreeLibrary(hModSysResource);
  75. }
  76. else
  77. {
  78. SASSERT(0);
  79. }*/
  80. CAutoRefPtr<IResProvider> sysResProvider;
  81. CreateResProvider(RES_PE, (IObjRef**)&sysResProvider);
  82. sysResProvider->Init((WPARAM)theApp->GetInstance(), 0);
  83. theApp->LoadSystemNamedResource(sysResProvider);
  84. }
  85. #endif
  86. }
  87. void InitUserRes(SApplication * theApp, SComMgr *pComMgr)
  88. {
  89. CAutoRefPtr<IResProvider> pResProvider;
  90. #ifdef _DEBUG
  91. {
  92. CreateResProvider(RES_FILE, (IObjRef**)&pResProvider);
  93. BOOL bLoaded = pResProvider->Init((LPARAM)_T("uires"), 0);
  94. SASSERT(bLoaded);
  95. }
  96. #else
  97. {
  98. CreateResProvider(RES_PE, (IObjRef**)&pResProvider);
  99. BOOL bLoaded = pResProvider->Init((WPARAM)theApp->GetInstance(), 0);
  100. SASSERT(bLoaded);
  101. }
  102. #endif
  103. theApp->InitXmlNamedID(namedXmlID, ARRAYSIZE(namedXmlID), TRUE);
  104. theApp->AddResProvider(pResProvider);
  105. }
  106. void SUserObjectDefaultRegister::RegisterWindows(SObjectFactoryMgr * objFactory) const
  107. {
  108. #define RegWnd(wndClass) objFactory->TplRegisterFactory<wndClass>();
  109. RegWnd(SSwitch2)
  110. RegWnd(SRadioBox2)
  111. RegWnd(StabtypeControl)
  112. RegWnd(SSkinVScrollbar)
  113. RegWnd(SShellNotifyIcon)
  114. }