CDialog::OnCancel
モーダル ダイアログ ボックスまたはモードレス ダイアログ ボックスでユーザーが [キャンセル] をクリックするか、Esc キーを押すと、フレームワークがこのメソッドを呼び出します。
virtual void OnCancel( );
解説
ユーザーが [キャンセル] をクリックするか Esc キーを押すことによってダイアログ ボックスを閉じるときに、何かのアクション (古いデータの復元など) を実行する場合は、このメソッドをオーバーライドします。 既定では、EndDialog を呼び出し、DoModal から IDCANCEL を返すことによって、モーダル ダイアログ ボックスを閉じます。
モードレス ダイアログ ボックスに [キャンセル] を実装するには、OnCancel メソッドをオーバーライドし、その中から DestroyWindow を呼び出す必要があります。 基本クラスのメソッドを呼び出さないでください。このメソッドは EndDialog を呼び出すため、ダイアログ ボックスは破棄されず、非表示になるだけです。
注意
Windows XP でコンパイルするプログラムで CFileDialog オブジェクトを使用する場合は、このメソッドをオーバーライドできません。 CFileDialog の詳細については、「CFileDialog クラス」を参照してください。
使用例
void CSimpleDlg::OnCancel()
{
// TODO: Add extra cleanup here
// Ensure that you reset all the values back to the
// ones before modification. This handler is called
// when the user doesn't want to save the changes.
if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
MB_YESNO) == IDNO)
{
// Give the user a chance if he has unknowingly hit the
// Cancel button. If he says No, return. Don't reset. If
// Yes, go ahead and reset the values and close the dialog.
return;
}
m_nMyValue = m_nPrevValue;
m_pMyString = NULL;
CDialog::OnCancel();
}
必要条件
Header: afxwin.h