Megosztás:


CDialog osztály

A párbeszédpanelek képernyőn való megjelenítéséhez használt alaposztály.

Szemantika

class CDialog : public CWnd

Tagok

Nyilvános konstruktorok

Név Leírás
CDialog::CDialog Egy CDialog objektumot hoz létre.

Nyilvános metódusok

Név Leírás
CDialog::Létrehozás Inicializálja a CDialog objektumot. Létrehoz egy mód nélküli párbeszédpanelt, és csatolja az CDialog objektumhoz.
CDialog::CreateIndirect Mód nélküli párbeszédpanelt hoz létre egy párbeszédpanel-sablonból a memóriában (nem erőforrás-alapú).
CDialog::D oModal Meghív egy modális párbeszédpanelt, és amikor elkészült, visszatér.
CDialog::EndDialog Bezár egy modális párbeszédpanelt.
CDialog::GetDefID Lekéri egy párbeszédpanel alapértelmezett leküldéses vezérlőjének azonosítóját.
CDialog::GotoDlgCtrl A fókusz áthelyezése egy megadott párbeszédpanel-vezérlőre a párbeszédpanelen.
CDialog::InitModalIndirect Modális párbeszédpanelt hoz létre egy párbeszédpanel-sablonból a memóriában (nem erőforrás-alapú). A paraméterek tárolása a függvény DoModal meghívásáig történik.
CDialog::MapDialogRect Egy téglalap párbeszédpanel-egységeit képernyőegységekké alakítja.
CDialog::NextDlgCtrl A fókusz áthelyezése a párbeszédpanel következő párbeszédpanel-vezérlőelemére.
CDialog::OnInitDialog Felülbírálás a párbeszédpanel inicializálásának kiegészítéséhez.
CDialog::OnSetFont Felülbírálás annak a betűtípusnak a megadásához, amelyet egy párbeszédpanel-vezérlő használ szöveg rajzolásakor.
CDialog::P revDlgCtrl A fókusz áthelyezése a párbeszédpanel előző párbeszédpanel-vezérlőelemére.
CDialog::SetDefID Egy párbeszédpanel alapértelmezett leküldéses vezérlőjének módosítása egy megadott nyomógombra.
CDialog::SetHelpID Beállít egy környezetfüggő súgóazonosítót a párbeszédpanelhez.

Védett metódusok

Név Leírás
CDialog::OnCancel Felülbírálás a Mégse gomb vagy az ESC billentyűművelet végrehajtásához. Az alapértelmezett beállítás bezárja a párbeszédpanelt, és DoModal az IDCANCEL értéket adja vissza.
CDialog::OnOK Felülbírálás az OK gombművelet végrehajtásához egy modális párbeszédpanelen. Az alapértelmezett beállítás bezárja a párbeszédpanelt, és DoModal visszaadja az IDOK értéket.

Megjegyzések

A párbeszédpanelek kétféle típusúak: modális és mód nélküli. A felhasználónak be kell zárnia egy modális párbeszédpanelt az alkalmazás folytatása előtt. A mód nélküli párbeszédpanelek lehetővé teszik a felhasználó számára a párbeszédpanel megjelenítését, és a párbeszédpanel megszakítása vagy eltávolítása nélkül visszatérhet egy másik feladathoz.

Az CDialog objektum egy párbeszédpanelsablon és egy CDialog-származtatott osztály kombinációja. A párbeszédpanel-szerkesztővel hozza létre a párbeszédpanelsablont, és tárolja egy erőforrásban, majd az Osztály hozzáadása varázslóval hozzon létre egy osztályt, amelyből CDialogszármazik.

A párbeszédpanelek, mint bármely más ablak, üzeneteket fogadnak a Windowsból. Egy párbeszédpanelen különösen érdekli a párbeszédpanel vezérlőiből érkező értesítési üzenetek kezelése, mivel a felhasználó így kezeli a párbeszédpanelt. Az Osztályvarázslóval kiválaszthatja, hogy mely üzeneteket szeretné kezelni, és hozzáadja a megfelelő üzenettérkép-bejegyzéseket és üzenetkezelő tagfüggvényeket az osztályhoz. Csak alkalmazásspecifikus kódot kell írnia a kezelő tagfüggvényeiben.

