Aracılığıyla paylaş


CDialog Sınıfı

Ekranda iletişim kutularını görüntülemek için kullanılan temel sınıf.

Sözdizimi

class CDialog : public CWnd

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CDialog::CDialog Bir CDialog nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CDialog::Create Nesnesini başlatır CDialog . Modsuz bir iletişim kutusu oluşturur ve bunu nesneye CDialog ekler.
CDialog::CreateIndirect Bellekteki bir iletişim kutusu şablonundan (kaynak tabanlı değil) modsuz bir iletişim kutusu oluşturur.
CDialog::D oModal Kalıcı bir iletişim kutusunu çağırır ve bittiğinde döndürür.
CDialog::EndDialog Kalıcı iletişim kutusunu kapatır.
CDialog::GetDefID İletişim kutusu için varsayılan basma düğmesi denetiminin kimliğini alır.
CDialog::GotoDlgCtrl Odağı iletişim kutusunda belirtilen bir iletişim kutusu denetimine taşır.
CDialog::InitModalIndirect Bellekteki bir iletişim kutusu şablonundan kalıcı bir iletişim kutusu oluşturur (kaynak tabanlı değil). İşlev çağrılana DoModal kadar parametreler depolanır.
CDialog::MapDialogRect Dikdörtgenin iletişim kutusu birimlerini ekran birimlerine dönüştürür.
CDialog::NextDlgCtrl Odağı iletişim kutusundaki sonraki iletişim kutusu denetimine taşır.
CDialog::OnInitDialog İletişim kutusu başlatmayı artırmak için geçersiz kıl.
CDialog::OnSetFont Bir iletişim kutusu denetiminin metin çizerken kullanacağını yazı tipini belirtmek için geçersiz kılın.
CDialog::P revDlgCtrl Odağı iletişim kutusundaki önceki iletişim kutusu denetimine taşır.
CDialog::SetDefID İletişim kutusunun varsayılan basma düğmesi denetimini belirtilen bir düğmeyle değiştirir.
CDialog::SetHelpID İletişim kutusu için bağlama duyarlı bir yardım kimliği ayarlar.

Korumalı Yöntemler

Veri Akışı Adı Açıklama
CDialog::OnCancel İptal düğmesini veya ESC tuşu eylemini gerçekleştirmek için geçersiz kılın. Varsayılan, iletişim kutusunu kapatır ve DoModal IDCANCEL döndürür.
CDialog::OnOK Kalıcı iletişim kutusunda Tamam düğmesi eylemini gerçekleştirmek için geçersiz kılın. Varsayılan, iletişim kutusunu kapatır ve DoModal IDOK döndürür.

Açıklamalar

İletişim kutuları iki türdedir: kalıcı ve modsuz. Uygulama devam etmeden önce kalıcı bir iletişim kutusunun kullanıcı tarafından kapatılması gerekir. Modsuz iletişim kutusu, kullanıcının iletişim kutusunu iptal etmeden veya kaldırmadan iletişim kutusunu görüntülemesine ve başka bir göreve geri dönmesine olanak tanır.

CDialog Nesne, bir iletişim kutusu şablonu ile türetilmiş bir sınıfın birleşimidirCDialog. İletişim kutusu şablonunu oluşturmak ve bir kaynakta depolamak için iletişim kutusu düzenleyicisini kullanın, ardından öğesinden türetilen bir sınıf oluşturmak için Sınıf Ekle sihirbazını CDialogkullanın.

Diğer pencerelerde olduğu gibi bir iletişim kutusu da Windows'tan ileti alır. Bir iletişim kutusunda, özellikle iletişim kutusunun denetimlerinden gelen bildirim iletilerini işlemekle ilgilenirsiniz çünkü kullanıcı iletişim kutunuzla bu şekilde etkileşim kurar. Hangi iletileri işlemek istediğinizi seçmek için Sınıf Sihirbazı'nı kullanın; sizin için sınıfa uygun ileti eşleme girdilerini ve ileti işleyicisi üye işlevlerini ekler. Yalnızca işleyici üye işlevlerinde uygulamaya özgü kod yazmanız gerekir.

