INFORMACE: Vytvoření nemodální dialogové s knihovnami MFC

Překlady článku Překlady článku
ID článku: 103788 - Produkty, které se vztahují k tomuto článku.
Tento článek ukazuje, jak vytvořit nemodální dialogové okno, pomocí prostředku šablony dialogové okno pomocí MFC.

K sestavení CModeless dialogové okno je vhodné dodržovat následující kroky:

  1. Vytvořit dialogové okno třídy odvozené od CDialog a přepsat funkci člen Create() CDialog. Například může mít kód podobná následující:
          class CModeless: public CDialog
               {
                 .
                 .
                 .
                 public:
                     CModeless(){ }
                     BOOL Create(UINT nID, CWnd * pWnd)
                          { return CDialog::Create(nID,pWnd);}
                 .
                 .
                 .
               };
    				
    Poznámka: Při by mohl umožnit ClassWizard třídy dialogové okno Generovat a jednoduše přidat funkci Create().
  2. Zápis kódu sestavit objekt třídy dialogové okno a vytvořit dialogové okno pole. Například máte položky nabídky, která se má zobrazit dialogové okno, můžete mít kód podobná následující:
          void CMainFrame::OnModeless()
            {
                pdlg = new CModeless;
                pdlg->Create(IDD_DIALOG1,this);
            }
    				
    kde CMainFrame::pdlg definován jako:
    CModeless * pdlg;
    Poznámka: Je důležité přidělit objekt na haldy spíše než zásobníku, pokud chcete zabránit nemodální dialogovém byly zničeny při ukončení funkce.
  3. CWnd::DestroyWindow() musí volání v OnCancel nebo kdykoli nemodální dialogovém potřebuje být zničeny.
          void CModeless::OnCancel()
          {
              DestroyWindow();
          }
    				
  4. Přepsat CWnd::PostNcDestroy() třídy dialogové okno Odstranit objekt pole dialogového okna:
       virtual void CModeless::PostNcDestroy() {delete this;}
    				
    PostNcDestroy() je virtuální členské funkce se nazývá OnNcDestroy() funkce třídy CWnd.
Nemodální okno třídy obvykle přepsat OnOK() a člen OnCancel() funkce volání DestroyWindow() a měli není volání funkce CDialog::OnOK() a CDialog::OnCancel() základní třídy. Volání funkce CDialog::OnOK() a CDialog::OnCancel() EndDialog(). EndDialog() by měl být volán pouze při použití modálních dialogových oken.

Pokud používáte DDX (dialog Data Exchange) a ověření dat dialog (DDV) jsi OnOK() popisovač pro třídu dialogové okno může vypadat následující:
   void CModeless::OnOK()
   {
           if (!UpdateData(TRUE))
             {
               TRACE0("UpdateData failed during dialog termination\n");
               // The UpdateData routine will set focus to correct item
               return;
             }
           DestroyWindow();
   }
		
Rozbalit všechny záložky | Minimalizovat všechny záložky

Vlastnosti

ID článku: 103788 - Poslední aktualizace: 21. listopadu 2006 - Revize: 3.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Foundation Class Library 4.2 na těchto platformách
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
Klíčová slova: 
kbmt kbdlg kbinfo kbuidesign KB103788 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:103788
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com