方法: シンボルの管理
リソースまたはリソース オブジェクトを新規作成すると、IDD_DIALOG1
などの既定のシンボル名が開発環境によって割り当てられます。 [プロパティ] ウィンドウを使用して、既定のシンボル名を変更したり、既にリソースに関連付けられているシンボルの名前を変更したりできます。
1 つのリソースに関連付けられているシンボルの場合は、[プロパティ] ウィンドウを使用してシンボル値を変更することもできます。 [リソース シンボル] ダイアログ ボックスを使用すると、現在リソースに割り当てられていないシンボルの値を変更できます。
通常は、すべてのシンボル定義が Resource.h
に保存されます。 ただし、同じディレクトリ内の複数のリソース ファイルを使用する場合などに、このインクルード ファイル名の変更が必要になることがあります。
Note
プロジェクトに .rc ファイルがまだ含まれていない場合は、「方法: リソースの作成」を参照してください。
シンボル名の制限
シンボル名に関する制限は、次のとおりです。
ヘッダー ファイル内のシンボル定義の競合を防ぐために、すべてのシンボルはアプリケーションのスコープ内で一意である必要があります。
シンボル名で有効な文字は、A ~ Z、a ~ z、0 ~ 9、およびアンダー スコア (_) です。
シンボル名を数字で始めることはできず、247 文字までに制限されます。
シンボル名にスペースを使用することはできません。
シンボル名で大文字と小文字は区別されませんが、最初のシンボル定義での大文字と小文字の区別は維持されます。
シンボルを定義するヘッダー ファイルは、リソース ファイルで定義されているリソースを参照するために、リソース コンパイラ/エディターと C++ プログラムの両方で使用されます。 大文字か小文字かだけが異なる 2 つのシンボル名の場合、C++ プログラムは 2 つの個別のシンボルと見なしますが、リソース コンパイラ/エディターはどちらの名前も 1 つのシンボルを指していると見なします。
Note
以下に概要が示されている標準シンボル名スキーム (ID*_[キーワード]) に従わず、シンボル名がリソース スクリプト コンパイラで使用されているキーワードと同じである場合、リソース スクリプト ファイルをビルドしようとすると、ランダムであるように見えるエラーが発生し、診断が困難になります。 これを回避するには、標準名前付けスキームに従います。
シンボル名には説明的なプレフィックスがあり、対象となるリソースやオブジェクトの種類を示します。 これらの説明的なプレフィックスは、テキストを組み合わせた ID で始まります。 Microsoft Foundation Class (MFC) ライブラリでは、以下の表に示されているシンボルの名前付け規則が使用されています。
カテゴリ | プレフィックス | 使用 |
---|---|---|
リソース | IDR_、IDD_、IDC_、IDI_、IDB_ | アクセラレータまたはメニュー (および関連付けられているかカスタムのリソース) ダイアログ ボックス、カーソル、アイコン、ビットマップ |
メニュー項目 | ID_ | メニュー項目 |
コマンド | ID_ | command |
コントロールと子ウィンドウ | IDC_ | コントロール |
文字列 | IDS_ | 文字列テーブル内の文字列 |
MFC | AFX_ | 定義済みの MFC シンボル用に予約されています |
シンボル名 (ID) を変更するには
[リソース ビュー]で、リソースを選択します。
[プロパティ] ウィンドウで、新しいシンボル名を入力するか、または [ID] ボックスの既存のシンボルの一覧からシンボルを選択します。
新しいシンボル名を入力すると、値が自動的に割り当てられます。
Note
[リソース シンボル] ダイアログ ボックスを使用すると、現在リソースに割り当てられていないシンボルの名前を変更できます。
シンボル値の制限
シンボル値には、#define
プリプロセッサ ディレクティブに対して通常の方法で表現される整数を指定できます。 シンボル値の例をいくつか次に示します。
18
4001
0x0012
-3456
アクセラレータ、ビットマップ、カーソル、ダイアログ ボックス、アイコン、メニュー、文字列テーブル、およびバージョン情報などリソースのシンボル値は、0 ~ 32,767 の範囲の 10 進値である必要があります。16 進値は使用できません。 一部のリソース (ダイアログ ボックスのコントロールや文字列テーブルの個々の文字列など) のシンボル値には、0 ~ 65,534 または、-32,768 ~ 32,767 の範囲の値を使用できます。 数値の範囲の詳細については、「テクニカル ノート 23: MFC の標準リソース」を参照してください。
リソース シンボルは、16 ビットの数値です。 これらは符号付きまたは符号なしとして入力できますが、内部では符号なし整数として使用されるため、負の値は対応する正の値にキャストされます。
シンボル値のいくつかの制限を次に示します。
Visual Studio 開発環境と MFC では、特殊な目的でいくつかの数値の範囲を使用しています。 最上位ビットが設定されたすべての数値 (符号に応じて -32,768 ~ -1 または 32,768 ~ 65,534) は MFC によって予約されています。
他のシンボル文字列を使用してシンボル値を定義することはできません。 たとえば、次のシンボル定義はサポートされません。
#define IDC_MYEDIT IDC_OTHEREDIT //not supported
引数を持つプリプロセッサ マクロを値の定義として使用することはできません。 以下の例は、コンパイル時に
ID
がどのような値に評価されるかに関係なく、有効な式ではありません。#define IDD_ABOUT ID(7) //not supported
アプリケーションには、式を使用して定義されたシンボルを含む既存のファイルが存在する可能性があります。
シンボル値を変更するには
[リソース ビュー]で、リソースを選択します。
[プロパティ] ウィンドウの [ID] ボックスで、シンボル名、等号、整数の順に入力します。たとえば、次のように入力します。
IDC_EDITNAME=5100
新しい値は、次回のプロジェクトの保存時に、シンボル ヘッダー ファイルに格納されます。 検証後は、[ID] ボックスに等号と値は表示されず、シンボル名だけが表示されます。
シンボルの変更または削除
[リソース シンボル] ダイアログ ボックスでは、リソースまたはオブジェクトにまだ割り当てられていない既存のシンボルを編集または削除することができます。
未使用のシンボルを変更するには
[名前] ボックスで未使用のシンボルを選択し、[変更] を選択します。
[シンボルの変更] ダイアログ ボックスに表示されたシンボルの名前または値を編集します。
Note
リソースまたはオブジェクトに割り当てられているシンボルを変更するには、リソース エディターか [プロパティ] ウィンドウを使用する必要があります。
割り当てられていない (使用されていない) シンボルを削除するには
[リソース シンボル] ダイアログ ボックスで、削除するシンボルを選択し、[削除] を選択します。
Note
リソース ファイル内の未使用のシンボルを削除する前に、プログラム内の他の場所や、コンパイル時に含められるリソース ファイルで使用されていないことを確認してください。
記号を含める
別のアプリケーションによって作成されたリソース ファイルを開発環境に初めて読み取るとき、インクルードされるすべてのヘッダー ファイルが読み取り専用とマークされます。 ただし、[リソース インクルード] ダイアログ ボックスを使用して、他の読み取り専用のシンボル ヘッダー ファイルを追加できます。
読み取り専用のシンボル定義を使用する状況の 1 つに、複数のプロジェクト間でシンボル ファイルを共有する場合があります。
インクルードされるシンボル ファイルは、単純な整数の代わりに式を使用してシンボル値を定義するシンボル定義を含む既存のリソースがあるときに使用することもできます。 次に例を示します。
#define IDC_CONTROL1 2100
#define IDC_CONTROL2 (IDC_CONTROL1+1)
計算型シンボルは、次の条件が満たされる場合に環境によって適切に解釈されます。
計算型シンボルが読み取り専用シンボル ファイルに配置されている。
これらの計算型シンボルが既に割り当てられているリソースがリソース ファイルに含まれている。
数値式が求められる。
Note
文字列または数値式が求められる場合、式は評価されません。
共有 (読み取り専用) シンボルをリソース ファイルに含めるには
[リソース ビュー] で、.rc ファイルを右クリックし、[リソース インクルード] を選択します。
[読み取り専用ヘッダー ファイル] ボックスで、
#include
コンパイラ ディレクティブを使用して、読み取り専用シンボルを格納するファイルを指定します。Resource.h
ファイルを呼び出さないでください。これは、通常、メイン シンボル ヘッダー ファイルで使用されるファイル名です。Note
[読み取り専用ヘッダー ファイル] ボックスに入力した内容がそのままリソース ファイルに反映されます。 入力ミスや構文エラーがないことを確認してください。
[読み取り専用ヘッダー ファイル] ボックスは、シンボル定義を含むファイルをインクルードするためにのみ使用してください。 リソース定義をインクルードする目的には使用しないでください。そうでないと、ファイルを保存したときに重複するリソース定義が作成されます。
指定したファイルにシンボルを配置します。
この方法でインクルードされるファイル内のシンボルは、リソース ファイルを開くたびに評価されますが、ファイルを保存するときにディスク上で置き換えられません。
[OK] を選択します。
リソースのシンボル用のヘッダー ファイルの名前を変更するには
[リソース ビュー] で、.rc ファイルを右クリックし、[リソース インクルード] を選択します。
[シンボル用のヘッダー ファイル] ボックスで、インクルード ファイルの新しい名前を入力します。
要件
Win32