CDialog – třída
Základní třída použitá pro zobrazení dialogových oken na obrazovce.
Syntaxe
class CDialog : public CWnd
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDialog::CDialog | CDialog Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CDialog::Create | Inicializuje CDialog objekt. Vytvoří bezmodální dialogové okno a připojí ho k objektu CDialog . |
CDialog::CreateIndirect | Vytvoří bezmodální dialogové okno ze šablony dialogového okna v paměti (nikoli na základě prostředků). |
CDialog::D oModal | Zavolá modální dialogové okno a vrátí se po dokončení. |
CDialog::EndDialog | Zavře modální dialogové okno. |
CDialog::GetDefID | Získá ID výchozího ovládacího prvku pushbutton pro dialogové okno. |
CDialog::GotoDlgCtrl | Přesune fokus na zadaný ovládací prvek dialogového okna v dialogovém okně. |
CDialog::InitModalIndirect | Vytvoří modální dialogové okno ze šablony dialogového okna v paměti (nikoli na základě prostředků). Parametry jsou uloženy, dokud se funkce DoModal nevolá. |
CDialog::MapDialogRect | Převede jednotky dialogového okna obdélníku na jednotky obrazovky. |
CDialog::NextDlgCtrl | Přesune fokus na další ovládací prvek dialogového okna v dialogovém okně. |
CDialog::OnInitDialog | Přepsání pro inicializaci dialogového okna |
CDialog::OnSetFont | Přepsání pro zadání písma, které má ovládací prvek dialogového okna použít při nakreslování textu. |
CDialog::P revDlgCtrl | Přesune fokus na předchozí ovládací prvek dialogového okna v dialogovém okně. |
CDialog::SetDefID | Změní výchozí ovládací prvek pushbutton pro dialogové okno na zadaný tlačítko. |
CDialog::SetHelpID | Nastaví ID nápovědy citlivé na kontext pro toto dialogové okno. |
Chráněné metody
Název | Popis |
---|---|
CDialog::OnCancel | Chcete-li provést akci tlačítka Zrušit nebo klávesu ESC, přepište. Ve výchozím nastavení se dialogové okno zavře a DoModal vrátí idCANCEL. |
CDialog::OnOK | Přepište akci tlačítka OK v modálním dialogovém okně. Ve výchozím nastavení se dialogové okno zavře a DoModal vrátí idOK. |
Poznámky
Dialogová okna mají dva typy: modální a bezmodální. Před pokračováním aplikace musí uživatel zavřít modální dialogové okno. Bezmodální dialogové okno umožňuje uživateli zobrazit dialogové okno a vrátit se k jinému úkolu bez zrušení nebo odebrání dialogového okna.
Objekt CDialog
je kombinací šablony dialogového okna a odvozené CDialog
třídy. Pomocí editoru dialogů vytvořte šablonu dialogového okna a uložte ji do prostředku a pak pomocí průvodce Přidat třídu vytvořte třídu odvozenou z CDialog
.
Dialogové okno, stejně jako jakékoli jiné okno, přijímá zprávy z Windows. V dialogovém okně vás zajímá zejména zpracování zpráv s oznámeními z ovládacích prvků dialogového okna, protože to je způsob, jakým uživatel pracuje s vaším dialogovým oknem. Pomocí Průvodce třídou vyberte, které zprávy chcete zpracovat, a přidá příslušné položky mapování zpráv a členské funkce obslužné rutiny zpráv do třídy za vás. V členských funkcích obslužné rutiny stačí napsat kód specifický pro aplikaci.
Pokud chcete, můžete položky mapy zpráv a členské funkce psát ručně.
Ve všech kromě nejzásadnějších dialogových oknech přidáte do odvozené třídy dialogového okna členské proměnné pro ukládání dat zadaných v ovládacích prvcích dialogového okna uživatelem nebo zobrazení dat pro uživatele. Pomocí průvodce Přidat proměnnou můžete vytvořit členské proměnné a přidružit je k ovládacím prvkům. Zároveň zvolíte typ proměnné a povolený rozsah hodnot pro každou proměnnou. Průvodce kódem přidá členské proměnné do odvozené třídy dialogového okna.
Vygeneruje se mapování dat, které automaticky zpracuje výměnu dat mezi proměnnými členů a ovládacími prvky dialogového okna. Mapa dat poskytuje funkce, které inicializují ovládací prvky v dialogovém okně se správnými hodnotami, načtením dat a ověřením dat.
Chcete-li vytvořit modální dialogové okno, vytvořte objekt v zásobníku pomocí konstruktoru pro odvozenou třídu dialogového okna a volání DoModal
vytvořit dialogové okno a jeho ovládací prvky. Pokud chcete vytvořit bezmodální dialogové okno, zavolejte Create
v konstruktoru třídy dialogového okna.
Šablonu v paměti můžete vytvořit také pomocí datové struktury DLGTEMPLATE , jak je popsáno v sadě Windows SDK. Po vytvoření objektu CDialog
volání CreateIndirect vytvořit bezmodální dialogové okno, nebo volání InitModalIndirect a DoModal vytvořit modální dialogové okno.
Mapa dat výměny a ověření je zapsána v přepsání CWnd::DoDataExchange
, které je přidáno do nové třídy dialogového okna. Další informace o funkcích výměny a ověřování najdete v CWnd
členské funkci DoDataExchange.
Programátor i architektura volají DoDataExchange
nepřímo prostřednictvím volání CWnd::UpdateData.
Rozhraní volá UpdateData
, když uživatel klikne na tlačítko OK a zavře modální dialogové okno. (Data se nenačtou, pokud je kliknulo na tlačítko Storno.) Výchozí implementace OnInitDialog také volá UpdateData
nastavit počáteční hodnoty ovládacích prvků. Obvykle přepíšete OnInitDialog
další inicializaci ovládacích prvků. OnInitDialog
je volána po vytvoření všech ovládacích prvků dialogového okna a těsně před zobrazením dialogového okna.
Během provádění modálního nebo bezmodálního dialogového okna můžete volat CWnd::UpdateData
kdykoli.
Pokud vyvíjíte dialogové okno ručně, přidáte potřebné členské proměnné do odvozené třídy dialogového okna sami a přidáte členské funkce pro nastavení nebo získání těchto hodnot.
Modální dialogové okno se automaticky zavře, když uživatel stiskne tlačítka OK nebo Zrušit nebo když kód zavolá EndDialog
členovou funkci.
Když implementujete bezmodální dialogové okno, vždy přepište OnCancel
členovou funkci a volání DestroyWindow
z ní. Nezavolejte základní třídu CDialog::OnCancel
, protože volá EndDialog
, což způsobí, že dialogové okno neviditelné, ale nezničí ho. Měli byste také přepsat PostNcDestroy
pro bezmodální dialogová okna, aby bylo možné odstranit this
, protože modeless dialogová okna jsou obvykle přidělena new
. Modální dialogová okna jsou obvykle vytvořena na rámečku a nepotřebují PostNcDestroy
vyčištění.
Další informace naleznete CDialog
v tématu Dialogová okna.
Hierarchie dědičnosti
CDialog
Požadavky
Hlavička: afxwin.h
CDialog::CDialog
Chcete-li vytvořit modální dialogové okno založené na prostředcích, zavolejte buď veřejný formulář konstruktoru.
explicit CDialog(
LPCTSTR lpszTemplateName,
CWnd* pParentWnd = NULL);
explicit CDialog(
UINT nIDTemplate,
CWnd* pParentWnd = NULL);
CDialog();
Parametry
lpszTemplateName
Obsahuje řetězec ukončený hodnotou null, který je názvem prostředku šablony dialogového okna.
nIDTemplate
Obsahuje číslo ID prostředku šablony dialogového okna.
pParentWnd
Odkazuje na objekt nadřazeného okna nebo vlastníka (typu CWnd), do kterého objekt dialogového okna patří. Pokud je null, nadřazené okno objektu dialogového okna je nastaveno na hlavní okno aplikace.
Poznámky
Jedna forma konstruktoru poskytuje přístup k prostředku dialogového okna podle názvu šablony. Druhý konstruktor poskytuje přístup podle čísla ID šablony, obvykle s předponou IDD_ (například IDD_DIALOG1).
Chcete-li vytvořit modální dialogové okno ze šablony v paměti, nejprve vyvoláte bezparametrový chráněný konstruktor a potom volání InitModalIndirect
.
Po vytvoření modální dialogové okno s jednou z výše uvedených metod volání DoModal
.
Chcete-li vytvořit bezmodální dialogové okno, použijte chráněný formulář konstruktoru CDialog
. Konstruktor je chráněn, protože je nutné odvodit vlastní třídu dialogového okna pro implementaci bezmodální dialogové okno. Vytvoření bezmodální dialogového okna je dvoustupňový proces. První volání konstruktoru; potom zavolejte Create
členovou funkci a vytvořte dialogové okno založené na prostředcích nebo volání CreateIndirect
pro vytvoření dialogového okna ze šablony v paměti.
CDialog::Create
Volání Create
, které vytvoří bezmodální dialogové okno pomocí šablony dialogového okna z prostředku.
virtual BOOL Create(
LPCTSTR lpszTemplateName,
CWnd* pParentWnd = NULL);
virtual BOOL Create(
UINT nIDTemplate,
CWnd* pParentWnd = NULL);
Parametry
lpszTemplateName
Obsahuje řetězec ukončený hodnotou null, který je názvem prostředku šablony dialogového okna.
pParentWnd
Odkazuje na nadřazený objekt okna (typu CWnd), do kterého objekt dialogového okna patří. Pokud je null, nadřazené okno objektu dialogového okna je nastaveno na hlavní okno aplikace.
nIDTemplate
Obsahuje číslo ID prostředku šablony dialogového okna.
Návratová hodnota
Oba formuláře vrátí nenulové, pokud bylo vytvoření dialogového okna a inicializace úspěšné; jinak 0.
Poznámky
Volání můžete vložit do Create
konstruktoru nebo ho volat po vyvolání konstruktoru.
Pro přístup k prostředku šablony dialogového Create
okna jsou k dispozici dvě formy členské funkce pomocí názvu šablony nebo čísla ID šablony (například IDD_DIALOG1).
U obou formulářů předejte ukazatel na nadřazený objekt okna. Pokud pParentWnd má hodnotu NULL, dialogové okno se vytvoří s nadřazeným oknem nebo oknem vlastníka nastaveným na hlavní okno aplikace.
Členová Create
funkce se vrátí okamžitě po vytvoření dialogového okna.
V šabloně dialogového okna použijte styl WS_VISIBLE, pokud se má dialogové okno zobrazit při vytvoření nadřazeného okna. Jinak musíte zavolat ShowWindow
. Další styly dialogových oken a jejich aplikace naleznete v části DLGTEMPLATE struktury v sadě Windows SDK a styly oken v referenční dokumentaci MFC.
CWnd::DestroyWindow
Pomocí funkce můžete zničit dialogové okno vytvořené funkcíCreate
.
Příklad
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
Voláním této členské funkce vytvoříte bezmodální dialogové okno ze šablony dialogového okna v paměti.
virtual BOOL CreateIndirect(
LPCDLGTEMPLATE lpDialogTemplate,
CWnd* pParentWnd = NULL,
void* lpDialogInit = NULL);
virtual BOOL CreateIndirect(
HGLOBAL hDialogTemplate,
CWnd* pParentWnd = NULL);
Parametry
lpDialogTemplate
Odkazuje na paměť obsahující šablonu dialogového okna použitou k vytvoření dialogového okna. Tato šablona je ve formě struktury DLGTEMPLATE a informací o řízení, jak je popsáno v sadě Windows SDK.
pParentWnd
Odkazuje na nadřazený objekt dialogového okna objektu (typu CWnd). Pokud je null, nadřazené okno objektu dialogového okna je nastaveno na hlavní okno aplikace.
lpDialogInit
Odkazuje na prostředek DLGINIT.
hDialogTemplate
Obsahuje popisovač globální paměti obsahující šablonu dialogového okna. Tato šablona je ve formě DLGTEMPLATE
struktury a dat pro každý ovládací prvek v dialogovém okně.
Návratová hodnota
Nenulové, pokud bylo dialogové okno vytvořeno a inicializováno úspěšně; jinak 0.
Poznámky
Členová CreateIndirect
funkce se vrátí okamžitě po vytvoření dialogového okna.
V šabloně dialogového okna použijte styl WS_VISIBLE, pokud se má dialogové okno zobrazit při vytvoření nadřazeného okna. V opačném případě je nutné volat ShowWindow
, aby se zobrazila. Další informace o tom, jak v šabloně zadat další styly dialogového okna, naleznete v části DLGTEMPLATE struktury v sadě Windows SDK.
CWnd::DestroyWindow
Pomocí funkce můžete zničit dialogové okno vytvořené funkcíCreateIndirect
.
Dialogová okna obsahující ovládací prvky ActiveX vyžadují další informace uvedené v prostředku DLGINIT.
CDialog::D oModal
Voláním této členské funkce vyvoláte modální dialogové okno a po dokončení vrátíte výsledek dialogového okna.
virtual INT_PTR DoModal();
Návratová hodnota
Hodnota int
, která určuje hodnotu nResult parametru, který byl předán CDialog::EndDialog členské funkce, která slouží k zavření dialogového okna. Vrácená hodnota je -1, pokud funkce nemohla vytvořit dialogové okno, nebo IDABORT, pokud došlo k nějaké jiné chybě, v takovém případě bude výstupní okno obsahovat informace o chybě z GetLastError.
Poznámky
Tato členová funkce zpracovává veškerou interakci s uživatelem, když je dialogové okno aktivní. To je to, co dělá dialogové okno modální; to znamená, že uživatel nemůže pracovat s jinými okny, dokud se dialogové okno neuzavře.
Pokud uživatel klikne na jeden z tlačítek v dialogovém okně, například OK nebo Zrušit, je volána členská funkce obslužné rutiny zprávy, například OnOK nebo OnCancel, se pokusí dialogové okno zavřít. Výchozí OnOK
členská funkce ověří a aktualizuje data dialogového okna a zavře dialogové okno s idOK výsledku a výchozí OnCancel
členská funkce zavře dialogové okno s idCANCEL výsledku bez ověření nebo aktualizace dat dialogového okna. Tyto funkce obslužné rutiny zpráv můžete přepsat a změnit jejich chování.
Poznámka:
PreTranslateMessage
je nyní volána pro modální dialogové okno zpracování zpráv.
Příklad
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
Voláním této členské funkce ukončíte modální dialogové okno.
void EndDialog(int nResult);
Parametry
nResult
Obsahuje hodnotu, která se má vrátit z dialogového okna volajícímu DoModal
.
Poznámky
Tato členová funkce vrátí hodnotu nResult jako návratová DoModal
hodnota . Funkci je nutné použít EndDialog
k dokončení zpracování při každém vytvoření modálního dialogového okna.
Můžete volat EndDialog
kdykoli, i v OnInitDialog, v takovém případě byste měli zavřít dialogové okno před zobrazením nebo před nastavením vstupního fokusu.
EndDialog
nezavře dialogové okno okamžitě. Místo toho nastaví příznak, který nasměruje dialogové okno tak, aby se zavřel, jakmile se vrátí aktuální obslužná rutina zprávy.
Příklad
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
Voláním GetDefID
členské funkce získáte ID výchozího ovládacího prvku pushbutton pro dialogové okno.
DWORD GetDefID() const;
Návratová hodnota
32bitová hodnota ( DWORD
). Pokud má výchozí tlačítko hodnotu ID, slovo s vysokým pořadím obsahuje DC_HASDEFID a slovo s nízkým pořadím obsahuje hodnotu ID. Pokud výchozí tlačítko nemá hodnotu ID, je vrácená hodnota 0.
Poznámky
Obvykle se jedná o tlačítko OK.
CDialog::GotoDlgCtrl
Přesune fokus na zadaný ovládací prvek v dialogovém okně.
void GotoDlgCtrl(CWnd* pWndCtrl);
Parametry
pWndCtrl
Identifikuje okno (ovládací prvek), které má dostat fokus.
Poznámky
Chcete-li získat ukazatel na ovládací prvek (podřízené okno) předat jako pWndCtrl, volání CWnd::GetDlgItem
členské funkce, která vrátí ukazatel na CWnd objektu.
Příklad
Podívejte se na příklad pro CWnd::GetDlgItem.
CDialog::InitModalIndirect
Voláním této členské funkce inicializujete modální objekt dialogového okna pomocí šablony dialogového okna, kterou vytvoříte v paměti.
BOOL InitModalIndirect(
LPCDLGTEMPLATE lpDialogTemplate,
CWnd* pParentWnd = NULL,
void* lpDialogInit = NULL);
BOOL InitModalIndirect(
HGLOBAL hDialogTemplate,
CWnd* pParentWnd = NULL);
Parametry
lpDialogTemplate
Odkazuje na paměť obsahující šablonu dialogového okna použitou k vytvoření dialogového okna. Tato šablona je ve formě struktury DLGTEMPLATE a informací o řízení, jak je popsáno v sadě Windows SDK.
hDialogTemplate
Obsahuje popisovač globální paměti obsahující šablonu dialogového okna. Tato šablona je ve formě DLGTEMPLATE
struktury a dat pro každý ovládací prvek v dialogovém okně.
pParentWnd
Odkazuje na objekt nadřazeného okna nebo vlastníka (typu CWnd), do kterého objekt dialogového okna patří. Pokud je null, nadřazené okno objektu dialogového okna je nastaveno na hlavní okno aplikace.
lpDialogInit
Odkazuje na prostředek DLGINIT.
Návratová hodnota
Nenulové, pokud byl objekt dialogového okna vytvořen a inicializován úspěšně; jinak 0.
Poznámky
Chcete-li vytvořit modální dialogové okno nepřímo, nejprve přidělte globální blok paměti a vyplňte ho šablonou dialogového okna. Potom zavolejte prázdný CDialog
konstruktor pro vytvoření objektu dialogového okna. Dále zavolejte InitModalIndirect
, aby se popisovač ukládal do šablony dialogového okna v paměti. Dialogové okno Windows se vytvoří a zobrazí později při zavolání členské funkce DoModal .
Dialogová okna obsahující ovládací prvky ActiveX vyžadují další informace uvedené v prostředku DLGINIT.
CDialog::MapDialogRect
Volání pro převod jednotek dialogového okna obdélníku na jednotky obrazovky
void MapDialogRect(LPRECT lpRect) const;
Parametry
lpRect
Odkazuje na strukturu RECT nebo CRect objekt, který obsahuje souřadnice dialogového okna, které mají být převedeny.
Poznámky
Jednotky dialogového okna jsou uvedeny z aktuální základní jednotky dialogového okna odvozené z průměrné šířky a výšky znaků v písmu použitém pro text dialogového okna. Jedna vodorovná jednotka je jedna čtvrtá jednotka základní šířky dialogového okna a jedna svislá jednotka je jedna osmá z jednotky základní výšky dialogového okna.
Funkce GetDialogBaseUnits
Windows vrátí informace o velikosti pro systémové písmo, ale pro každé dialogové okno můžete zadat jiné písmo, pokud v souboru definice prostředku použijete styl DS_SETFONT. Funkce MapDialogRect
Windows používá příslušné písmo pro toto dialogové okno.
Členová MapDialogRect
funkce nahrazuje jednotky dialogového okna v lpRect jednotkami obrazovky (pixely), aby bylo možné obdélník použít k vytvoření dialogového okna nebo umístění ovládacího prvku do pole.
CDialog::NextDlgCtrl
Přesune fokus na další ovládací prvek v dialogovém okně.
void NextDlgCtrl() const;
Poznámky
Pokud je fokus na posledním ovládacím prvku v dialogovém okně, přesune se na první ovládací prvek.
CDialog::OnCancel
Architektura volá tuto metodu, když uživatel klikne na Tlačítko Storno nebo stiskne klávesu ESC v modálním nebo bezmodálním dialogovém okně.
virtual void OnCancel();
Poznámky
Tuto metodu přepište tak, aby prováděla akce (například obnovení starých dat), když uživatel zavře dialogové okno kliknutím na tlačítko Storno nebo stisknutím klávesy ESC. Výchozí nastavení zavře modální dialogové okno voláním EndDialog a způsobuje DoModal vrátit IDCANCEL.
Pokud implementujete tlačítko Cancel v bezmodální dialogové okno, musíte přepsat metodu OnCancel
a volat DestroyWindow uvnitř. Nevolejte metodu základní třídy, protože volá EndDialog
, což způsobí, že dialogové okno neviditelné, ale nezničí jej.
Poznámka:
Tuto metodu CFileDialog
nelze přepsat při použití objektu v programu kompilovaném v systému Windows XP. Další informace o CFileDialog
CFileDialog Třída.
Příklad
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
Tato metoda je volána v reakci na WM_INITDIALOG
zprávu.
virtual BOOL OnInitDialog();
Návratová hodnota
Určuje, zda aplikace nastavila vstupní fokus na jeden z ovládacích prvků v dialogovém okně. Pokud OnInitDialog
vrátí nenulovou hodnotu, systém Windows nastaví vstupní fokus na výchozí umístění, první ovládací prvek v dialogovém okně. Aplikace může vrátit hodnotu 0 pouze v případě, že explicitně nastavila vstupní fokus na jeden z ovládacích prvků v dialogovém okně.
Poznámky
Systém Windows odešle WM_INITDIALOG
zprávu do dialogového okna během volání Create, CreateIndirect nebo DoModal , ke kterým dojde bezprostředně před zobrazením dialogového okna.
Tuto metodu přepište, pokud chcete provést speciální zpracování při inicializaci dialogového okna. V přepsáné verzi nejprve zavolejte základní třídu OnInitDialog
, ale ignorujte její návratovou hodnotu. Obvykle se vrátíte TRUE
z přepsáné metody.
Systém Windows volá OnInitDialog
funkci pomocí standardního globálního dialogového okna, který je společný pro všechna dialogová okna Knihovny tříd Microsoft Foundation. Tuto funkci nevolá prostřednictvím mapy zpráv, a proto pro tuto metodu nepotřebujete položku mapy zpráv.
Poznámka:
Tuto metodu CFileDialog
nelze přepsat při použití objektu v programu, který je zkompilován v operačních systémech Windows Vista nebo novější. Další informace ozměnách CFileDialog
Příklad
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
Volá se, když uživatel klikne na tlačítko OK (tlačítko s IDOK).
virtual void OnOK();
Poznámky
Tuto metodu přepište, aby se při aktivaci tlačítka OK provedly akce. Pokud dialogové okno obsahuje automatické ověření a výměnu dat, výchozí implementace této metody ověří data dialogového okna a aktualizuje příslušné proměnné ve vaší aplikaci.
Pokud implementujete tlačítko OK v bezmodální dialogové okno, musíte přepsat metodu OnOK
a volat DestroyWindow uvnitř. Nevolejte metodu základní třídy, protože volá EndDialog , což zpřístupňuje dialogové okno neviditelné, ale nezničí ji.
Poznámka:
Tuto metodu CFileDialog
nelze přepsat při použití objektu v programu kompilovaném v systému Windows XP. Další informace o CFileDialog
CFileDialog Třída.
Příklad
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
Určuje písmo, které bude ovládací prvek dialogového okna použit při kreslení textu.
Virtual void OnSetFont(CFont* pFont);
Parametry
pFont
[v] Určuje ukazatel na písmo, které se použije jako výchozí písmo pro všechny ovládací prvky v tomto dialogovém okně.
Poznámky
Toto dialogové okno použije zadané písmo jako výchozí pro všechny jeho ovládací prvky.
Editor dialogového okna obvykle nastavuje písmo dialogového okna jako součást prostředku šablony dialogového okna.
Poznámka:
Tuto metodu CFileDialog
nelze přepsat při použití objektu v programu, který je zkompilován v operačních systémech Windows Vista nebo novější. Další informace ozměnách CFileDialog
CDialog::P revDlgCtrl
Nastaví fokus na předchozí ovládací prvek v dialogovém okně.
void PrevDlgCtrl() const;
Poznámky
Pokud je fokus na prvním ovládacím prvku v dialogovém okně, přesune se do posledního ovládacího prvku v poli.
CDialog::SetDefID
Změní výchozí ovládací prvek pushbutton pro dialogové okno.
void SetDefID(UINT nID);
Parametry
Nid
Určuje ID ovládacího prvku pushbutton, který se stane výchozím.
CDialog::SetHelpID
Nastaví ID nápovědy citlivé na kontext pro toto dialogové okno.
void SetHelpID(UINT nIDR);
Parametry
nIDR
Určuje ID nápovědy citlivé na kontext.
Viz také
Ukázková DLGCBR32 MFC
MFC – ukázka DLGTEMPL
CWnd – třída
Graf hierarchie