実行中のアプリケーションのバージョンに応じて、リソースファイル内のコードを動的に変更したいと考えています。たとえば、メニューについてです。プリプロセッサディレクティブに基づいて異なるメニュー項目について説明したいと思います。私が持っている問題は、コードを追加することができるということです。しかし、リソースファイルを編集して保存すると、.apsファイルがプリプロセッサディレクティブを上書きします。どうすればこの問題を回避できますか?以下のコードは、私のリソーススクリプトに含まれているものの例です。MFC .rcファイルのMENU内でプリプロセッサディレクティブを使用するにはどうすればよいですか?
IDR_EXAMPLE_MENU MENU
BEGIN
/*
Other Menu items
*/
POPUP "&Help"
BEGIN
MENUITEM "&Help Topics", ID_HELP_FINDER
MENUITEM SEPARATOR
#ifdef TEST_APP
MENUITEM "&About TEST...", ID_APP_ABOUT
#else
MENUITEM "&About RELEASE...", ID_APP_ABOUT
#endif
END
END
私はテストバージョンを実行している場合は、私は、メニュー項目に「TESTについて」を表示するようにしている場合RELEASEバージョンは私がのようなコードを追加することができますどのように 「RELEASEについて」を表示するためにそれをしたいと思い、それをしたいと思います.resファイルを.rcファイルを保存するときにプリプロセッサのディレクティブを上書きしなくても、これを自分のリソースファイルに保存できますか?
編集:This explains how files are affected by resource editing.
あなたは、ID_APP_ABOUTMENU'永続的に "...&RELEASEについて" 二つの異なるコマンド 'MENUITEM "&TESTについて..."、ID_APP_ABOUTTEST'と' MENUITEMを持っている可能性があり、対応に動的にそれらのいずれかを削除し ' OnUpdate'ハンドラ。それはとても簡単です。これがオプションであれば教えてください。私はより完全な答えを書いていきます。これにより、VSリソースエディタを使用する場合に問題となるプリプロセッサコマンドの使用を完全に回避することができます。 –
これは1つの可能な解決策かもしれません。コードベースのほとんどはプリプロセッサを使用していますので、他の場所でどのように処理されるかという理由だけで、そうすることができます。あなたが書きたいと思うなら、私は完全な答えを見るのが好奇妙です。 – sebenalern
私はちょうどあなたがAの解決策を受け入れたのを見ました。私が以前のコメントで示唆したように、あなたがまだ答えに興味があるかどうか教えてください。 –