Tetszés szerint mindig írhat manuálisan üzenettérkép-bejegyzéseket és tagfüggvényeket.

A legösszetűnőbb párbeszédpanelen tagváltozókat adhat hozzá a származtatott párbeszédpanel-osztályhoz a párbeszédpanel vezérlőiben a felhasználó által megadott adatok tárolásához vagy a felhasználó adatainak megjelenítéséhez. A Változó hozzáadása varázslóval tagváltozókat hozhat létre, és vezérlőelemekhez társíthatja őket. Ugyanakkor minden változóhoz változótípust és megengedett értéktartományt kell választania. A kódvarázsló hozzáadja a tagváltozókat a származtatott párbeszédpanel-osztályhoz.

Létrejön egy adatleképezési rendszer, amely automatikusan kezeli a tagváltozók és a párbeszédpanel vezérlői közötti adatcserét. Az adattérkép olyan függvényeket biztosít, amelyek inicializálják a párbeszédpanel vezérlőinek megfelelő értékeket, lekérik az adatokat, és ellenőrzik az adatokat.

Modális párbeszédpanel létrehozásához hozzon létre egy objektumot a veremen a származtatott párbeszédpanelosztály konstruktorával, majd hívja meg DoModal a párbeszédpanel ablakát és vezérlőit. Ha mód nélküli párbeszédpanelt szeretne létrehozni, hívja Create fel a párbeszédpanelosztály konstruktorát.

A windowsos SDK-ban leírt DLGTEMPLATE adatstruktúrával is létrehozhat sablont a memóriában. Miután létrehozott egy CDialog objektumot, hívja meg a CreateIndirectet egy mód nélküli párbeszédpanel létrehozásához, vagy hívja meg az InitModalIndirectet és a DoModalt egy modális párbeszédpanel létrehozásához.

Az exchange- és érvényesítési adattérkép felülbírálása CWnd::DoDataExchange az új párbeszédpanel-osztályhoz lesz hozzáadva. A DoDataExchange tagfüggvényben CWnd további információt talál az exchange és az érvényesítési funkciókról.

A programozó és a keretrendszer is közvetetten hívja DoDataExchange meg a CWnd::UpdateData hívását.

A keretrendszer meghívja UpdateData , ha a felhasználó az OK gombra kattintva bezár egy modális párbeszédpanelt. (Az adatok lekérése nem történik meg, ha a Mégse gombra kattint.) Az OnInitDialog alapértelmezett implementációja a vezérlők kezdeti értékeinek beállítását is kéri UpdateData . Általában felülbírálhatja OnInitDialog a vezérlők további inicializálását. OnInitDialog a rendszer az összes párbeszédpanel-vezérlő létrehozása után és a párbeszédpanel megjelenése előtt hívja meg.

A modális vagy mód nélküli párbeszédpanelek végrehajtása során bármikor felhívhatja CWnd::UpdateData a hívásokat.

Ha kézzel fejleszt egy párbeszédpanelt, a szükséges tagváltozókat saját maga adja hozzá a származtatott párbeszédpanel-osztályhoz, és tagfüggvényeket ad hozzá ezeknek az értékeknek a beállításához vagy lekéréséhez.

A modális párbeszédpanel automatikusan bezárul, amikor a felhasználó lenyomja az OK vagy a Mégse gombot, vagy amikor a kód meghívja a tagfüggvényt EndDialog .

Ha mód nélküli párbeszédpanelt implementál, mindig felülbírálja a OnCancel tagfüggvényt, és a benne lévő hívásokat DestroyWindow . Ne hívja meg az alaposztályt CDialog::OnCancel, mert az meghívja EndDialog, ami láthatatlanná teszi a párbeszédpanelt, de nem fogja elpusztítani. A törléshez PostNcDestroyfelül kell bírálnia this a mód nélküli párbeszédpaneleket is, mivel a mód nélküli párbeszédpanelek általában a következővel newvannak lefoglalva: A modális párbeszédpanelek általában a kereten vannak felépítve, és nem igényelnek PostNcDestroy törlést.

