例えばウィザードで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))
しかし、リソースエディタで文字列追加等を行い、統合環境にリソースの更新を強いる
と元の状態/記述に戻ります。
どの様に回避すれば、よろしいでしょうか?
自己解決しました。
条件設定後、統合環境から出力されたリソースファイル(.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
おさがわせしました。