Share via


CDialog::OnCancel

更新 : 2007 年 11 月

モーダル ダイアログ ボックスまたはモードレス ダイアログ ボックスでユーザーが [キャンセル] をクリックするか、Esc キーを押すと、フレームワークがこのメソッドを呼び出します。

virtual void OnCancel( );

解説

ユーザーが [キャンセル] をクリックするか Esc キーを押すことによってダイアログ ボックスを閉じるときに、何かのアクション (古いデータの復元など) を実行する場合は、このメソッドをオーバーライドします。既定では、EndDialog を呼び出し、DoModal から IDCANCEL を返すことによって、モーダル ダイアログ ボックスを閉じます。

モードレス ダイアログ ボックスに [キャンセル] を実装するには、OnCancel メソッドをオーバーライドし、その中から DestroyWindow を呼び出す必要があります。基本クラスのメソッドを呼び出さないでください。このメソッドは EndDialog を呼び出すため、ダイアログ ボックスは破棄されず、非表示になるだけです。

kw3wtttf.alert_note(ja-jp,VS.90).gifメモ :

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

参照

参照

CDialog クラス

階層図

CDialog::OnOK

CDialog::EndDialog

その他の技術情報

CDialog のメンバ