További információ: CDialogPárbeszédpanelek.

Öröklési hierarchia

CObject

CCmdTarget

CWnd

CDialog

Követelmények

fejléc: afxwin.h

CDialog::CDialog

Erőforrás-alapú modális párbeszédpanel létrehozásához hívja meg a konstruktor nyilvános formáját.

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

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

CDialog();

Paraméterek

lpszTemplateName
Null értékű sztringet tartalmaz, amely egy párbeszédpanel-sablonerőforrás neve.

nIDTemplate
Egy párbeszédpanelsablon-erőforrás azonosítószámát tartalmazza.

pParentWnd
Arra a szülő- vagy tulajdonosablak-objektumra mutat ( CWnd típusú), amelyhez a párbeszédpanel-objektum tartozik. Null érték esetén a párbeszédpanel-objektum szülőablaka a fő alkalmazásablakra van állítva.

Megjegyzések

A konstruktor egyik formája sablonnév alapján biztosít hozzáférést a párbeszédpanel-erőforráshoz. A másik konstruktor sablonazonosító alapján biztosít hozzáférést, általában egy IDD_ előtaggal (például IDD_DIALOG1).

Ha modális párbeszédpanelt szeretne létrehozni egy sablonból a memóriában, először hívja meg a paraméter nélküli, védett konstruktort, majd hívja meg InitModalIndirect.

Miután létrehoz egy modális párbeszédpanelt a fenti módszerek egyikével, hívja meg a következőt DoModal:

Mód nélküli párbeszédpanel létrehozásához használja a konstruktor védett formáját CDialog . A konstruktor védett, mert a mód nélküli párbeszédpanelek implementálásához saját párbeszédpanel-osztályt kell létrehoznia. A mód nélküli párbeszédpanelek létrehozása kétlépéses folyamat. Először hívja meg a konstruktort; ezután hívja meg a Create tagfüggvényt egy erőforrás-alapú párbeszédpanel létrehozásához, vagy hívja meg CreateIndirect a párbeszédpanel létrehozását egy sablonból a memóriában.

CDialog::Létrehozás

Hívás Create mód nélküli párbeszédpanel létrehozásához egy erőforrásból származó párbeszédpanelsablon használatával.

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

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

Paraméterek

lpszTemplateName
Null értékű sztringet tartalmaz, amely egy párbeszédpanel-sablonerőforrás neve.

pParentWnd
Arra a szülőablak-objektumra mutat ( CWnd típusú), amelyhez a párbeszédpanel-objektum tartozik. Null érték esetén a párbeszédpanel-objektum szülőablaka a fő alkalmazásablakra van állítva.

nIDTemplate
Egy párbeszédpanelsablon-erőforrás azonosítószámát tartalmazza.

Visszaadott érték

Mindkét űrlap nem ero értéket ad vissza, ha a párbeszédpanel létrehozása és inicializálása sikeres volt; egyéb esetben 0.

Megjegyzések

A hívást Create a konstruktoron belülre helyezheti, vagy meghívhatja a konstruktor meghívása után.

A tagfüggvény két formáját Create biztosítjuk a párbeszédpanel-sablon erőforrásához való hozzáféréshez sablonnév vagy sablonazonosító szám alapján (például IDD_DIALOG1).

Mindkét űrlap esetében adjon át egy mutatót a szülőablak-objektumnak. Ha a pParentWnd ÉRTÉKE NULL, a párbeszédpanel a szülő vagy a tulajdonos ablakával jön létre a fő alkalmazásablakban.

A Create tagfüggvény azonnal visszatér, miután létrehozta a párbeszédpanelt.

