リソースファイル

■リソースファイル

リソースファイルはITでは様々な意図で使われています。

	・CPUのメモリ領域
	・ゲームのテクスチャやサウンドデータ等の外部ファイル
	・実行ファイルに埋め込むための専用データファイル

今回のリソースファイルは「実行ファイルに埋め込むための専用データファイル」についてです。

■リソースファイルの概要

上でも記述していますが、リソースファイルは実行ファイル(EXE)や
ダイナミックリンクライブラリ(DLL)に埋め込むための専用のデータファイルになります。
拡張子は「.rc」でテキストエディタや専用のエディタを使用して作成することができ、
「.rc」ファイルはリソース・スクリプトと呼ばれることもあります。
※VisualStudioでも作成可能ですが、ExpressEditionでは使用できません。

●データの種類
	作成できるデータはアイコンやカーソル、ダイアログ、メニュー等があり、
	種類ごとにファイルの記述内容が異なります。

	例:
		アイコン:
			リソースID ICON ファイル名

		メニュー:
			リソースID MENU メモリオプション
			{
				MENUITEM "メニューアイテム名" リソースID
			}

■リソースファイルの作成(エディタなし)

リソースファイルに必要なファイルはリソースファイル(.rc)と
ヘッダファイル(.h)の二つです。
		
お試し用アイコン 
	
●リソースファイル(.rc)の作成方法
	リソースファイルをエディタなしで作成する場合は
	テキストファイルを作成し、そこにリソーススクリプトを記述します。
	その後拡張子を.rcに変更してVisualStudioに追加します。
			
●ヘッダファイル(.h)
	ヘッダファイルはVisualStudioで追加します。
	ヘッダファイルにはリソースファイルのスクリプトで使用している
	リソース定数の宣言を行います。
	ヘッダファイルのファイル名はresource.hと付けられているケースが多いです。

	注意点:
		ヘッダファイルの最後の行は必ず空行を設定してください。
		改行がない場合、「fatal error RC1004: unexpected end of file found」
		というエラーが発生します。

●MAKEINTRESOURCE
	作成したリソースはLoadIconなどで必要に応じて使用します。
	その際宣言しているリソースIDを文字列に変換する必要ありますので
	MAKEINTRESOURCEを使用します。
			
		LPTSTR MAKEINTRESOURCE(WORD wInteger)
			引数:
				WORD wInteger:
					リソースID
			
			戻り値:
				リソース文字列

			内容:
				リソースIDを文字列に変換する

●アイコンリソースの使用例:
	// res.rc
	#include "resource.h"

	IDI_ICON1 ICON "test.ico"

	// resource.h
	#ifndef _RESOURCE_H_
	#define _RESOURCE_H_

		#define IDI_ICON1 101

	#endif

	// main.cpp
	#include "resource.h"
	#include <windows.h>

	int WINAPI WinMain(HINSTANCE instance, HINSTANCE prev, LPSTR cmdline, int cmdshow)
	{
		// アイコンの作成
		HICON res_icon = LoadIcon(instance, MAKEINTRESOURCE(IDI_ICON1));

		WNDCLASSEX window_class = {
			sizeof(WNDCLASSEX),		// 構造体のサイズ
			CS_HREDRAW | CS_VREDRAW,	// クラスのスタイル
			NULL,				// ウィンドウプロシージャ
			0,				// 補助メモリ
			0,				// 補助メモリ
			instance,			// インスタンスハンドル
			res_icon,			// アイコン画像
			LoadCursor(NULL, IDC_ARROW),	// カーソル画像
			NULL,				// 背景ブラシ(背景色)
			NULL,				// メニュー名
			TEXT("Test"),			// クラス名
			res_icon			// 小さいアイコン
		};

		if (RegisterClassEx(&window_class) == 0)
		{
			MessageBoxA(NULL, "登録失敗", "エラー通知", MB_OK);
		}

		return 0;
	}

■リソースファイルの作成(エディタ使用)

リソースエディタの有名なソフトはResEditです。
(http://www.forest.impress.co.jp/library/software/resedit/)
ResEditを使用することにより、リソーススクリプトを直接作らずに
リソースの作成を行うことが可能です。
		
●初回起動時の設定
	ResEditの初回起動時はVisualstudio等のINCLUDEパスの設定を
	行わなければいけません。
	以下に使用するVisualStudioのバージョンとパスを記述します。

	VisualStudio2013:
		C:\Program Files (x86)\Windows Kits\8.1\Include
		C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include

	VisualStudio2012:
		C:\Program Files (x86)\Windows Kits\8.0\Include
		C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include

●日本語化
	ResEditは言語設定を行うことが可能となっています。
	まずメニューの「オプション(Option)」=>「設定(Preferences)」を選択します。
	すると、オプションウィンドウが表示されるので、
	左側のメニューツリーから「全般(General)」を選択します。
	選択後右側のメニュー内容が変わりますので、
	「Language」項目のドロップダウンメニューから「Japanese」を選択します。
	設定を反映させるには再起動が必要となりますので、ResEditを閉じて
	再起動を行うと、日本語化されます。

●新規プロジェクト作成方法
	1.メニューから「新規プロジェクト」を選択する
	2.Wizardウィンドウで「Resource Script(*rc)」を選択する
	3.LocationとNameの設定を行い「Finish」を選択する

●アイコン作成
	1.画面左端にあるリソースウィンドウで
	  右クリック「リソース追加」=> 「アイコン」を選択する

	2.新規作成なら「Create a new resource」、
	  既存ファイルを使用するなら「Create from an exsting file」を選択する

	3.右側にあるパレットを使用して画像を作成する

	4.適当に何かを書いて保存する

	5.ResEditorプロジェクトを作成した場所に
	  「resource.h」とアイコンが作られているので、
	  VisualStudioのプロジェクトに追加したら使用可能となる