我有一个用C ++编写的DLL,它使用FreeGlut可视化一些数据。我想更改主(免费)过剩窗口的图标。
我读过这是不可能的,但在我看到的文档中:
GLUT_ICON - 指定freeglut窗口左上角的图标。
如果可能,如何更改(免费)过剩窗口的图标?
答案 0 :(得分:3)
好的,我做到了:
IDI_ICON1
。像这样创建过剩窗口:
glutCreateWindow("VIZ");
HWND hwnd = FindWindow(NULL, _T("VIZ") ); //probably you can get the window handler in different way..
现在获取图标 - 它位于您的DLL文件中,IDI_ICON1为id,因此我们使用:
HANDLE icon = LoadImage(GetModuleHandle(_T("NAME_OF_YOUR_DLL")), MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 32, 32, LR_COLOR );
//You can also prepare second, smaller (16x16) icon - it looks better in title bar.
//...
现在将此消息发送到Window。
SendMessage(hwnd, (UINT)WM_SETICON, ICON_BIG, (LPARAM)icon);
就是这样!可能一些清洁会很好。
此解决方案不需要部署.ico文件。如果您愿意,可以使用以下命令省略资源文件和加载图标:
icon = LoadImage(GetModuleHandle(), _T("icon.ico"), IMAGE_ICON, 32, 32, LR_LOADFROMFILE | LR_COLOR);
您也可以使用LoadIcon功能,但无法选择图标大小。
手册: LoadImage SendMessage LoadIcon
修改强>
我认为这不是最好的解决方案,所以欢迎你写你的。也许使用GLUT_ICON
?