İsterseniz, her zaman ileti eşlemesi girdilerini ve üye işlevlerini el ile yazabilirsiniz.

En önemsiz iletişim kutusunda, kullanıcı tarafından iletişim kutusunun denetimlerine girilen verileri depolamak veya kullanıcının verilerini görüntülemek için türetilmiş iletişim kutusu sınıfınıza üye değişkenleri eklersiniz. Üye değişkenleri oluşturmak ve bunları denetimlerle ilişkilendirmek için Değişken Ekle sihirbazını kullanabilirsiniz. Aynı zamanda, her değişken için bir değişken türü ve izin verilen değer aralığı seçersiniz. Kod sihirbazı, üye değişkenlerini türetilmiş iletişim kutusu sınıfınıza ekler.

Üye değişkenleri ve iletişim kutusunun denetimleri arasındaki veri alışverişini otomatik olarak işlemek için bir veri eşlemesi oluşturulur. Veri eşlemesi, iletişim kutusundaki denetimleri uygun değerlerle başlatan, verileri alan ve verileri doğrulayan işlevler sağlar.

Kalıcı iletişim kutusu oluşturmak için, türetilmiş iletişim kutusu sınıfınızın oluşturucusunu kullanarak yığında bir nesne oluşturun ve ardından iletişim kutusu penceresini ve denetimlerini oluşturmak için çağrısı DoModal yapın. Modsuz bir iletişim kutusu oluşturmak istiyorsanız, iletişim kutusu sınıfınızın oluşturucusunda öğesini çağırın Create .

Ayrıca, Windows SDK'da açıklandığı gibi bir DLGTEMPLATE veri yapısı kullanarak bellekte bir şablon da oluşturabilirsiniz. Nesne CDialog oluşturduktan sonra, model bir iletişim kutusu oluşturmak için CreateIndirect'i veya kalıcı bir iletişim kutusu oluşturmak için InitModalIndirect ve DoModal'ı çağırın.

Değişim ve doğrulama veri eşlemesi, yeni iletişim kutusu sınıfınıza eklenen bir geçersiz kılmayla CWnd::DoDataExchange yazılır. Değişim ve doğrulama işlevselliği hakkında daha fazla bilgi için içindeki DoDataExchange üye işlevine CWnd bakın.

Hem programcı hem de çerçeve, CWnd::UpdateData çağrısı aracılığıyla dolaylı olarak çağrır DoDataExchange .

Kullanıcı bir kalıcı iletişim kutusunu kapatmak için Tamam düğmesine tıkladığında çerçeve çağrılır UpdateData . (İptal düğmesine tıklandığında veriler alınmaz.) OnInitDialog'un varsayılan uygulaması, denetimlerin ilk değerlerini ayarlamak için de çağrı UpdateData yapar. Denetimleri daha fazla başlatmak için genellikle geçersiz kılarsınız OnInitDialog . OnInitDialog , tüm iletişim kutusu denetimleri oluşturulduktan sonra ve iletişim kutusu görüntülenmeden hemen önce çağrılır.

Kalıcı veya modsuz iletişim kutusunun yürütülmesi sırasında istediğiniz zaman arayabilirsiniz CWnd::UpdateData .

El ile bir iletişim kutusu geliştirirseniz, türetilmiş iletişim kutusu sınıfına gerekli üye değişkenlerini kendiniz eklersiniz ve bu değerleri ayarlamak veya almak için üye işlevleri eklersiniz.

Kullanıcı Tamam veya İptal düğmelerine bastığında veya kodunuz üye işlevini çağırdığında EndDialog kalıcı bir iletişim kutusu otomatik olarak kapanır.

Modsuz bir iletişim kutusu uyguladığınızda, her zaman üye işlevini geçersiz kılın OnCancel ve içinden çağrısı DestroyWindow yapın. temel sınıfını CDialog::OnCancelçağırmayın, çünkü iletişim kutusunu görünmez hale getirecek ancak yok etmeyeceği için öğesini çağırır EndDialog. Modeless iletişim kutuları genellikle ile newayrıldığından, öğesini silmek thisiçin modeless iletişim kutularını da geçersiz kılmalısınızPostNcDestroy. Kalıcı iletişim kutuları genellikle çerçeve üzerinde oluşturulur ve temizlemeye gerek PostNcDestroy yoktur.

