Setting program icon without resources using the WIN32 API
我正在使用Visual Studio的快速版本。 因此,使用函数调用MAKEINTRESOURCE是不可能的。 我正在尝试通过覆盖getAdditionalClassInfo函数来设置应用程序图标。
1 2 3 4 5 6 7 | WNDCLASSW *Robot::getAdditionalClassInfo(void) const { WNDCLASSW *wc = Window::getAdditionalClassInfo(); HANDLE hIcon = LoadImage(NULL, L"imagepath/image.png", 32, 32, LR_LOADFROMFILE); wc->hIcon = .....; return wc; } |
有谁知道我可以不使用资源来设置此图标的方法?
我的建议是,如果您想使用PNG并能够更改图标,请使用FreeImage加载它。 然后,您可以使用FreeImage相当轻松地将其转换为标准HBITMAP。
如果您可以使用实际的图标文件,则在创建窗口后即可执行以下操作:
1 2 3 4 5 6 7 8 9 10 | HANDLE hIcon = LoadImage(0, _T("imagepath/image.ico"), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE); if (hIcon) { //Change both icons to the same icon handle. SendMessage(hwnd, WM_SETICON, ICON_SMALL, hIcon); SendMessage(hwnd, WM_SETICON, ICON_BIG, hIcon); //This will ensure that the application icon gets changed too. SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_SMALL, hIcon); SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_BIG, hIcon); } |
您可能可以在