Használja a WS_VISIBLE stílust a párbeszédpanelsablonban, ha a párbeszédpanelnek a szülőablak létrehozásakor kell megjelennie. Ellenkező esetben meg kell hívnia ShowWindow. További párbeszédpanelstílusokat és alkalmazásukat a Windows SDK DLGTEMPLATE-struktúrájában és az MFC-referenciaablakstílusaiban talál.

A függvény használatával CWnd::DestroyWindow megsemmisítheti a függvény által létrehozott párbeszédpanelt Create .

példa

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

Hívja meg ezt a tagfüggvényt egy mód nélküli párbeszédpanel létrehozásához egy párbeszédpanel-sablonból a memóriában.

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

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

Paraméterek

lpDialogTemplate
A párbeszédpanel létrehozásához használt párbeszédpanel-sablont tartalmazó memóriára mutat. Ez a sablon a Windows SDK-ban leírt DLGTEMPLATE-struktúra és vezérlési információk formájában jelenik meg.

pParentWnd
A párbeszédpanel-objektum szülőablak-objektumára mutat ( CWnd típusú). Null érték esetén a párbeszédpanel-objektum szülőablaka a fő alkalmazásablakra van állítva.

lpDialogInit
Egy DLGINIT-erőforrásra mutat.

hDialogTemplate
Párbeszédpanelsablont tartalmazó leírót tartalmaz a globális memóriához. Ez a sablon a párbeszédpanel minden vezérlőjének struktúrája DLGTEMPLATE és adatai formájában jelenik meg.

Visszaadott érték

Nem kötelező, ha a párbeszédpanel létrehozása és inicializálása sikeresen megtörtént; egyéb esetben 0.

Megjegyzések

A CreateIndirect tagfüggvény azonnal visszatér, miután létrehozta a párbeszédpanelt.

Használja a WS_VISIBLE stílust a párbeszédpanelsablonban, ha a párbeszédpanelnek a szülőablak létrehozásakor kell megjelennie. Ellenkező esetben meg kell hívnia ShowWindow , hogy megjelenjen. A sablon egyéb párbeszédpanel-stílusainak megadásáról a Windows SDK DLGTEMPLATE struktúrájában talál további információt.

A függvény használatával CWnd::DestroyWindow megsemmisítheti a függvény által létrehozott párbeszédpanelt CreateIndirect .

Az ActiveX-vezérlőket tartalmazó párbeszédpanelek további információkat igényelnek egy DLGINIT-erőforrásban.

CDialog::D oModal

Hívja meg ezt a tagfüggvényt a modális párbeszédpanel meghívásához, és ha elkészült, adja vissza a párbeszédpanel eredményét.

virtual INT_PTR DoModal();

Visszaadott érték

Egy int érték, amely megadja a CDialog::EndDialog tagfüggvénynek átadott nResult paraméter értékét, amely a párbeszédpanel bezárására szolgál. A visszatérési érték -1, ha a függvény nem tudta létrehozni a párbeszédpanelt, vagy ha más hiba történt, az IDABORT, amely esetben a kimeneti ablak a GetLastError hibainformációját fogja tartalmazni.

Megjegyzések

Ez a tagfüggvény kezeli a felhasználóval folytatott összes interakciót, amíg a párbeszédpanel aktív. Ez az, ami miatt a párbeszédpanel modális; vagyis a felhasználó csak a párbeszédpanel bezárásával léphet kapcsolatba más ablakokkal.

Ha a felhasználó a párbeszédpanel egyik nyomógombjára (például OK vagy Mégse) kattint, a rendszer meghív egy üzenetkezelő tagfüggvényt( például OnOK vagy OnCancel) a párbeszédpanel bezárására. Az alapértelmezett OnOK tagfüggvény ellenőrzi és frissíti a párbeszédpanel adatait, majd bezárja a párbeszédpanelt az eredményAZONOSÍTÓK értékével, az alapértelmezett OnCancel tagfüggvény pedig a párbeszédpanelt a párbeszédpanel adatainak ellenőrzése és frissítése nélkül zárja be az IDCANCEL eredményekkel. Ezeket az üzenetkezelő függvényeket felülbírálhatja a viselkedésük megváltoztatásához.