hakkında CDialogdaha fazla bilgi için bkz. İletişim Kutuları.

Devralma Hiyerarşisi

CObject

CCmdTarget

CWnd

CDialog

Gereksinimler

Üst bilgi: afxwin.h

CDialog::CDialog

Kaynak tabanlı kalıcı bir iletişim kutusu oluşturmak için oluşturucunun ortak biçimlerinden birini çağırın.

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

Parametreler

lpszTemplateName
bir iletişim kutusu şablon kaynağının adı olan null olarak sonlandırılan bir dize içerir.

nIDTemplate
İletişim kutusu şablonu kaynağının kimlik numarasını içerir.

pParentWnd
İletişim kutusu nesnesinin ait olduğu üst veya sahip pencere nesnesine (CWnd türünde) işaret eder. NULL ise, iletişim kutusu nesnesinin üst penceresi ana uygulama penceresine ayarlanır.

Açıklamalar

Oluşturucunun bir biçimi, şablon adına göre iletişim kutusu kaynağına erişim sağlar. Diğer oluşturucu genellikle IDD_ ön ekiyle (örneğin, IDD_DIALOG1 ) şablon kimlik numarasına göre erişim sağlar.

Bellekteki bir şablondan kalıcı bir iletişim kutusu oluşturmak için, önce parametresiz, korumalı oluşturucuyu çağırın ve ardından öğesini çağırın InitModalIndirect.

Yukarıdaki yöntemlerden biriyle kalıcı bir iletişim kutusu oluşturdıktan sonra çağrısı yapın DoModal.

Modsuz bir iletişim kutusu oluşturmak için oluşturucunun korumalı biçimini CDialog kullanın. Oluşturucu korunur çünkü modsuz bir iletişim kutusu uygulamak için kendi iletişim kutusu sınıfınızı türetmelisiniz. Modsuz iletişim kutusunun oluşturulması iki adımlı bir işlemdir. Önce oluşturucuyu çağırın; ardından üye işlevini çağırarak Create kaynak tabanlı bir iletişim kutusu oluşturun veya bellekteki bir şablondan iletişim kutusu oluşturmak için öğesini çağırın CreateIndirect .

CDialog::Create

Kaynaktan bir iletişim kutusu şablonu kullanarak modsuz iletişim kutusu oluşturmak için çağrısı Create yapın.

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

Parametreler

lpszTemplateName
bir iletişim kutusu şablon kaynağının adı olan null olarak sonlandırılan bir dize içerir.

pParentWnd
İletişim kutusu nesnesinin ait olduğu üst pencere nesnesine (CWnd türünde) işaret eder. NULL ise, iletişim kutusu nesnesinin üst penceresi ana uygulama penceresine ayarlanır.

nIDTemplate
İletişim kutusu şablonu kaynağının kimlik numarasını içerir.

Dönüş Değeri

İletişim kutusu oluşturma ve başlatma başarılı olursa her iki form da sıfırdan farklı döndürür; aksi takdirde 0.

Açıklamalar

çağrısı oluşturucunun Create içine yerleştirebilir veya oluşturucu çağrıldıktan sonra çağırabilirsiniz.

İletişim kutusu şablonu kaynağına erişmek için şablon adı veya şablon kimliği numarasıyla (örneğin, IDD_DIALOG1) üye işlevinin iki biçimi Create sağlanır.

Her iki form için de üst pencere nesnesine bir işaretçi geçirin. pParentWnd NULL ise, iletişim kutusu ana uygulama penceresine ayarlanmış üst veya sahip penceresiyle oluşturulur.

Create Üye işlevi, iletişim kutusunu oluşturduğundan hemen sonra döndürür.

