WinXP SP2
VC++6.0 SP%
久しぶりにMFCを使用してダイアログベースのアプリケーションを作成しました
このアプリケーションは日本語表記なので、OSのロケールが日本語以外の場合に、英語表
記のリソースDLLを読み込むようにしました
このとき、アプリケーションのプロジェクト内にあるresource.hの定義と、リソースDLL
内にあるresource.hの定義は共通なので、リソースDLL内のresource.hを削除して、*.rcの
#include resource.h
と記載してあるところを手書きで、アプリのresource.hを参照するように
#include ..\dlgApp\resource.h
(アプリとりそーすDLLは並列したフォルダにおかれているので、
上記の相対パスでresource.hが見つかります)
と、相対パスで記述しました
この状態でビルドすると期待通りの動作をしてくれるのですが、リソースDLLのプロジェ
クトを開いて、リソースを編集すると
#include ..\dlgApp\resource.h
の表記が
勝手に
#include resource.h
と戻ってしまいます
これを防ぐ方法はないでしょうか?
多分ないです。
そもそもrcファイルはIDEのリソースエディタを使った時点で
再編集されてしまう物です。勝手に書き換えは出来ないでしょう。
多分、リソース周りで言われているような事はIDEを使って
リソースを編集するようなプロジェクトではできないと思います。
テキストベースでやるとか言われているような事をする為の
機能があるリソースエディタを探して使えば話は別かもしれませんけれど。
リソーススクリプトファイルの中を見て見たんですが、
最初の行に
//Microsoft Developer Studio generated resource script.
と書いてあります。
と言うことは多分、かかさんが言われているように
IDEが生成しているファイルと言う事になるので
言われているような事は出来ないと私も思います。
resource.h に共通のヘッダを取り込むことならできます。
メニューの[表示]-[インクルードファイルの設定]を見てみてください。
> メニューの[表示]-[インクルードファイルの設定]を見てみてください。
おおっ、ここで色々弄れそうですね。
私も色々実験してみます。
良い話を聞きました。
実験結果。
メニューの[表示]-[インクルードファイルの設定]で
シンボル用のヘッダーファイルの部分のファイル名を書き換えれば、
リソーススクリプト内の物も書き換える事が出来ました。
というか、これでビルドすると訊いてくるので「はい」で答えればいいだけ。
あとはresource.hをインクルードしている所も必要なら書き換えるくらいかな。
ただ、設定しているresource.hがIDEから扱える形式になっていないと
IDEからリソースを弄った時にヘッダーファイルの中がおかしくなるかも。
書き換えてもらいたくない場合は、読み取り専用ヘッダーに入れた方が
良いかもしれませんね。
その辺は考慮が必要かも。
あと、共有するようなヘッダーの場合、あちこちのIDEから編集をすると
内容に矛盾が出てくるかもしれないのでそっちの方が心配ですね。
まあ、追加でヘッダーファイルを追加した場合でも
元々のresource.hの中身とぶつかる定義があると誤動作の可能性があるから
結構、扱いが難しいかもしれませんね。
皆さんご意見ありがとうございます
かかさんのおっしゃられることに納得しました
「
rcファイルはIDEのリソースエディタを使った時点で再編集されてしまう
」
であれば仕方ないですね
また、dairygoodsさんから教えてもらった方法では狙いが異なるのですが、そういう機能
がVCにあることは知らなかったので今後役立てたいと思います
最後に、PATIOさん、実験までしていただいてありがとうございました
それにしても、リソースDLLにおいては、IDの値がアプリと異なる動作しないわけですか
ら、何とかしてもらいたいものだ・・・マイクロソフトに