- ベストアンサー
String Table リソースを条件によって切り換えたい(VS2005)
Visual Studio2005 VC++ のリソースビューに含まれる、String Table の内容を条件によって切り換えたいと考えています。 (より具体的には IDR_MAINFRAMEの文字列だけ変更できればよいのですが。) String Table以外のリソースであれば、プリプロセッサの定義によって内容を変更できますが、String Tableだけは例外的に切り替えられないようです。 何かよい方法をご存知の方はご教授いただけますと幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>リソースファイルを直接編集しても、その後で再びVC++で保存しなお >すと、編集した箇所が元に戻されてしまうので、前者の対応では目的 >を実現できません。 IDR_MAINFAMEやAFX_IDS_APP_TITLEなどの 定義を.rc2ファイルに記述してはどうでしょうか。
その他の回答 (1)
- FAY
- ベストアンサー率49% (95/193)
> String Tableだけは例外的に切り替えられないようです。 それはプロジェクト内にStringTableリソースを複数持てないからでしょう。 どうしても静的に定義したいのであれば リソースファイルを直接編集して string tableリソースのところで #ifdef~#elseで定義するとか。 動的でもよいならIDR_MAINFRAMEを%1とかにしておいて MFCのAfxLoasString1と同様の処理を行うとか。
補足
さっそくの回答ありがとうございます。 リソースファイルを直接編集しても、その後で再びVC++で保存しなおすと、編集した箇所が元に戻されてしまうので、前者の対応では目的を実現できません。 後者の方法は、リソースから文字列を取得して%1に特定の値を代入すると思いますが、これは私の説明に不足があり、誤解を与えてしまい、申し訳ありません。 変更したいのは、リソースのIDR_MAINFRAMEとAFX_IDS_APP_TITLEで指定される文字列です。 これらの値を後から(動的に)変更することは可能なのでしょうか。
お礼
回答をありがとうございます。 そのままrc2ファイルに記述すると、 error RC2151 : cannot reuse string constants, というエラーが出て、上書きはできないようでしたが、 元のリソースファイルから該当部分を削除して、 rc2のみで記述することで解決いたしました。 これで、目的を達成できそうです。 ありがとうございました。