1
我有一個使用FreeGlut可視化一些數據的C++編寫的DLL。我想更改主(免費)過剩窗口的圖標。如何更改C++中的freeglut主窗口圖標?
我讀過,這是不可能的,但在我的文檔看:
GLUT_ICON - 指定雲在freeglut窗口的左上角處的圖標。
如果可能,我該如何更改(免費)過剩窗口的圖標?
我有一個使用FreeGlut可視化一些數據的C++編寫的DLL。我想更改主(免費)過剩窗口的圖標。如何更改C++中的freeglut主窗口圖標?
我讀過,這是不可能的,但在我的文檔看:
GLUT_ICON - 指定雲在freeglut窗口的左上角處的圖標。
如果可能,我該如何更改(免費)過剩窗口的圖標?
OK,我做到了:
IDI_ICON1
的ID。創建過剩窗口是這樣的:
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文件。如果你喜歡,你可以ommit資源文件並加載圖標,:
icon = LoadImage(GetModuleHandle(), _T("icon.ico"), IMAGE_ICON, 32, 32, LR_LOADFROMFILE | LR_COLOR);
您還可以使用LoadIcon功能,但你不能選擇圖標的大小。
手冊: LoadImage SendMessage LoadIcon
編輯:
我認爲這不是最好的解決辦法,所以歡迎您你寫。也許使用GLUT_ICON
?