Last Updated 2005/04/25
> MFC > ダイアログ

中止ダイアログ


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

その場合はモードレスダイアログを表示して,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;
}
2002/05/23

参照
プログレスダイアログ
メッセージポンプ


> MFC > ダイアログ