一定時間経過後にダイアログを消す

[戻る]
こま 2007/12/12(水) 14:47:44
VC++2005でMFCアプリを作っています。


現在、ダイアログ上のボタンを押すと新しくモーダルダイアログが作られる、
というプログラムを作りました。

この新しくできたダイアログを、
タイマを使って一定時間経過後に自動的に消すようにしたいのですが、
どうすれば良いのでしょうか。

よろしくお願いします。

ララ 2007/12/12(水) 15:03:28
そのダイアログに対して

SendMessage(WM_COMMAND, IDOK, 0)

したらどうでしょうか?

maru 2007/12/12(水) 17:55:50
SendMessage(WM_COMMAND, IDOK, 0)を使うまでもありません。
EndDialog()を呼び出せばダイアログボックスは終了します。

// ダイアログボックス初期化
BOOL CXXXDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    // タイマを起動する
    UINT_PTR nIDEvent = 1;   // nIDEventは使用可能な値を設定すること
    UINT nElapse = 2000;     // 2秒(必要な時間に変更)
    UINT_PTR nResult = SetTimer(nIDEvent, nElapse, 0);// 復帰値を確認すること
    return TRUE;
}

// タイマハンドラの追加(クラスウィザードまたは手動で追加する)
// クラスウィザードで追加すれば関数プロトタイプも作成してくれる。
BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
    ON_WM_TIMER()
END_MESSAGE_MAP()

// タイマハンドラ本体
void CXXXDlg::OnTimer(UINT_PTR nIDEvent)
{
    EndDialog(IDCANCEL);  // ダイアログを終了
    CDialog::OnTimer(nIDEvent);
}

こま 2007/12/13(木) 12:31:46
[[解決]]
maruさん、ありがとうございました。

書き込みの通りにすると
ダイアログが消えるように動作させることができました。

古いスレッドには追加発言できません。