VC++7.1リソースコンパイラのバグ?の回避方法教えて – プログラミング – Home

VC++7.1リソースコンパイラのバグ...
 
通知
すべてクリア

[解決済] VC++7.1リソースコンパイラのバグ?の回避方法教えて


yosumura
 yosumura
(@yosumura)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

例えばウィザードでTestRCの名前でダイアログ起動アプリを作成し、メインダイアログ
を以下のように修正します。

ダイアログノードでメインダイアログIDD_TESTRC_DIALOGを選択コピーし、そのまま貼り
付けします。
すると、IDD_TESTRC_DIALOG1が生成されます。
IDD_TESTRC_DIALOG1プロパティで、Conditionに_Aという条件をセットし、その後IDも
IDD_TESTRC_DIALOGに変更します。
同様にもう1個Conditionに_BをもつIDD_TESTRC_DIALOGを作成します。
ダイアログノードを見ると以下の3個のダイアログIDが見えます。
IDD_TESTRC_DIALOG
IDD_TESTRC_DIALOG[_A]
IDD_TESTRC_DIALOG[_B]
その後リソースを保存して、リビルドします。

するとCtrl+F5あるいはF5の度に、『プロジェクトの構成が変更されています。リビルド
しますか?』というメッセージがでます。
ビルドログには、以下のプリプロセッサに対して、warning PRJ0041が出力されます。
#if defined(APSTUDIO_INVOKED) || \
!(defined(_A) || defined(_B))

このプリプロセッサ自体、統合環境が出力したものですが、上記メッセージの原因とな
っています。

上記プリプロセッサ部分を下記のように修正すると、F5のメッセージはいったん出なく
なります。
#if defined(APSTUDIO_INVOKED) || !(defined(_A) || defined(_B))

しかし、リソースエディタで文字列追加等を行い、統合環境にリソースの更新を強いる
と元の状態/記述に戻ります。

どの様に回避すれば、よろしいでしょうか?


引用未解決
トピックタグ
yosumura
 yosumura
(@yosumura)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

自己解決しました。

条件設定後、統合環境から出力されたリソースファイル(.RC)から、条件付リソースシン
ボル部分を全て.RC2にカット&ペーストしました。
文字列等をリソースエディタから追加しても、強制リビルドのメッセージは出なくなり
ました。
今回の場合、.RC2は下記となりました。

///////////////////////////////////////////////////////////////
// 手動で編集されたりソースをここに追加します...

#if defined(APSTUDIO_INVOKED) || !(defined(_A) || defined(_B))
IDD_TESTRC_DIALOG DIALOGEX 0, 0, 320, 200
・・・
BEGIN
・・・
END
#endif

#if defined(APSTUDIO_INVOKED) || defined(_A)
#if defined(APSTUDIO_INVOKED)
IDD_TESTRC_DIALOG$(_A) DIALOGEX 0, 0, 320, 200
#else
IDD_TESTRC_DIALOG DIALOGEX 0, 0, 320, 200
#endif
・・・
BEGIN
・・・
END
#endif

#if defined(APSTUDIO_INVOKED) || defined(_B)
#if defined(APSTUDIO_INVOKED)
IDD_TESTRC_DIALOG$(_B) DIALOGEX 0, 0, 320, 200
#else
IDD_TESTRC_DIALOG DIALOGEX 0, 0, 320, 200
#endif
・・・
BEGIN
・・・
END
#endif

おさがわせしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました