MFC 2005VC++です。
コントロールを右クリックしても変数の追加が選択出来なくなってしまいました。
復活方法を教えて頂きたいのですが。
既存のダイアログからボタン類をコピペしてDDX宣言と変数宣言を自分で書きました。
コンパイルは通るのですが、そのダイアログを開くとAssertion Failedになります。
場所はdlgData.cpp(42)です。
そこで変数の追加からやり直そうかと思ったのですが、そのダイアログのコントロール
全て変数の追加が出来なくなっています。クラスの追加は選択できます。
そのコントロールに新規でコントロールを追加しても変数の追加は選択出来ません。
作り直すしかないのでしょうか?
2005はExpressしか使ったことがないのですが、
2003までの場合ですと、変数の追加の機能は少し怪しいようで、
エディタでヘッダーファイルを編集し、直接変数を追加する方が確実です。
shangさんが今抱えている問題は、実行時エラーになることと、
変数の追加の機能が使えないことの2つに分けて考えられます。
実行時エラーについては、デバッグしましょう。
その過程で変数の追加が必要ならば、ヘッダーファイルに直接書き込みます。
変数追加機能が使えないことについては、まず思いつくのは、
ウィザードが変数を追加する場所を探す時に
手がかりとして使っている部分が書き換えられている、というケースです。
該当するヘッダーファイルとソースファイルを調べ、壊れている部分を
修復してやればよいのですが、まず、新しいプロジェクトで
変数追加前後のファイルを調べ、ウィザードが正しく作成するコードを
理解しましょう。それと追加できないプロジェクトのコードを比較して、
修復します。
ま、作り直した方が早いと思います。
回答ありがとうございます。
自分で書く箇所は、cppファイルのDDX_Control宣言の箇所と、ヘッダファイルの宣言だ
けかと思ってたのですが、、
ウィザードで使用する場所を壊してしまったのかもしれませんね。
ちなみにAssertion Failedのエラー箇所はまさにDDX_Controlの内部で発生していますの
でよく分かりません。
渡す引数は全て確認して正常に定義されているはずなのですが・・・
ちょっと作り直してみます。
作成されていないコントロールに対して割り当てを行なおうとすると
そんな感じになったような気がしますけれど。
リソース上に使われているIDと使っているIDが本当にあっているか
確認した方が良いような気がします。
IDの定義がれソースヘッダ上にあれば、コンパイルは通りますから
ありえる話でしょう。
自分で直接編集した場合は特にありえると思います。
あと、クラスウィザードのファイルが壊れていると言うケースは
考えられないでしょうか?
拡張子がclwのファイルを一度リネームしてIDEを起動しなおしても
直りませんか?
あうあう。
誤字。
誤)
IDの定義がれソースヘッダ上にあれば、コンパイルは通りますから
正)
IDの定義がリソースヘッダ上にあれば、コンパイルは通りますから
回答ありがとうございます。
定義ファイルの修復など、やってみたのですが駄目でした。。
結局新しいフォームを作りなおしました。
やはり自分で書くと良くないですね、、
次からは気をつけます。
ありがとうございました。