1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| #include <windows.h> #include <stdio.h> #include "resource.h"
void FreeRes_ShowError(char* pszText) { char szErr[MAX_PATH] = { 0 }; wsprintf(szErr, "%s Error[%d]\n", pszText, ::GetLastError()); }
BOOL FreeMyResource(UINT uiResourceName, char* lpszResourceType, char* lpszSaveFileName) { HRSRC hRsrc = ::FindResource(NULL, MAKEINTRESOURCE(uiResourceName), lpszResourceType); if (NULL == hRsrc) { FreeRes_ShowError("FindResource"); return FALSE; } DWORD dwSize = ::SizeofResource(NULL, hRsrc); if (0 >= dwSize) { FreeRes_ShowError("SizeofResource"); return FALSE; } HGLOBAL hGlobal = ::LoadResource(NULL, hRsrc); if (NULL == hGlobal) { FreeRes_ShowError("LoadResource"); return FALSE; } LPVOID lpVoid = ::LockResource(hGlobal); if (NULL == lpVoid) { FreeRes_ShowError("LockResource"); return FALSE; } FILE* fp = NULL; fopen_s(&fp, lpszSaveFileName, "wb+"); if (NULL == fp) { FreeRes_ShowError("LockResource"); return FALSE; } fwrite(lpVoid, sizeof(char), dwSize, fp); fclose(fp);
return TRUE; }
int main() { char szSaveName[MAX_PATH] = "1.txt"; BOOL bRet = FreeMyResource(IDR_MYRES2, "MYRES", szSaveName); if (FALSE == bRet) { MessageBox(NULL, "Free Resource Error!", "ERROR", MB_OK); } else { MessageBox(NULL, "Free Resource OK!", "OK", MB_OK); }
return 0;
}
|