(UTF-8, Japanese)
新しいリソーエディタのリソース情報は、以下のガイドラインに従うべきです。 古いリソーエディタのデータを使っているなら、以下のガイドラインを適用する必要があります。
- 「リソースID」とは、Win32リソースデータに使われるIDです。
- 「IDプレフィックス」とは、リソースIDのプレフィックス (prefix) です。
- 「エンティティ リソース」とは、RT_ICON、RT_CURSOR、RT_STRING、RT_MANIFEST、RT_VERSION、そしてRT_MESSAGETABLE以外のリソースデータです。
- エンティティ リソースの「リソース名」とは、16ビット整数値か、ワイド文字列か、16ビット整数値のマクロです。
- RT_ICONタイプのリソースデータは、RT_GROUP_ICON タイプのリソースデータによって参照されます。
- RT_CURSORタイプのリソースデータは、RT_GROUP_CURSOR タイプのリソースデータによって参照されます。
- RT_STRINGまたはRT_MESSAGETABLEリソースは、複数のリソースIDを含むことができます。
- RT_MANIFESTまたはRT_VERSIONのリソースIDは特別な意味を持ちます。
- 「ユーザーリソース」とは、ユーザーのプロジェクトが直接提供し、かつ、他のプロジェクトやフレームワークによって提供されない、Win32リソースデータです。
- 「ユーザーID」とは、ユーザーのプロジェクトが直接提供し、かつ、他のプロジェクトやフレームワークによって提供されないリソースIDです。
- 「アイコンID」とは、RT_GROUP_ICON タイプのリソースIDです。
- 「カーソルID」とは、RT_GROUP_CURSOR タイプのリソースIDです。
- 「文字列ID」とは、文字列テーブルの中の1個の文字列データのIDです。
- 「メッセージID」とは、メッセージテーブルの中の1個のメッセージデータのIDです。
Visual C++互換性のために、ファイル「resource.h」の中身は、次のようなC++コメントで始まるべきです。
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ Compatible
// TheProject.rc
ここで、「TheProject.rc」は、この「resource.h」に対する実際のリソースファイル名で置き換えなければなりません。
ファイル「resource.h」は、インクルードガードを使うべきではありません。
ファイル「resource.h」の中で、文字列マクロを使わないで下さい。文字列値のリソースIDを使わないで下さい。
もし、rcファイルがシステムヘッダーの#includeを有するなら、そのインクルードは、次のように包まれるべきです:
#define APSTUDIO_HIDDEN_SYMBOLS
#include <windows.h>
#include <commctrl.h>
#undef APSTUDIO_HIDDEN_SYMBOLS
ファイル「resource.h」の中身は、次のようなテキストで終わるべきです:
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 1000
#define _APS_NEXT_COMMAND_VALUE 220
#define _APS_NEXT_CONTROL_VALUE 1002
#define _APS_NEXT_SYMED_VALUE 300
#endif
#endif
ここに、_APS_NO_MFC マクロの値は1であるべきです。 ここに、_APS_NEXT_RESOURCE_VALUE マクロの値は、すべてのユーザー エンティティ リソースの最大整数値 + 1でなければなりません。 ここに、_APS_NEXT_COMMAND_VALUE マクロの値は、すべてのユーザー コマンド IDの最大整数値 + 1でなければなりません。 ここに、_APS_NEXT_CONTROL_VALUE マクロの値は、すべてのユーザー コントロールIDの最大整数値 + 1でなければなりません。 ここに、_APS_NEXT_SYMED_VALUE マクロの値は無視するべきです。
「resource.h」で定義されるユーザーIDプレフィックスは次の表に従うべきです:
IDタイプ | IDプレフィックス |
---|---|
String ID | IDS_ |
Message ID | MSGID_ |
Command ID | ID_ |
Command ID (Old Type) | IDM_ |
Control ID | IDC_ |
Cursor ID | IDC_ |
Icon ID | IDI_ |
Dialog ID | IDD_ |
Bitmap ID | IDB_ |
その他のエンティティID | IDR_ |
Window ID | IDW_ |
Help ID | HID_ |
「IDP_」プレフィックスは使わないで下さい。
「resource.h」で定義されるユーザーIDは、次の表の範囲であるべきです。
IDタイプ | 束縛範囲 | 好ましい範囲 |
---|---|---|
String ID | 1~0x7FFF | 100~0x7FFF |
Message ID | 0~0xFFFFFFFF | 1~0x7FFFFFFF |
Command ID | 1~0x7FFF | 100~0x7FFF |
Command ID (Old Type) | 1~0x7FFF | 100~0x7FFF |
Control ID | 8~0xDFFF | 1000~0x7FFF |
Cursor ID | 1~0x7FFF | 100~999 |
Icon ID | 1~0x7FFF | 100~999 |
Dialog ID | 1~0x7FFF | 100~0x7FFF |
Bitmap ID | 1~0x7FFF | 100~0x7FFF |
その他のエンティティID | 1~0x7FFF | 100~0x7FFF |
Window ID | 1~0x7FFF | 1~0x7FFF |
Help ID | 0~0xFFFFFFFF | 1~0x7FFFFFFF |
同じIDプレフィックスの2つの異なるリソースIDは、互いに違う値を持つべきです。 「IDC_」のリソースIDは、コントロールIDか、カーソルIDです。 もし、我々がIDの好ましい範囲に従えば、コントロールIDとカーソルIDは衝突しません。
Visual C++ 互換性のために、リソースファイルは、以下のような3個のTEXTINCLUDEデータを有しなければなりません:
#ifdef APSTUDIO_INVOKED
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include <windows.h>\r\n"
"#include <commctrl.h>\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
「resource.h」ファイルのリソースファイルは、CコメントよりもC++コメントを使うべきです。