-6

関数("c:\test.ico")を使用してアイコンをロードしましたが、このアイコンのサイズを取得するにはどうすればよいですか? LoadImage()(その中のバイト数)私はc ++とwinapiを使用しています

HRSRC hRes = LoadImage ( NULL, icon, IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
LPVOID lpResLock = LockResource(hRes);

(より正確には、「lpResLock」が指すデータのサイズ)

========更新====== 私は知ってsizeofresource()いますが、問題は、実行可能ファイルからリソースをロードすることです。質問で示したように、ディスク ファイルからスタンドアロン ローカル リソースをロードしています。2番目の問題は、関数hResInfoを使用してパラメーターを作成する必要があることです。FindResource私の場合はLoadImage()..を使用しています。したがって、これは役に立ちません

4

1 に答える 1

3

Googlefor SizeofResource()。その標準のwin32API関数IIRC

これは関数プロトタイプです:

DWORD WINAPI SizeofResource(
  _In_opt_  HMODULE hModule,
  _In_      HRSRC hResInfo
);

パラメーター:

hModule [in、オプション]タイプ:HMODULE実行可能ファイルにリソースが含まれているモジュールへのハンドル。

hResInfo [in]タイプ:HRSRCリソースへのハンドル。このハンドルは、FindResource関数またはFindResourceEx関数を使用して作成する必要があります。

アップデート-

次に、ファイルからのリソースの長さ=ファイルのサイズ。

使用:次GetFileLength()のようにコーディングされた関数:

DWORD GetFileLength(LPSTR fileName)
{
   DWORD len = 0;
   OFSTRUCT of;
   HFILE hFile = OpenFile(fileName,&of, OF_READ);
   GetFileSize(hFile,&len);
   CloseHandle(hFile);
   return len;
}
于 2012-11-04T06:54:13.573 に答える