Megjegyzés:

PreTranslateMessage A rendszer meghívja a modális párbeszédpanel üzenetfeldolgozására.

példa

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

Hívja meg ezt a tagfüggvényt egy modális párbeszédpanel leállításához.

void EndDialog(int nResult);

Paraméterek

nResult
A párbeszédpanelről a hívónak DoModalvisszaadandó értéket tartalmazza.

Megjegyzések

Ez a tagfüggvény az nResult értéket adja eredményül DoModal. A módosítási párbeszédpanel létrehozásakor a EndDialog függvényt kell használnia a feldolgozás befejezéséhez.

Bármikor hívhat EndDialog , még az OnInitDialogban is, ebben az esetben be kell zárnia a párbeszédpanelt a megjelenítése előtt vagy a bemeneti fókusz beállítása előtt.

EndDialog nem zárja be azonnal a párbeszédpanelt. Ehelyett beállít egy jelzőt, amely arra utasítja a párbeszédpanelt, hogy azonnal bezáródjon, amint az aktuális üzenetkezelő visszatér.

példa

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

Hívja meg a GetDefID tagfüggvényt egy párbeszédpanel alapértelmezett leküldéses vezérlőjének azonosítójának lekéréséhez.

DWORD GetDefID() const;

Visszaadott érték

32 bites érték (DWORD). Ha az alapértelmezett leküldéses gomb azonosítóval rendelkezik, a magas sorrendű szó DC_HASDEFID, az alacsony sorrendű szó pedig az azonosító értékét tartalmazza. Ha az alapértelmezett leküldési gomb nem rendelkezik azonosító értékkel, a visszatérési érték 0.

Megjegyzések

Ez általában egy OK gomb.

CDialog::GotoDlgCtrl

A fókusz áthelyezése a párbeszédpanel megadott vezérlőelemére.

void GotoDlgCtrl(CWnd* pWndCtrl);

Paraméterek

pWndCtrl
A fókusz fogadásához használt ablakot (vezérlőt) azonosítja.

Megjegyzések

Ha pWndCtrlként szeretne átadni egy mutatót a vezérlőre (gyermekablakra), hívja meg a CWnd::GetDlgItem tagfüggvényt, amely egy CWnd objektumra mutató mutatót ad vissza.

példa

Lásd a CWnd::GetDlgItem példát.

CDialog::InitModalIndirect

Hívja meg ezt a tagfüggvényt, hogy inicializáljon egy modális párbeszédpanel-objektumot a memóriában létrehozandó párbeszédpanel-sablonnal.

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

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

Paraméterek

lpDialogTemplate
A párbeszédpanel létrehozásához használt párbeszédpanel-sablont tartalmazó memóriára mutat. Ez a sablon a Windows SDK-ban leírt DLGTEMPLATE-struktúra és vezérlési információk formájában jelenik meg.

hDialogTemplate
Párbeszédpanelsablont tartalmazó leírót tartalmaz a globális memóriához. Ez a sablon a párbeszédpanel minden vezérlőjének struktúrája DLGTEMPLATE és adatai formájában jelenik meg.

pParentWnd
Arra a szülő- vagy tulajdonosablak-objektumra mutat ( CWnd típusú), amelyhez a párbeszédpanel-objektum tartozik. Null érték esetén a párbeszédpanel-objektum szülőablaka a fő alkalmazásablakra van állítva.

lpDialogInit
Egy DLGINIT-erőforrásra mutat.

Visszaadott érték

Nonzero, ha a párbeszédpanel-objektum létrehozása és inicializálása sikeresen megtörtént; egyéb esetben 0.

Megjegyzések

Ha közvetett módon szeretne létrehozni egy modális párbeszédpanelt, először foglaljon le egy globális memóriablokkot, és töltse ki a párbeszédpanelsablonnal. Ezután hívja meg az üres CDialog konstruktort a párbeszédpanel-objektum létrehozásához. Ezután hívja meg InitModalIndirect , hogy tárolja a leírót a memóriában lévő párbeszédpanel-sablonban. A Windows párbeszédpanel később jön létre és jelenik meg, amikor meghívja a DoModal tagfüggvényt.

