次の方法で共有


コンパイル時のリソースのインクルード

更新 : 2007 年 11 月

通常、すべてのリソースの既定の配置を 1 つのリソース スクリプト (.rc) ファイル内で行うと、簡単で便利です。ただし、ほかのファイルにあるリソースを [リソース インクルード] ダイアログ ボックスの [コンパイル時に追加するファイル] ボックスにリストすると、そのリソースをコンパイル時に現在のプロジェクトに追加できます。

メインの .rc ファイル以外のファイルにリソースを置く理由は次のとおりです。

  • .rc ファイルの保存時に、削除しないコメントをリソースのステートメントに追加する場合。

    .rc ファイルや resource.h ファイルは、直接リソース エディタで読み込むことができません。リソース コンパイラはこれらのコードをリソース エディタが使用する .aps ファイルにコンパイルします。このファイルはコンパイル手順で使用されるファイルであり、シンボリック データを格納するだけです。通常のコンパイル プロセスでは、シンボリック以外の情報 (コメントなど) はコンパイル プロセス中に破棄されます。.aps ファイルが .rc ファイルとの同期から離れるときは、常に .rc ファイルが再生成されます。たとえば、保存を実行すると、リソース エディタは .rc ファイルと resource.h ファイルを上書きします。リソース自体に加えられた変更は .rc ファイルに組み込まれますが、コメントは .rc ファイルが上書きされるたびに失われます。

  • 既に開発とテストが完了し、それ以上の変更を必要としないリソースをインクルードする場合。インクルードされるファイルに拡張子 .rc が付いていない限り、リソース エディタでは編集できません。

  • 複数の異なるプロジェクトで使用されるリソース、またはソース コードのバージョン管理システムの一部であり、変更内容がすべてのプロジェクトに反映されるような中心となる場所に置く必要のあるリソースをインクルードする場合。

  • RCDATA リソースなど、カスタム形式のリソースをインクルードする場合。RCDATA リソースは、特別な要件を伴うことがあります。たとえば、nameID フィールドの値として式を使用できません。詳細については、Windows SDK のドキュメントを参照してください。

既存の .rc ファイルにこれらの条件のいずれかに当てはまるセクションがある場合は、そのセクションを 1 つ以上の別個の .rc ファイルに置き、[リソース インクルード] ダイアログ ボックスを使用してプロジェクトにインクルードする必要があります。そのために、新しいプロジェクトの \res サブディレクトリに作成された Projectname.rc2 ファイルが使用されます。

コンパイル時にリソースをプロジェクトにインクルードするには

  1. 一意のファイル名を持つリソース スクリプト ファイルにリソースを置きます。projectname.rc は、メインのリソース スクリプト ファイルに使用されるファイル名であるため、使用しないでください。

  2. リソース ビューで .rc ファイルを右クリックし、ショートカット メニューの [リソース インクルード] をクリックします。

  3. [コンパイル時に追加するファイル] ボックスで、開発環境のメイン リソース ファイルに新しいリソース ファイルをインクルードする #include コンパイラ ディレクティブを追加します。

    この方法でインクルードしたファイル内のリソースは、コンパイル時に実行可能ファイルの一部になります。これらのリソースは、プロジェクトのメイン .rc ファイルでの作業中には直接編集または変更できません。インクルードした .rc ファイルを個別に開く必要があります。インクルードされるファイルに拡張子 .rc が付いていない場合は、リソース エディタで編集できません。

マネージ プロジェクトにリソースを追加する方法については、『.NET Framework 開発者ガイド』の「アプリケーションのリソース」を参照してください。マネージ プロジェクトにリソース ファイルを手動で追加する方法、リソースへのアクセス方法、静的なリソースの表示方法、およびリソース文字列をプロパティに割り当てる方法については、「チュートリアル : Windows フォームのローカリゼーション」および「チュートリアル : ASP.NET でのローカリゼーションのためのリソースの使用」を参照してください。

必要条件

Win32

参照

参照

リソース ファイル (Visual Studio)

リソース エディタ