dポイントプレゼントキャンペーン実施中!

Visual Studio2005 VC++ のリソースビューに含まれる、String Table の内容を条件によって切り換えたいと考えています。
(より具体的には IDR_MAINFRAMEの文字列だけ変更できればよいのですが。)

String Table以外のリソースであれば、プリプロセッサの定義によって内容を変更できますが、String Tableだけは例外的に切り替えられないようです。

何かよい方法をご存知の方はご教授いただけますと幸いです。

A 回答 (2件)

>リソースファイルを直接編集しても、その後で再びVC++で保存しなお


>すと、編集した箇所が元に戻されてしまうので、前者の対応では目的
>を実現できません。

IDR_MAINFAMEやAFX_IDS_APP_TITLEなどの
定義を.rc2ファイルに記述してはどうでしょうか。
    • good
    • 1
この回答へのお礼

回答をありがとうございます。
そのままrc2ファイルに記述すると、
error RC2151 : cannot reuse string constants,
というエラーが出て、上書きはできないようでしたが、
元のリソースファイルから該当部分を削除して、
rc2のみで記述することで解決いたしました。
これで、目的を達成できそうです。
ありがとうございました。

お礼日時:2007/03/29 12:25

> String Tableだけは例外的に切り替えられないようです。


それはプロジェクト内にStringTableリソースを複数持てないからでしょう。

どうしても静的に定義したいのであれば
リソースファイルを直接編集して
string tableリソースのところで
#ifdef~#elseで定義するとか。

動的でもよいならIDR_MAINFRAMEを%1とかにしておいて
MFCのAfxLoasString1と同様の処理を行うとか。

この回答への補足

さっそくの回答ありがとうございます。
リソースファイルを直接編集しても、その後で再びVC++で保存しなおすと、編集した箇所が元に戻されてしまうので、前者の対応では目的を実現できません。
後者の方法は、リソースから文字列を取得して%1に特定の値を代入すると思いますが、これは私の説明に不足があり、誤解を与えてしまい、申し訳ありません。
変更したいのは、リソースのIDR_MAINFRAMEとAFX_IDS_APP_TITLEで指定される文字列です。
これらの値を後から(動的に)変更することは可能なのでしょうか。

補足日時:2007/03/28 05:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!