0

以下のコードは実行されますが、空のビットマップ ファイルしか抽出されません。何が問題なのかについてのアイデアはありますか?

void Extract(WORD wResId , LPSTR lpszOutputPath)
{ //example: Extract(IDB_BITMAP1, "Redrose.bmp");
    HRSRC hrsrc = FindResource(NULL, MAKEINTRESOURCE(wResId) , RT_BITMAP);
    HGLOBAL hLoaded = LoadResource( NULL,hrsrc);
    LPVOID lpLock =  LockResource( hLoaded);
    DWORD dwSize = SizeofResource(NULL, hrsrc);
    HANDLE hFile = CreateFile  (lpszOutputPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    DWORD dwByteWritten;
    WriteFile(hFile, lpLock , dwSize , &dwByteWritten , NULL);
    CloseHandle(hFile);
    FreeResource(hLoaded);
}
4

3 に答える 3

4

あなたは求めていますが、ステートメントRT_RCDATAを介してビットマップを追加しなかったに違いありません。おそらくステートメントをRCDATA介して追加したため、 .BITMAPRT_BITMAP

将来的には、人々に推測させるのではなく、どのステップが失敗したかを述べてください。

于 2012-07-09T16:17:53.007 に答える
0

生ファイルをカスタム データとして挿入します。このカスタム データに "MyType" などのテキスト名を付けてから、次のようにします。

HRSRC hrsrc = FindResource(NULL, MAKEINTRESOURCE(wResId) , _T("MyType"));
于 2012-07-09T11:17:45.727 に答える
0

問題は、HINSTANCE パラメータとして NULL をFindResourceLoadResource、およびに渡すことSizeOfResourceです。

起動時に (WinMain または DllMain から) HINSTANCE をまだ保存していない場合は、次を使用して取得できます。

MFC:

HINSTANCE hInstance = AfxGetInstanceHandle();

そうしないと:

HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);
于 2012-07-09T02:35:04.987 に答える