Sdílet prostřednictvím


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

Jméno popis
CDialog::CDialog CDialog Vytvoří objekt.

Veřejné metody

Jméno 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

Jméno 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é CDialogtří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 CDialogv tématu Dialogová okna.

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

Cwnd

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.

Vrácená 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ě.

Vrácená 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, která obsahují ovládací prvky technologie 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();

Vrácená 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á DoModalhodnota . 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;

Vrácená 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.

Vrácená 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, která obsahují ovládací prvky technologie 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 CFileDialogCFileDialog 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();

Vrácená 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 CFileDialogCFileDialog 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