リソースファイルに手動でダイアログをマージする方法
注意事項
この方法が推奨される方法かどうかは不明です。
自己責任で真似てください。
事前準備
- ダイアログや画面パーツのIDが被っている箇所は先にダイアログエディタで修正しておく。
- 後から被ってることがわかると大変面倒です。
マージ手順
- マージ元のリソースファイル(〜.rc)のコードを開く
- コードの「DESIGNINFO」の中のマージしたいダイアログの宣言をマージ元にコピペ。
//////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTDIO_INVOKED GUIDELINES DESIGNINFO BEGIN // ここから ダイアログ名1, DIALOG BEGIN … END // ここまで ダイアログ名1, DIALOG BEGIN … END … END
- 同じく「Dialog」の中身もコピペ
//////////////////////////////////////////////////////////////////////////// // // Dialog // // ここから IDD_DIALOG_〜 DIALOGEX 0, 0, 204, 106 STYLE 〜 CAPTION "ダイアログ1" FONT 〜 BEGIN … END // ここまで
- あと「menu」とか「stringTable」とかもあれば同じくコピペ。
- ヘッダーファイル「Resource.h」より今回コピーしたいダイアログとパーツのIDをマージ元にコピー。
- エディタでIDを変えた場合、変更前のIDも参照している場合があるので、それも持って行くこと。
- コピーした後、IDを振り替えるが、以下の点に注意。
- IDを変えた場合、変更前と変更後の#defineの値はそれぞれ同じにすること。
- 追加した後、エディタが参照する next value も修正すること。
#define IDD_DIALOG〜 146 … // Next default values for new objects // #ifdef APSTDIO_INVOKED #ifndef APSTDIO_READONLY_SYMBOLS #define _APS_NEXT_RESORCE_VALUE 147 // これらの値を追加したIDの#defineの値+1にする #define _APS_NEXT_COMMAND_VALUE 32796 #define _APS_NEXT_CONTROL_VALUE 1057 #define _APS_NEXT_SYMED_VALUE 105 #endif #endif
後はリビルドすれば上手くいくはず。