Az ActiveX-vezérlőket tartalmazó párbeszédpanelek további információkat igényelnek egy DLGINIT-erőforrásban.

CDialog::MapDialogRect

Hívás egy téglalap párbeszédpanel-egységeinek képernyőegységekké alakításához.

void MapDialogRect(LPRECT lpRect) const;

Paraméterek

lpRect
Egy RECT-struktúrára vagy CRect objektumra mutat, amely tartalmazza a konvertálni kívánt párbeszédpanel-koordinátákat.

Megjegyzések

A párbeszédpanel-egységek a párbeszédpanel szövegéhez használt betűtípus karaktereinek átlagos szélességéből és magasságából származtatott jelenlegi párbeszédpanel-alapegységben vannak megosztva. Egy vízszintes egység a párbeszédpanel alapszélesség-mértékegységének egynegyede, egy függőleges egység pedig a párbeszédpanel alapmagasság-egységének egynyolcada.

A GetDialogBaseUnits Windows függvény a rendszer betűtípusának méretadatait adja vissza, de minden párbeszédpanelhez megadhat egy másik betűtípust, ha az erőforrásdefiníciós fájlban a DS_SETFONT stílust használja. A MapDialogRect Windows függvény ehhez a párbeszédpanelhez a megfelelő betűtípust használja.

A MapDialogRect tagfüggvény az lpRect párbeszédpanel-egységeit képernyőegységekre (képpontokra) cseréli, így a téglalap segítségével párbeszédpanelt hozhat létre, vagy vezérlőelemet helyezhet el egy mezőben.

CDialog::NextDlgCtrl

A fókusz áthelyezése a párbeszédpanel következő vezérlőelemére.

void NextDlgCtrl() const;

Megjegyzések

Ha a fókusz a párbeszédpanel utolsó vezérlőjén van, akkor az első vezérlőre kerül.

CDialog::OnCancel

A keretrendszer meghívja ezt a metódust, amikor a felhasználó a Mégse gombra kattint, vagy lenyomja az ESC billentyűt egy modális vagy mód nélküli párbeszédpanelen.

virtual void OnCancel();

Megjegyzések

Felülbírálja ezt a metódust műveletek végrehajtásához (például a régi adatok visszaállításához), amikor egy felhasználó bezárja a párbeszédpanelt a Mégse gombra kattintva vagy az ESC-kulcs lenyomásával. Az alapértelmezett beállítás az EndDialog meghívásával bezár egy modális párbeszédpanelt, amely miatt a DoModal visszaadja az IDCANCEL értéket.

Ha a Mégse gombot egy mód nélküli párbeszédpanelen valósítja meg, felül kell bírálnia a metódust, és meg kell hívnia a OnCancelDestroyWindow-t . Ne hívja meg az alaposztály metódust, mert az meghívja EndDialog, ami láthatatlanná teszi a párbeszédpanelt, de nem pusztítja el.

Megjegyzés:

Ezt a metódust CFileDialog nem lehet felülbírálni, ha Windows XP rendszerben lefordított programban használ objektumot. További információ: CFileDialogCFileDialog Osztály.

példa

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

Ezt a metódust az üzenetre válaszul hívjuk WM_INITDIALOG meg.

virtual BOOL OnInitDialog();

Visszaadott érték

Megadja, hogy az alkalmazás beállította-e a bemeneti fókuszt a párbeszédpanel egyik vezérlőjének. Ha OnInitDialog nemero értéket ad vissza, a Windows a bemeneti fókuszt az alapértelmezett helyre állítja, amely a párbeszédpanel első vezérlője. Az alkalmazás csak akkor tud 0 értéket visszaadni, ha explicit módon állította be a bemeneti fókuszt a párbeszédpanel egyik vezérlőelemére.

Megjegyzések