Üst pencere oluşturulduğunda iletişim kutusunun görünmesi gerekiyorsa, iletişim kutusu şablonundaki WS_VISIBLE stilini kullanın. Aksi takdirde, öğesini çağırmalısınız ShowWindow. Diğer iletişim kutusu stilleri ve uygulamaları için Windows SDK'sında DLGTEMPLATE yapısına ve MFC Başvurusu'nda Pencere Stilleri'ne bakın.

CWnd::DestroyWindow İşlev tarafından Create oluşturulan bir iletişim kutusunu yok etmek için işlevini kullanın.

Örnek

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

Bellekteki bir iletişim kutusu şablonundan modsuz bir iletişim kutusu oluşturmak için bu üye işlevini çağır.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parametreler

lpDialogTemplate
İletişim kutusunu oluşturmak için kullanılan bir iletişim kutusu şablonu içeren belleğe işaret edin. Bu şablon, Windows SDK'da açıklandığı gibi DLGTEMPLATE yapısı ve denetim bilgileri biçimindedir.

pParentWnd
İletişim kutusu nesnesinin üst pencere nesnesini (CWnd türünde ) gösterir. NULL ise, iletişim kutusu nesnesinin üst penceresi ana uygulama penceresine ayarlanır.

lpDialogInit
DLGINIT kaynağını gösterir.

hDialogTemplate
İletişim kutusu şablonu içeren genel belleğe yönelik bir tanıtıcı içerir. Bu şablon, iletişim kutusundaki her denetim için bir DLGTEMPLATE yapı ve veri biçimindedir.

Dönüş Değeri

İletişim kutusu başarıyla oluşturulduysa ve başlatıldıysa sıfır olmayan; aksi takdirde 0.

Açıklamalar

CreateIndirect Üye işlevi, iletişim kutusunu oluşturduğundan hemen sonra döndürür.

Üst pencere oluşturulduğunda iletişim kutusunun görünmesi gerekiyorsa, iletişim kutusu şablonundaki WS_VISIBLE stilini kullanın. Aksi takdirde, görünmesine neden olmak için aramanız ShowWindow gerekir. Şablonda diğer iletişim kutusu stillerini nasıl belirtebileceğiniz hakkında daha fazla bilgi için bkz . Windows SDK'sında DLGTEMPLATE yapısı.

CWnd::DestroyWindow İşlev tarafından CreateIndirect oluşturulan bir iletişim kutusunu yok etmek için işlevini kullanın.

ActiveX denetimleri içeren iletişim kutuları, DLGINIT kaynağında ek bilgi sağlanmasını gerektirir.

CDialog::D oModal

Kalıcı iletişim kutusunu çağırmak ve bittiğinde iletişim kutusu sonucunu döndürmek için bu üye işlevini çağırın.

virtual INT_PTR DoModal();

Dönüş Değeri

int İletişim kutusunu kapatmak için kullanılan CDialog::EndDialog üye işlevine geçirilen nResult parametresinin değerini belirten değer. İşlev iletişim kutusunu oluşturamadıysa -1, başka bir hata oluştuysa IDABORT, bu durumda çıkış penceresi GetLastError hata bilgilerini içerir.

Açıklamalar

bu üye işlevi, iletişim kutusu etkinken kullanıcıyla tüm etkileşimi işler. İletişim kutusunu kalıcı yapan budur; diğer bir deyişle, iletişim kutusu kapatılana kadar kullanıcı diğer pencerelerle etkileşim kuramaz.

Kullanıcı, iletişim kutusundaki Tamam veya İptal gibi düğmelerden birine tıklarsa, iletişim kutusunu kapatmaya çalışmak için OnOK veya OnCancel gibi bir ileti işleyicisi üye işlevi çağrılır. Varsayılan OnOK üye işlevi, iletişim kutusu verilerini doğrular ve güncelleştirir ve sonuç IDOK'si ile iletişim kutusunu kapatır ve varsayılan OnCancel üye işlevi, iletişim kutusu verilerini doğrulamadan veya güncelleştirmeden sonuç IDCANCEL'i içeren iletişim kutusunu kapatır. Davranışlarını değiştirmek için bu ileti işleyici işlevlerini geçersiz kılabilirsiniz.

