Prechádzať zdrojové kódy

release模式下,资源文件打包进exe已经可以了

张洋 4 rokov pred
rodič
commit
7cd95e0a65

+ 2 - 0
.gitignore

@@ -6,3 +6,5 @@
 /bin/Win32/Debug/zhipuzi_pos_windows/tmp
 /bin/Win32/Debug/zhipuzi_pos_windows/db/pos.db
 /bin/Win32/Debug/zhipuzi_pos_windows/dump
+/bin/Win32/Release/zhipuzi_pos_windows/tmp
+/bin/Win32/Release/zhipuzi_pos_windows/dump

BIN
bin/Win32/Release/zhipuzi_pos_windows/db/pos.db


BIN
bin/Win32/Release/zhipuzi_pos_windows/music/diannei_new.wav


BIN
bin/Win32/Release/zhipuzi_pos_windows/skin/skin.zpz


BIN
bin/Win32/Release/zhipuzi_pos_windows/zhipuzi_pos_windows.exe


+ 3 - 2
zhipuzi_pos_windows/resource/resource.h

@@ -4,13 +4,14 @@
 //
 #define IDI_ICON1                       101
 #define IDI_ICON_DUILIB                 101
+#define IDR_ZIPRES1                     103
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        102
-#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_RESOURCE_VALUE        104
+#define _APS_NEXT_COMMAND_VALUE         40002
 #define _APS_NEXT_CONTROL_VALUE         1001
 #define _APS_NEXT_SYMED_VALUE           101
 #endif

BIN
zhipuzi_pos_windows/resource/zhipuzi_pos_windows.aps


BIN
zhipuzi_pos_windows/resource/zhipuzi_pos_windows.rc


+ 39 - 5
zhipuzi_pos_windows/zhipuzi_pos_windows.cpp

@@ -6,7 +6,8 @@
 
 #include "CAppEnv.h"
 
-
+//用于从zip读取资源
+LPBYTE g_lpResourceZIPBuffer = NULL;
 
 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                       _In_opt_ HINSTANCE hPrevInstance,
@@ -25,10 +26,42 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
 
     //开始展示窗口
     CPaintManagerUI::SetInstance(hInstance);
+
 #ifdef NDEBUG
-	CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + _T("skin"));
-	CPaintManagerUI::SetResourceZip(_T("skin.zpz"));
+	//CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + _T("skin"));
+	//CPaintManagerUI::SetResourceZip(_T("skin.zpz"));
+
+	//从资源中加载zip
+	HRSRC hResource = ::FindResource(CPaintManagerUI::GetResourceDll(), MAKEINTRESOURCE(IDR_ZIPRES1), _T("ZIPRES"));
+	if (hResource == NULL)
+	{
+		return 0L;
+	}
+
+	DWORD dwSize = 0;
+	HGLOBAL hGlobal = ::LoadResource(CPaintManagerUI::GetResourceDll(), hResource);
+	if (hGlobal == NULL)
+	{
+		::FreeResource(hResource);
+		return 0L;
+	}
+
+	dwSize = ::SizeofResource(CPaintManagerUI::GetResourceDll(), hResource);
+	if (dwSize == 0)
+	{
+		return 0L;
+	}
+
+	g_lpResourceZIPBuffer = new BYTE[dwSize];
+	if (g_lpResourceZIPBuffer != NULL)
+	{
+		::CopyMemory(g_lpResourceZIPBuffer, (LPBYTE)::LockResource(hGlobal), dwSize);
+	}
+	::FreeResource(hResource);
+
+	CPaintManagerUI::SetResourceZip(g_lpResourceZIPBuffer, dwSize);
 #else
+	//debug模式下
     CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + _T("skin"));
 #endif
 
@@ -53,9 +86,10 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
 
     CPaintManagerUI::MessageLoop();
 
-	app.Stop();
-
     ::CoUninitialize();
 
+	//销毁一些环境
+	app.Stop();
+
     return 0;
 }

+ 1 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj

@@ -391,6 +391,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <Image Include="resource\zhipuzi.ico" />
   </ItemGroup>
   <ItemGroup>
+    <None Include="..\res\skin.zip" />
     <None Include="resource\zhipuzi_pos_windows.aps" />
   </ItemGroup>
   <ItemGroup>

+ 1 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

@@ -492,6 +492,7 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="resource\zhipuzi_pos_windows.aps" />
+    <None Include="..\res\skin.zip" />
   </ItemGroup>
   <ItemGroup>
     <Text Include="helper\readme.txt" />