resource.hへのパス

[戻る]
え〜いち 2006/07/27(木) 15:12:39
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"
と戻ってしまいます
これを防ぐ方法はないでしょうか?

かか 2006/07/27(木) 15:15:59
多分ないです。
そもそもrcファイルはIDEのリソースエディタを使った時点で
再編集されてしまう物です。勝手に書き換えは出来ないでしょう。
多分、リソース周りで言われているような事はIDEを使って
リソースを編集するようなプロジェクトではできないと思います。
テキストベースでやるとか言われているような事をする為の
機能があるリソースエディタを探して使えば話は別かもしれませんけれど。

PATIO 2006/07/27(木) 15:22:51
リソーススクリプトファイルの中を見て見たんですが、
最初の行に

//Microsoft Developer Studio generated resource script.

と書いてあります。
と言うことは多分、かかさんが言われているように
IDEが生成しているファイルと言う事になるので
言われているような事は出来ないと私も思います。

dairygoods 2006/07/27(木) 16:13:57
resource.h に共通のヘッダを取り込むことならできます。
メニューの[表示]-[インクルードファイルの設定]を見てみてください。

PATIO 2006/07/27(木) 16:40:13
> メニューの[表示]-[インクルードファイルの設定]を見てみてください。

おおっ、ここで色々弄れそうですね。
私も色々実験してみます。
良い話を聞きました。

PATIO 2006/07/27(木) 16:58:05
実験結果。

メニューの[表示]-[インクルードファイルの設定]で
シンボル用のヘッダーファイルの部分のファイル名を書き換えれば、
リソーススクリプト内の物も書き換える事が出来ました。
というか、これでビルドすると訊いてくるので「はい」で答えればいいだけ。
あとはresource.hをインクルードしている所も必要なら書き換えるくらいかな。
ただ、設定しているresource.hがIDEから扱える形式になっていないと
IDEからリソースを弄った時にヘッダーファイルの中がおかしくなるかも。
書き換えてもらいたくない場合は、読み取り専用ヘッダーに入れた方が
良いかもしれませんね。
その辺は考慮が必要かも。
あと、共有するようなヘッダーの場合、あちこちのIDEから編集をすると
内容に矛盾が出てくるかもしれないのでそっちの方が心配ですね。
まあ、追加でヘッダーファイルを追加した場合でも
元々のresource.hの中身とぶつかる定義があると誤動作の可能性があるから
結構、扱いが難しいかもしれませんね。

え〜いち 2006/07/27(木) 17:28:42
[[解決]]
皆さんご意見ありがとうございます

かかさんのおっしゃられることに納得しました
「
rcファイルはIDEのリソースエディタを使った時点で再編集されてしまう
」
であれば仕方ないですね

また、dairygoodsさんから教えてもらった方法では狙いが異なるのですが、そういう機能
がVCにあることは知らなかったので今後役立てたいと思います

最後に、PATIOさん、実験までしていただいてありがとうございました

それにしても、リソースDLLにおいては、IDの値がアプリと異なる動作しないわけですか
ら、何とかしてもらいたいものだ・・・マイクロソフトに

古いスレッドには追加発言できません。