Istnieją dwa sposoby na okno dialogowe Dodawanie do projektu ATL: Użyj Kreatora obiektu ATL lub dodać go ręcznie.
W Kreatorze przeprowadzonej przez ATL obiektu (menuWstaw , polecenie Nowy obiekt ATL ) podświetl kategorię mieszaną w lewym okienku, a następnie kliknij dwukrotnie obiekt okna dialogowego w prawym okienku, aby okno dialogowe Dodawanie do projektu ATL. Wypełnij okno dialogowe Właściwości kreatora obiektu ATL odpowiednio i kliknij przycisk OK. Kreator obiektu ATL dodaje klasę pochodną CAxDialogImpl do projektu i otwiera Edytor zasobów z szablonu pole dialogowe.
Uwaga Jeśli twoje okno dialogowe pochodzi od CAxDialogImpl , można obsługiwać formantów ActiveX i systemu Windows. Chcąc ogólne wsparcie formantu ActiveX w klasie pole dialogowe, użyj CSimpleDialog lub CDialogImpl zamiast.
Wiadomości i wydarzenia można dodać do swojej klasy okno dialogowe z ClassView, w taki sam sposób jak do klasy MFC. ClassView kliknij prawym przyciskiem myszy klasę i wybierz polecenie Dodaj obsługi wiadomości systemu Windows do otwierania okna dialogowego Nowa wiadomość systemu Windows i programów obsługi zdarzeń . Aby uzyskać więcej informacji zobacz Dodawanie obsługi wiadomości.
Aby otworzyć okno dialogowe nowy komunikat systemu Windows i programów obsługi zdarzeń z szablonu pola okna dialogowego, kliknij prawym przyciskiem myszy formant w szablonie pole dialogowe i wybierz polecenie zdarzenia z menu skrótów. W projekcie ATL klasy pole dialogowe zostanie wyróżniony w polu klasy lub obiektu do obsługi ; Dlatego projektu MFC, formant jest wyróżniony.
Wykonawczych okno dialogowe jest podobny do wykonania okna. Pochodną klasy CAxDialogImpl, CDialogImpllub CSimpleDialog i zadeklarować wiadomości mapę do obsługi wiadomości. Jednakże należy również określić identyfikator zasobu szablonu okna dialogowego w klasie pochodnej. Klasa musi mieć element danych o nazwie IDD do przechowywania tej wartości.
Uwaga Tworząc okno dialogowe za pomocą Kreatora obiektu ATL, Kreator automatycznie dodaje IDD członka typu enum.
CDialogImpl umożliwia wdrożenie modalny lub niemodalny dialogowym obsługującego formanty programu Windows. CAxDialogImpl umożliwia wdrożenie modalny lub niemodalny dialogowym obsługującego formanty ActiveX i Windows.
Aby utworzyć modalnego okna dialogowego, utworzenie wystąpienia użytkownika CDialogImpl-uzyskane (lub CAxDialogImpl-pochodnych) klasy, a następnie wywołać metodę DoModal . Aby zamknąć okno dialogowe, należy wywołać metodę EndDialog z obsługi wiadomości. Aby utworzyć okno dialogowe niemodalny, należy wywołać metodę tworzenia zamiast DoModal. Zniszczenie okno dialogowe niemodalny, wywołanie DestroyWindow.
Jeśli obiekt pole dialogowe zawiera formanty ActiveX są obsługa zdarzeń z tych formantów, konieczne będzie doradzać i unadvise wszystkich interfejsów formantu ActiveX. Można to zrobić, dodając poniższy wiersz kodu do Twojej InitDialog funkcji:
AtlAdviseSinkMap (pMyDlg, TRUE)
Aby unadvise wszystkie formanty ActiveX, należy dodać następujący wiersz kodu użytkownika EndDialog funkcji (lub funkcja wywoływana po wygaśnięciu obiekt pole dialogowe):
AtlAdviseSinkMap (pMyDlg, FAŁSZ)
Wdrożenie obsługi wiadomości okno dialogowe, podobnie jak programy obsługi w CWindowImpl-klasy. Jeżeli istnieje wartość zwracany specyficzne dla wiadomości, zwraca je jako LRESULT . Zwrócony LRESULT wartości są mapowane przez ATL do właściwej obsługi przez menedżera okno dialogowe systemu Windows. Aby uzyskać szczegółowe informacje zobacz kod źródłowy dla CDialogImplBaseT::DialogProc w atlwin.h.
Przykład
Następujące klasy implementuje okno dialogowe:
klasa CMyDialog: CDialogImpllt publicznych;CMyDialog >,...
{
publiczne:
Wylicz {IDD = IDD_MYDIALOG};
BEGIN_MSG_MAP(CMyDialog)
MESSAGE_HANDLER (WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
/ / Do niektórych inicjowania kodu
zwrócona wartość 1;
}
}