私は理解するのに苦労してきました。皆さんが助けてくれるかもしれません。
CDialogを使用するプロジェクトがあり、メインウィンドウから情報を取得する子ウィンドウを作成しようとしています(メイン/子ウィンドウには独自のクラスがあります)、コンテンツを編集し、編集した情報をに送り返しますメインウィンドウ。
を使用しようとしたときCDialog::Create()
、子ウィンドウのコントロールを使用できませんでした。(例: ボタンが反応しない)
子ウィンドウを作成するDoModal()
と裏目に出ました..ボタンは反応し、子ウィンドウのクラス関数にアクセスできましたが、メインウィンドウクラスから情報を取得しようとすると、アプリクラッシュが発生しました。CWnd を手動で渡そうとしましたが、それでもクラッシュしました.. (メイン ウィンドウ ハンドルを取得できませんでした)
メインアプリの変数と子ウィンドウのイベントハンドラーにアクセスしながら子ウィンドウを作成する方法についてのアイデアはありますか?
編集:わかりました、私は最終的に何が問題であるかを知りました:私は使用していました
CDialog *eTest = new CDialog; // Pointing to .. ?? .. yeah I hate myself for this
eTest->Create(IDD_EDIT_DIALOG, NULL);
eTest->ShowWindow(SW_SHOW);
代わりに、次のようなウィンドウを作成する必要があります。
CDialog *eTest = new CEditDialog(); // Pointing to the dialog class
eTest->Create(IDD_EDIT_DIALOG, this);
eTest->ShowWindow(SW_SHOW);
ボタンからデータ転送まで、すべてが機能しているようです。将来、私のような愚かな人の助けになれば幸いです。