C++ winapi c++;希肯

C++ winapi c++;希肯,c++,winapi,icons,C++,Winapi,Icons,我使用minGW和eclipse。 我是这样做的: case WM_CREATE: { ... hIcon = (HICON)LoadImage(NULL, "icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE); if(hIcon) { SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon); } else { MessageBoxW(hwnd, "ico not found", "ico not

我使用minGW和eclipse。 我是这样做的:

case WM_CREATE:
{
...
hIcon = (HICON)LoadImage(NULL, "icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
if(hIcon) { SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon); }
else { MessageBoxW(hwnd, "ico not found", "ico not found", MB_OK | MB_ICONERROR); }
...
}
因此,通过这种方式,.ico必须与.exe位于同一文件夹中
如何将此.ico构建到exe中?

您可以使用资源文件

有关更多信息,请参见此处:
您可以使用资源文件

有关更多信息,请参见此处:

使用.rc文件将.ico文件添加到可执行文件的资源中。然后在调用
LoadImage()
时,去掉
LR_LOADFROMFILE
标志,并在
lpszName
参数中指定资源的ID,而不是文件名。例如:

MY_ICON ICON "icon.ico"


使用.rc文件将.ico文件添加到可执行文件的资源中。然后在调用
LoadImage()
时,去掉
LR_LOADFROMFILE
标志,并在
lpszName
参数中指定资源的ID,而不是文件名。例如:

MY_ICON ICON "icon.ico"


资源文件可能是最简单的。是的,我在.rc文件中键入这一行:1 ICON“ICON.ico”,但这与HICON不同,如果我使用HICON“ICON.ico”什么都没有发生您可以使用资源脚本中的“ICON”指令将图标作为资源存储在可执行文件中,然后使用
LoadImage
加载图标并获得一个
HICON
。一个资源文件可能是最简单的。是的,我在.rc文件中键入这一行:1图标“icon.ico”,但这与HICON不同,如果我使用HICON“icon.ico”什么也没有发生您通过在资源脚本中使用“icon”指令将图标作为资源存储在可执行文件中,然后使用
LoadImage
加载图标并获取图标的
HICON
。请记住在为Unicode编译时使用
文本(“我的图标”)
使其工作。还要确保你使用了正确的姿势。如果所有内容都在同一个可执行文件中,则GetModuleHandle可以正常工作,但如果加载代码在DLL中且图标在EXE的资源中(反之亦然),则必须更仔细地选择HINSTANCE。请记住在编译Unicode时使用
文本(“我的图标”)
。还要确保你使用了正确的姿势。如果所有内容都在同一个可执行文件中,则GetModuleHandle可以正常工作,但是如果加载代码在DLL中,并且图标在可执行文件的资源中(反之亦然),则必须更仔细地选择HINSTANCE。