Sdílet prostřednictvím


Implementace dialogového okna

Existují dva způsoby, jak přidat dialogové okno do projektu ATL: použijte Průvodce dialogem ATL nebo ho přidejte ručně.

Přidání dialogového okna pomocí Průvodce dialogem ATL

V dialogovém okně Přidat třídu vyberte objekt dialogového okna ATL pro přidání dialogového okna do projektu ATL. Podle potřeby vyplňte Průvodce dialogem ATL a klepněte na tlačítko Dokončit. Průvodce přidá do projektu třídu odvozenou z CAxDialogImpl . Otevřete zobrazení zdrojů z nabídky Zobrazení, vyhledejte dialogové okno a poklikáním ho otevřete v editoru prostředků.

Poznámka

Pokud je dialogové okno odvozeno z CAxDialogImpl, může hostovat jak technologie ActiveX, tak ovládací prvky Windows. Pokud nechcete mít režijní náklady na podporu řízení technologie ActiveX ve třídě dialogového okna, použijte místo toho CSimpleDialog nebo CDialogImpl.

Obslužné rutiny zpráv a událostí lze přidat do třídy dialogového okna ze zobrazení třídy. Další informace naleznete v tématu Přidání obslužné rutiny zpráv ATL.

Ruční přidání dialogového okna

Implementace dialogového okna je podobná implementaci okna. Odvozujete třídu z CAxDialogImpl, CDialogImpl nebo CSimpleDialog a deklarujete mapu zpráv pro zpracování zpráv. Musíte však také zadat ID prostředku šablony dialogového okna v odvozené třídě. Aby vaše třída měla tuto hodnotu, musí mít volaný IDD datový člen.

Poznámka

Když vytvoříte dialogové okno pomocí Průvodce dialogem ATL, průvodce automaticky přidá člena IDDenum jako typ.

CDialogImpl umožňuje implementovat modální nebo bezmodální dialogové okno, které je hostitelem ovládacích prvků Windows. CAxDialogImplumožňuje implementovat modální nebo bezmodální dialogové okno, které je hostitelem technologie ActiveX i ovládacích prvků Windows.

Chcete-li vytvořit modální dialogové okno, vytvořte instanci - CDialogImplodvozené (nebo CAxDialogImpl-odvozené) třídy a pak volejte DoModal metoda. Chcete-li zavřít modální dialogové okno, volejte metodu EndDialog z obslužné rutiny zprávy. Chcete-li vytvořit bezmodální dialogové okno, volejte metodu Create místo DoModal. Chcete-li zničit bezmodální dialogové okno, zavolejte DestroyWindow.

Události jímky se automaticky provádějí v CAxDialogImpl. Implementujte obslužné rutiny zpráv dialogového okna stejně jako obslužné rutiny v odvozené CWindowImpltřídě. Pokud existuje návratová hodnota specifická pro zprávu, vraťte ji jako LRESULT. Vrácené LRESULT hodnoty mapuje ATL pro správné zpracování správcem dialogových oken Systému Windows. Podrobnosti najdete ve zdrojovém kódu pro CDialogImplBaseT::D ialogProc v atlwin.h.

Příklad

Následující třída implementuje dialogové okno:

class CMyDialog : public CDialogImpl<CMyDialog>
{
public:
   enum { IDD = IDD_MYDLG };

   BEGIN_MSG_MAP(CMyDialog)
      MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
      COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnBnClickedCancel)
   END_MSG_MAP()

   LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      // Do some initialization code
      return 1;
   }
public:
   LRESULT OnBnClickedCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};

Viz také

Třídy oken