Not

PreTranslateMessage artık kalıcı iletişim kutusu ileti işleme için çağrılır.

Örnek

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog::EndDialog

Kalıcı bir iletişim kutusunu sonlandırmak için bu üye işlevini çağır.

void EndDialog(int nResult);

Parametreler

nResult
İletişim kutusundan çağırana DoModaldöndürülecek değeri içerir.

Açıklamalar

Bu üye işlevi, dönüş değeri DoModalolarak nResult döndürür. Kalıcı bir iletişim kutusu oluşturulduğunda işlemeyi EndDialog tamamlamak için işlevini kullanmanız gerekir.

OnInitDialog'da bile istediğiniz zaman çağrı EndDialog yapabilirsiniz. Bu durumda, iletişim kutusunu gösterilmeden veya giriş odağı ayarlanmadan önce kapatmanız gerekir.

EndDialog iletişim kutusunu hemen kapatmaz. Bunun yerine, geçerli ileti işleyicisi döner dönmez iletişim kutusunu kapanmaya yönlendiren bir bayrak ayarlar.

Örnek

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

GetDefID Bir iletişim kutusunun varsayılan basma düğmesi denetiminin kimliğini almak için üye işlevini çağırın.

DWORD GetDefID() const;

Dönüş Değeri

32 bit değer ( DWORD). Varsayılan basma düğmesinin kimlik değeri varsa, yüksek sıralı sözcük DC_HASDEFID ve düşük sıralı sözcük kimlik değerini içerir. Varsayılan basma düğmesinin kimlik değeri yoksa, dönüş değeri 0'dır.

Açıklamalar

Bu genellikle Tamam düğmesidir.

CDialog::GotoDlgCtrl

Odağı iletişim kutusunda belirtilen denetime taşır.

void GotoDlgCtrl(CWnd* pWndCtrl);

Parametreler

pWndCtrl
Odağı alacak pencereyi (denetimi) tanımlar.

Açıklamalar

pWndCtrl olarak geçirmek üzere denetime (alt pencere) bir işaretçi almak için, bir CWnd nesnesine işaretçi döndüren üye işlevini çağırınCWnd::GetDlgItem.

Örnek

CWnd::GetDlgItem örneğine bakın.

CDialog::InitModalIndirect

Bellekte oluşturduğunuz bir iletişim kutusu şablonu kullanarak kalıcı bir iletişim kutusu nesnesi başlatmak için bu üye işlevini çağırabilirsiniz.

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parametreler

lpDialogTemplate
İletişim kutusunu oluşturmak için kullanılan bir iletişim kutusu şablonu içeren belleğe işaret edin. Bu şablon, Windows SDK'da açıklandığı gibi DLGTEMPLATE yapısı ve denetim bilgileri biçimindedir.

hDialogTemplate
İletişim kutusu şablonu içeren genel belleğe yönelik bir tanıtıcı içerir. Bu şablon, iletişim kutusundaki her denetim için bir DLGTEMPLATE yapı ve veri biçimindedir.

pParentWnd
İletişim kutusu nesnesinin ait olduğu üst veya sahip pencere nesnesine (CWnd türünde) işaret eder. NULL ise, iletişim kutusu nesnesinin üst penceresi ana uygulama penceresine ayarlanır.

lpDialogInit
DLGINIT kaynağını gösterir.

Dönüş Değeri

İletişim kutusu nesnesi başarıyla oluşturulduysa ve başlatıldıysa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Dolaylı olarak kalıcı bir iletişim kutusu oluşturmak için, önce genel bir bellek bloğu ayırın ve bunu iletişim kutusu şablonuyla doldurun. Ardından, iletişim kutusu nesnesini oluşturmak için boş CDialog oluşturucuyu çağırın. Ardından, tanıtıcınızı bellek içi iletişim kutusu şablonuna depolamak için çağrısı InitModalIndirect yapın. DoModal üye işlevi çağrıldığında Windows iletişim kutusu oluşturulur ve daha sonra görüntülenir.

