1

FreeGlut を使用して一部のデータを視覚化する C++ で記述された DLL があります。メインの (無料) glut ウィンドウのアイコンを変更したい。

私はそれが不可能だと読んだことがありますが、ドキュメントには次のように書かれています:

GLUT_ICON - freeglut ウィンドウの左上隅に表示されるアイコンを指定します。

可能であれば、(無料) glut ウィンドウのアイコンを変更するにはどうすればよいですか?

4

1 に答える 1

4

わかりました、私はそれをしました:

  1. プロジェクトのリソースを作成し、32x32 アイコンを追加します (編集またはインポート)。このアイコンは と等しい ID を取得しますIDI_ICON1
  2. 「resource.h」ファイルを含めます。
  3. 次のように 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

于 2012-10-06T01:00:48.570 に答える