使用对话框窗口C Win32 API上的图标

codeday· 2019-11-08
本文来自 codeday ,作者 codeday
我正在尝试创建一个顶部带有图标的对话框.

我正在使用资源文件来加载图标.

IDI_ICON1          ICON           ".\usb.ico"

我尝试使用以下代码设置窗口图标.

SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)IDI_ICON1);
SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)IDI_ICON1);

hwnd是窗口.结果,我得到一个蓝色圆圈,看起来就像是Windows 7和Vista的加载图标.我几乎肯定正在正确加载图标,因为当我查看任务栏时,我的程序有代表我程序的图标.如果你需要我用于对话窗口的代码,请告诉我我会发布它.我在Windows 7上使用mingw32 C编译器.谢谢!

最佳答案
使用LoadIcon并将图标句柄传递给WM_SETICON.

HICON hicon = LoadImageW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(IDI_ICONMAIN), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE);
SendMessageW(hwnd, WM_SETICON, ICON_BIG, hicon);