Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Aktywna biblioteka szablonów (ATL) nadal jest obsługiwana. Nie dodajemy już funkcji ani nie aktualizujemy dokumentacji.
Istnieją dwa sposoby dodawania okna dialogowego do projektu ATL: użyj Kreatora okna dialogowego ATL lub dodaj je ręcznie.
Dodawanie okna dialogowego za pomocą Kreatora okna dialogowego ATL
W oknie dialogowym Add Class wybierz obiekt okna dialogowego ATL, aby dodać okno dialogowe do projektu ATL. Wypełnij odpowiednie okno dialogowe ATL, a następnie kliknij przycisk Zakończ. Kreator dodaje klasę wywodzącą się z CAxDialogImpl do Twojego projektu. Otwórz widok zasobu z menu Widok, znajdź okno dialogowe i kliknij go dwukrotnie, aby otworzyć go w edytorze zasobów.
Uwaga
Jeśli okno dialogowe pochodzi z CAxDialogImpl, może obsługiwać zarówno kontrolki ActiveX, jak i Windows. Jeśli nie chcesz dodatkowymi zasobami związanymi z obsługą kontrolek ActiveX w klasie okna dialogowego, zamiast tego użyj CSimpleDialog lub CDialogImpl.
Programy obsługi komunikatów i zdarzeń można dodać do klasy okna dialogowego z widoku klasy. Aby uzyskać więcej informacji, zobacz Dodawanie programu obsługi komunikatów ATL.
Ręczne dodawanie okna dialogowego
Implementowanie okna dialogowego jest podobne do implementowania okna. Dziedziczysz klasę z CAxDialogImpl, CDialogImpl, lub CSimpleDialog i deklarujesz mapę wiadomości do obsługi komunikatów. Należy jednak również określić identyfikator zasobu szablonu okna dialogowego w klasie pochodnej. Klasa musi mieć składową danych o nazwie IDD , aby przechowywać tę wartość.
Uwaga
Kiedy tworzysz okno dialogowe za pomocą Kreatora okien dialogowych ATL, kreator automatycznie dodaje element członkowski IDD jako typ enum.
CDialogImpl umożliwia zaimplementowanie modalnego lub niemodalnego okna dialogowego, które hostuje kontrolki Windows.
CAxDialogImpl Umożliwia zaimplementowanie modalnego lub niemodalnego okna dialogowego, które hostuje zarówno kontrolki ActiveX, jak i Windows.
Aby utworzyć modalne okno dialogowe, utwórz wystąpienie klasy pochodnej CDialogImpl (lub CAxDialogImpl-pochodnej), a następnie wywołaj metodę DoModal. Aby zamknąć modalne okno dialogowe, wywołaj metodę EndDialog z programu obsługi komunikatów. Aby utworzyć okno dialogowe bez trybu modalnego, wywołaj metodę Create zamiast DoModal. Aby zniszczyć okno dialogowe bez trybu modalnego, wywołaj DestroyWindow.
Zdarzenia są przechwytywane automatycznie w CAxDialogImpl. Zaimplementuj procedury obsługi komunikatów okna dialogowego, tak, jak procedury obsługi w CWindowImplklasie pochodnej. Jeśli istnieje wartość zwracana specyficzna dla komunikatu, zwróć ją jako wartość LRESULT. Zwrócone wartości LRESULT są mapowane przez ATL w celu właściwego zarządzania przez menedżera okien dialogowych. Aby uzyskać szczegółowe informacje, zobacz kod źródłowy CDialogImplBaseT::DialogProc w pliku atlwin.h.
Przykład
Poniższa klasa implementuje okno dialogowe:
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*/);
};