SouiInit.cpp 2.8 KB

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