如何在C Winapi中获得加载图标的大小

How to get size of a loaded icon in c++ winapi

本文关键字:图标 加载 Winapi      更新时间:2023-10-16

我使用 LoadImage()函数加载了图标("c:test.ico")如何获得此图标的大小?(其中的字节数)我正在使用C &winapi

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

(更确切地说,数据的大小由" lpreslock"指向)

====================我知道sizeofresource(),但问题是,它是从可执行文件中加载资源。正如我在问题中显示的那样,我正在从磁盘文件中加载独立的本地资源。第二个问题是,必须使用FindResource函数来创建hResInfo参数,在我的情况下,我使用的是LoadImage() ..所以这不能帮助

google for SizeofResource()。它是标准的Win32 API函数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;
}