Visual Studio 2005 で C++ でプログラミングしています。私の質問は .rc ファイルに関するものです。(#include "blah.h") のようなインクルード ディレクティブを .rc ファイルの先頭に手動で配置できます。しかし、リソース エディタで初めて .rc ファイルを開くと上書きされるので、これは悪いニュースです。これらの定義を作成してゴミ箱に入れないようにする場所があることは知っていますが、見つけることができず、グーグルは役に立ちませんでした。誰でも知っていますか?
5 に答える
通常の方法で#includeをファイルに追加しますが、次のように、ファイル内の3つの「TEXTINCLUDE」セクションの1つにも追加します。
2 TEXTINCLUDE
BEGIN
"#include ""windows.h""\r\n"
"#include ""blah.h\r\n"
"\0"
END
次の詳細に注意してください。
- 各行は引用符で囲まれています
- 引用符のペアを使用します。たとえば、「」を使用して引用符をインラインに配置します
- 各行を\r\nで終了します
- TEXTINCLUDEブロックを「\0」で終了します
「1TEXTINCLUDE」ブロックに配置されたステートメントは、ファイルがリソースエディターによって再書き込みされるときに、.rcファイルの先頭に書き込まれます。2ブロックと3ブロックに配置されたステートメントが続くため、適切な番号のブロックを使用することで、相対インクルードファイルの順序を保証できます。
既存のrcファイルにTEXTINCLUDEブロックがまだ含まれていない場合は、ソリューションエクスプローラーペインの新しいファイルウィザードを使用して新しいrcファイルを追加し、それをテンプレートとして使用します。
コンパイル時にリソースを含める(MSDN)。
Visual Studio IDE 内で、.rc ファイル (リソース ビュー パネル内) を右クリックし、ショートカット メニューから [リソース インクルード] を選択します。ダイアログが開いたら、「コンパイル時ディレクティブ」領域を使用して、.rc ファイルに含めたいものを入力します。たとえば、64 ビット ビルドと 32 ビット ビルドで異なるアイコンを使用する場合は、次のように各ビルドに適切なリソース ファイルを含めることができます。
#ifdef WIN64
#include "Icons64.rc"
#else
#include "Icons32.rc"
#endif
これらの定義は、デフォルトではリソース コンパイラに設定されていないことに注意してください。そのため、64 ビット ビルドの場合は、必ず /DWIN64 を rc ビルドに追加してください。
詳細については、MFC Technote #35を参照してください。
-ロン
なぜそうしようとしているのかは完全にはわかりませんが、リソース ファイルを手動で変更することはおそらく良い考えではありません。
グローバルにアクセス可能な値に対する VC++ の一般的な方法は、それらを stdafx.h で定義するか (少なくとも私が見た方法です)、または "globals.h" ヘッダー ファイルのようなものを作成し、それをどこにでも含めることだと思います。それが必要。ただし、それは実際に何を達成しようとしているかによって異なります。