掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッド内でCDialog::OnCancel (ID:57393)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
回答ありがとうございます。 >以下のようにコーディングしていると言う意味でしょうか? >OnCancel は IDCANCEL のポタンクリックのハンドラですので、下記のような >使い方は誤りです。 誤解があるといけないので、 コードを整理しました。 //ビュークラスの関数(或るメニューを選択したときの処理) void CXXXView::OnMenu() { CDlgXXX dlg; dlg.DoModal(); //モーダルでダイアログ開く } //ダイアログ表示前の処理 BOOL CDlgXXX::OnInitDialog() { CDialog::OnInitDialog(); SetTimer(0 , 500 , NULL); //表示と同時に長い処理 //が実行されるので、SetTimer関数により //ダイアログを表示する return TRUE; } //タイマ起動後の処理 void CDlgXXX::OnTimer(UINT nIDEvent) { KillTimer(nIDEvent); //スレッド起動 m_pThread = AfxBeginThread(ThreadFunc , this ); } //スレッドから呼び出される関数 UINT CDlgXXX::ThreadFunc( LPVOID pParam ) { ((CDlgXXX*)pParam)->CrtAjtMain(); return 0; } //メイン処理 void CDlgXXX::CrtAjtMain() { メイン処理・・・ OnCancel(); AfxMessageBox("メッセージ" , MB_YESNO|MB_APPLMODAL|MB_ICONQUESTION |MB_DEFBUTTON1) == IDYES) { ・・・ } CDlgYYY* dlg = new CDlgYYY; //モードレスダイアログ表示 dlg->Create( IDD_DLGYYY, m_pView ); //m_pView:ビューオブジェクトへのポインタ //(CDlgXXXのメンバ変数) } 上記のコードで、 OnCancel(); AfxMessageBox(...); の処理後、変数m_pView(ビューへのポインタ)が クリアされてしまいました。 また、OnCancel();をコメントアウトし実行したら、 変数m_pViewの値は保持されるのですが、 モードレスダイアログが表示されません。 上記のコードで、何か問題点があればご指摘ください。 なかなかうまく動作しなくて困っています。 あと、上記のコードで、 プロジェクトの設定の、「C/C++ -コード生成-ランタイムライブラリ」の 「マルチスレッド」を選択 をする必要はあるでしょうか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.