Home | Lesson | Game | Tool | Link

A07.アイコン設定

実行ファイルやメニューバーのアイコンを独自のものに変更します。
※ただし、Windowsだけで有効です。



リソースの追加方法
1.メニューから「挿入」→「リソース」を選択します。
2.「リソースの挿入」ダイアログが表示されるので、「Icon」を選択します。
 アイコンを作る場合は新規作成を、用意してある場合はインポートを選びます。
3.アイコンの追加/作成が終わったら、「Ctrl+S」を押して保存します。
 ファイル名は「Script1.rc」のままでかまいません。
4.自動的に「resource.h」が作成されてあることを確認してください。
5.プロジェクトに「resource.h」と「Script1.rc」を追加してください。
6.ビルドしなおすと、実行ファイルのアイコンが変更されます。

ヘッダファイル追加
自動生成されたresource.hをインクルードしておきます。
#ifdef WIN32
	#include <windows.h>
	#include "resource.h"
	#pragma comment(lib, "Irrlicht.lib")
#endif

アイコンの設定
メニューバーのアイコンも変更します。
1.まずは、ウインドウタイトルを元に、ウインドウハンドルを取得します。
2.アイコンをリソースから取得します。
3.アイコン変更のメッセージを送信します。
下のアイコンを直接変更する方法は、実行ファイルと一緒にアイコンファイルも
同梱する必要があるので注意が必要です。
	//ウインドウタイトル設定
	device->setWindowCaption(L"Irrlicht");

	//アイコン変更(EXEはリソース追加だけでOK)
	HWND hWnd = FindWindow(NULL,"IrrLicht"); 
	HICON hIcon = (HICON)LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));//リソースから
	SendMessage(hWnd,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);

	//アイコンを直接変更する場合
	//HICON hIcon = (HICON)LoadImage(NULL,"icon.ico",IMAGE_ICON,0,0,LR_LOADFROMFILE);


	while(device->run())
	{


ウインドウハンドルの取得
上記の場合、ウインドウキャプションに変更があった場合(FPS表示など)に、
正常に変更できない場合があります。
そこで、Irrlichtで用意されている関数でウインドウハンドルを取得する方法も紹介します。

//OSのデータを取得します。
SExposedVideoData exposedData = driver->getExposedVideoData();
//ハンドルをキャストします。使用しているOS/ドライバに合ったものを使用してください。
//HWND hWnd = reinterpret_cast<HWND>(exposedData.D3D8.HWnd);		//DirectX8
//HWND hWnd = reinterpret_cast<HWND>(exposedData.D3D9.HWnd);		//DirectX9
HWND hWnd = reinterpret_cast<HWND>(exposedData.OpenGLWin32.HWnd);	//OpenGL


アイコン変更
アイコンも変更できるようになると、自作感が出て製作の励みになるでしょう。

ダウンロード
今回作成したファイル一式です。

宿題
1.オリジナルのアイコンを作成して反映させてみましょう。