ActiveX denetimleri içeren iletişim kutuları, DLGINIT kaynağında ek bilgi sağlanmasını gerektirir.

CDialog::MapDialogRect

Bir dikdörtgenin iletişim kutusu birimlerini ekran birimlerine dönüştürmek için çağrısı yapın.

void MapDialogRect(LPRECT lpRect) const;

Parametreler

lpRect
Dönüştürülecek iletişim kutusu koordinatlarını içeren bir RECT yapısına veya CRect nesnesine işaret eder.

Açıklamalar

İletişim kutusu birimleri, iletişim kutusu metni için kullanılan yazı tipindeki karakterlerin ortalama genişliği ve yüksekliğinden türetilen geçerli iletişim kutusu temel birimi açısından belirtilir. Yatay birimlerden biri iletişim kutusu taban genişlik biriminin dörtte biri, dikey birim ise iletişim kutusu taban yükseklik biriminin sekizde biridir.

GetDialogBaseUnits Windows işlevi sistem yazı tipi için boyut bilgilerini döndürür, ancak kaynak tanımı dosyasında DS_SETFONT stilini kullanırsanız her iletişim kutusu için farklı bir yazı tipi belirtebilirsiniz. MapDialogRect Windows işlevi bu iletişim kutusu için uygun yazı tipini kullanır.

MapDialogRect Üye işlevi, lpRect içindeki iletişim kutusu birimlerini ekran birimleriyle (piksel) değiştirir, böylece dikdörtgen bir iletişim kutusu oluşturmak veya bir denetimi bir kutunun içine yerleştirmek için kullanılabilir.

CDialog::NextDlgCtrl

Odağı iletişim kutusunda bir sonraki denetime taşır.

void NextDlgCtrl() const;

Açıklamalar

Odak iletişim kutusundaki son denetimdeyse, ilk denetime geçer.

CDialog::OnCancel

Kullanıcı İptal'e tıkladığında veya kalıcı veya modsuz iletişim kutusunda ESC tuşuna bastığında çerçeve bu yöntemi çağırır.

virtual void OnCancel();

Açıklamalar

Kullanıcı İptal'e tıklayarak veya ESC tuşuna basarak iletişim kutusunu kapattığında eylemleri (eski verileri geri yükleme gibi) gerçekleştirmek için bu yöntemi geçersiz kılın. Varsayılan olarak EndDialog çağrısı yaparak ve DoModal'ın IDCANCEL döndürmesine neden olarak kalıcı bir iletişim kutusu kapatılır.

modeless iletişim kutusunda İptal düğmesini uygularsanız, yöntemini geçersiz kılmanız OnCancel ve içinde DestroyWindow'u çağırmanız gerekir. base-class yöntemini çağırmayın, çünkü iletişim kutusunu görünmez hale getirecek ancak yok etmeyeceği için öğesini çağırır EndDialog.

Not

Windows XP altında derlenmiş bir programda nesne CFileDialog kullandığınızda bu yöntemi geçersiz kılamazsınız. hakkında CFileDialogdaha fazla bilgi için bkz . CFileDialog Sınıfı.

Örnek

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();
}

CDialog::OnInitDialog

Bu yöntem, iletiye yanıt olarak çağrılır WM_INITDIALOG .

virtual BOOL OnInitDialog();

Dönüş Değeri

Uygulamanın giriş odağını iletişim kutusundaki denetimlerden birine ayarlayıp ayarlamadığını belirtir. Sıfır olmayan bir değer döndürürse OnInitDialog , Windows giriş odağını iletişim kutusundaki ilk denetim olan varsayılan konuma ayarlar. Uygulama yalnızca giriş odağını iletişim kutusundaki denetimlerden birine açıkça ayarlamışsa 0 döndürebilir.

Açıklamalar

Windows, iletişim kutusu görüntülenmeden hemen önce gerçekleşen Create, CreateIndirect veya DoModal çağrıları sırasında iletiyi iletişim kutusuna gönderir WM_INITDIALOG .

