Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
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