FreeGlut を使用して一部のデータを視覚化する C++ で記述された DLL があります。メインの (無料) glut ウィンドウのアイコンを変更したい。
私はそれが不可能だと読んだことがありますが、ドキュメントには次のように書かれています:
GLUT_ICON - freeglut ウィンドウの左上隅に表示されるアイコンを指定します。
可能であれば、(無料) glut ウィンドウのアイコンを変更するにはどうすればよいですか?
わかりました、私はそれをしました:
IDI_ICON1
。次のように glut ウィンドウを作成します。
glutCreateWindow("VIZ");
HWND hwnd = FindWindow(NULL, _T("VIZ") ); //probably you can get the window handler in different way..
アイコンを取得します。これは、IDI_ICON1 ID を持つ DLL ファイルにあるため、以下を使用します。
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.
//...
このメッセージをウィンドウに送信します。
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
?