İletişim kutusu başlatıldığında özel işlem gerçekleştirmek istiyorsanız bu yöntemi geçersiz kılın. Geçersiz kılınan sürümde, önce temel sınıfı OnInitDialog çağırın, ancak dönüş değerini yoksayın. Genellikle geçersiz kılınan yönteminizden dönersiniz TRUE .

Windows, tüm Microsoft Foundation Sınıf Kitaplığı iletişim kutularında ortak olan standart genel iletişim kutusu yordamını kullanarak işlevi çağırır OnInitDialog . bu işlevi ileti eşlemeniz aracılığıyla çağırmaz ve bu nedenle bu yöntem için bir ileti eşlemesi girdisine ihtiyacınız yoktur.

Not

Windows Vista veya sonraki işletim sistemleri altında derlenmiş bir programda nesne kullandığınızda CFileDialog bu yöntemi geçersiz kılamazsınız. Windows Vista ve sonraki sürümlerde CFileDialog yapılan değişiklikler hakkında daha fazla bilgi için bkz . CFileDialog Sınıfı.

Örnek

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

Kullanıcı Tamam düğmesine (IDOK kimliğine sahip düğme) tıkladığında çağrılır.

virtual void OnOK();

Açıklamalar

Tamam düğmesi etkinleştirildiğinde eylemleri gerçekleştirmek için bu yöntemi geçersiz kılın. İletişim kutusu otomatik veri doğrulama ve değişim içeriyorsa, bu yöntemin varsayılan uygulaması iletişim kutusu verilerini doğrular ve uygulamanızdaki uygun değişkenleri güncelleştirir.

Tamam düğmesini modsuz bir iletişim kutusunda uygularsanız, yöntemini geçersiz kılmanız OnOK ve içinde DestroyWindow'u çağırmanız gerekir. İletişim kutusunu görünmez yapan ancak yok etmez EndDialog çağırdığı için base-class yöntemini çağırmayın.

Not

Windows XP altında derlenmiş bir programda nesne CFileDialog kullandığınızda bu yöntemi geçersiz kılamazsınız. hakkında CFileDialogdaha fazla bilgi için bkz . CFileDialog Sınıfı.

Örnek

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

Metin çizerken bir iletişim kutusu denetiminin kullanacağı yazı tipini belirtir.

Virtual void OnSetFont(CFont* pFont);

Parametreler

pFont
[in] Bu iletişim kutusundaki tüm denetimler için varsayılan yazı tipi olarak kullanılacak yazı tipi işaretçisini belirtir.

Açıklamalar

İletişim kutusu, tüm denetimleri için varsayılan olarak belirtilen yazı tipini kullanır.

İletişim kutusu düzenleyicisi genellikle iletişim kutusu şablon kaynağının bir parçası olarak iletişim kutusu yazı tipini ayarlar.

Not

Windows Vista veya sonraki işletim sistemleri altında derlenmiş bir programda nesne kullandığınızda CFileDialog bu yöntemi geçersiz kılamazsınız. Windows Vista ve sonraki sürümlerde CFileDialog yapılan değişiklikler hakkında daha fazla bilgi için bkz . CFileDialog Sınıfı.

CDialog::P revDlgCtrl

Odağı iletişim kutusundaki önceki denetime ayarlar.

void PrevDlgCtrl() const;

Açıklamalar

Odak iletişim kutusundaki ilk denetimdeyse, kutudaki son denetime geçer.

CDialog::SetDefID

İletişim kutusunun varsayılan basma düğmesi denetimini değiştirir.

void SetDefID(UINT nID);

Parametreler

Nıd
Varsayılan olacak düğme denetiminin kimliğini belirtir.

CDialog::SetHelpID

İletişim kutusu için bağlama duyarlı bir yardım kimliği ayarlar.

void SetHelpID(UINT nIDR);

Parametreler

nIDR
Bağlama duyarlı yardım kimliğini belirtir.

Ayrıca bkz.

MFC Örnek DLGCBR32
MFC Örneği DLGTEMPL
CWnd Sınıfı
Hiyerarşi Grafiği