処理が遅くて動いているのか解らず、何度もボタンを押されてしまうとかいうことがあります。
そうすると、長い処理を実行中にメッセージキューにメッセージがたまってしまい、処理終了後に再度処理が実行されしまいます。
単にEnableWindowで入力を拒否しても、メッセージが溜まってしまいます。
<長い処理中の入力も処理後の入力として処理されるらしい。
以下のようにすると破棄できるようです。
void CTest0022Dlg::OnButton30()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
MSG msg;
MessageBox("長い処理が始まるよ!");
AfxGetMainWnd()->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON30)->EnableWindow(FALSE);//ENTERキー対策でボタンも処理します。
Sleep(3000);//長い処理
while(::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
AfxGetThread()->PumpMessage();
GetDlgItem(IDC_BUTTON30)->EnableWindow(TRUE);
AfxGetMainWnd()->EnableWindow(TRUE);
}