A Windows a WM_INITDIALOGLétrehozás, a CreateIndirect vagy a DoModal hívások során küldi el az üzenetet a párbeszédpanelre, amely közvetlenül a párbeszédpanel megjelenése előtt következik be.

Bírálja felül ezt a módszert, ha speciális feldolgozást szeretne végezni a párbeszédpanel inicializálásakor. A felülírt verzióban először hívja meg az alaposztályt OnInitDialog , de hagyja figyelmen kívül a visszatérési értékét. Általában a felülírt metódusból fog visszatérni TRUE .

A Windows az OnInitDialog összes Microsoft Foundation Osztálytár párbeszédpanelen megszokott szabványos globális párbeszédpanel-eljárással hívja meg a függvényt. Nem hívja meg ezt a függvényt az üzenettérképen keresztül, ezért ehhez a metódushoz nincs szükség üzenettérkép-bejegyzésre.

Megjegyzés:

Ezt a metódust CFileDialog nem bírálhatja felül, ha Windows Vista vagy újabb operációs rendszereken lefordított programban használ objektumot. A Windows Vista és újabb verziók módosításairól CFileDialog további információt a CFileDialog osztályban talál.

példa

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

Akkor van meghívva, amikor a felhasználó az OK gombra kattint (az IDOK azonosítójú gombra).

virtual void OnOK();

Megjegyzések

Felülbírálja ezt a metódust a műveletek végrehajtásához az OK gomb aktiválásakor. Ha a párbeszédpanel automatikus adatérvényesítést és adatcserét tartalmaz, a metódus alapértelmezett implementációja ellenőrzi a párbeszédpanel adatait, és frissíti az alkalmazás megfelelő változóit.

Ha egy mód nélküli párbeszédpanelen implementálja az OK gombot, felül kell bírálnia a metódust, és meg kell hívnia a OnOKDestroyWindow-t . Ne hívja meg az alaposztály-metódust, mert az EndDialogot hívja meg, amely láthatatlanná teszi a párbeszédpanelt, de nem pusztítja el.

Megjegyzés:

Ezt a metódust CFileDialog nem lehet felülbírálni, ha Windows XP rendszerben lefordított programban használ objektumot. További információ: CFileDialogCFileDialog Osztály.

példa

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

Megadja, hogy a párbeszédpanel-vezérlő milyen betűtípust használ a szöveg rajzolásakor.

Virtual void OnSetFont(CFont* pFont);

Paraméterek

pFont
[in] A párbeszédpanel összes vezérlőjének alapértelmezett betűtípusaként használt betűtípusra mutató mutatót ad meg.

Megjegyzések

A párbeszédpanel a megadott betűtípust használja alapértelmezettként az összes vezérlőhöz.

A párbeszédpanel-szerkesztő általában a párbeszédpanel-sablon erőforrásának részeként állítja be a párbeszédpanel betűtípusát.

Megjegyzés:

Ezt a metódust CFileDialog nem bírálhatja felül, ha Windows Vista vagy újabb operációs rendszereken lefordított programban használ objektumot. A Windows Vista és újabb verziók módosításairól CFileDialog további információt a CFileDialog osztályban talál.

CDialog::P revDlgCtrl

A fókuszt a párbeszédpanel előző vezérlőelemére állítja.

void PrevDlgCtrl() const;

Megjegyzések

Ha a fókusz a párbeszédpanel első vezérlőjén van, akkor a mező utolsó vezérlőelemére kerül.

CDialog::SetDefID

Egy párbeszédpanel alapértelmezett leküldéses vezérlőjének módosítása.

void SetDefID(UINT nID);

Paraméterek

Nid
Megadja annak a leküldéses vezérlőnek az azonosítóját, amely alapértelmezettként jelenik meg.

CDialog::SetHelpID

Beállít egy környezetfüggő súgóazonosítót a párbeszédpanelhez.

void SetHelpID(UINT nIDR);

Paraméterek

nIDR
A környezetfüggő súgóazonosítót adja meg.

Lásd még

MFC-minta DLGCBR32
MFC-minta DLGTEMPL
CWnd osztály
hierarchiadiagram