Last Updated 2002/05/23
Programming Tips Visual C++ MFC ダイアログ  索 引 
中止ダイアログ
2002/05/23

時間がかかる処理などを行わせる場合,実行中のダイアログを表示してなおかつ中止をしたい場合がある.

その場合はモードレスダイアログを表示して,PeekMessage() にてメッセージループを作成する.


CKeikaDlg をモードレスで作成

void CKeikaDlg::OnButtonCancel() 
{
	// 中止ボタン押下
    m_bCancel = TRUE;
}


// 下の関数を時間がかかる処理のなかで呼び出す
BOOL CKeikaDlg::IsCanceled()
{
    MSG msg;
    while( ::PeekMessage( &msg, NULL, 0, 0, RM_REMOVE ) ) {
        ::TranslateMessage( &msg );
        ::DispatchMessage( &msg );
    }
    return m_bCancel;
}


参照
プログレスダイアログ
メッセージポンプ
前後のTips
中止ダイアログ

DSS ProgrammingTipsCGI Ver2.02