Przykład: wyświetlanie okna dialogowego za pomocą polecenia menu
Ten temat zawiera procedury dotyczące:
Wyświetl modalne okno dialogowe za pomocą polecenia menu.
Wyświetlanie okna dialogowego bez moderowania za pomocą polecenia menu.
Obie procedury przykładowe są przeznaczone dla aplikacji MFC i będą działać w aplikacji utworzonej za pomocą Kreatora aplikacji MFC.
Procedury używają następujących nazw i wartości:
Produkt | Nazwa lub wartość |
---|---|
Aplikacja | DisplayDialog |
Polecenie menu | Polecenie Testuj w menu Widok; Identyfikator polecenia = ID_VIEW_TEST |
Okno dialogowe | Test — okno dialogowe; Class = CTestDialog; Plik nagłówka = TestDialog.h; Zmienna = testdlg, ptestdlg |
Procedura obsługi poleceń | OnViewTest |
Aby wyświetlić modalne okno dialogowe
Utwórz polecenie menu; Zobacz Tworzenie menu lub elementów menu.
Utwórz okno dialogowe; zobacz Uruchamianie edytora okien dialogowych.
Dodaj klasę dla okna dialogowego. Aby uzyskać więcej informacji, zobacz Dodawanie klasy .
W widoku klasy wybierz klasę dokumentu (CDisplayDialogDoc). W oknie Właściwości kliknij przycisk Zdarzenia. Kliknij dwukrotnie identyfikator polecenia menu (ID_VIEW_TEST). Następnie kliknij strzałkę w dół i wybierz pozycję <Dodaj> OnViewTest.
Jeśli dodano polecenie menu do komputera mainframe aplikacji MDI, zamiast tego wybierz klasę aplikacji (CDisplayDialogApp).
Dodaj następującą instrukcję include do CDisplayDialogDoc.cpp (lub CDisplayDialogApp.cpp) po istniejących instrukcjach include:
#include "TestDialog.h"
Dodaj następujący kod, aby
OnViewTest
zaimplementować funkcję:CTestDialog testdlg; testdlg.DoModal();
Aby wyświetlić okno dialogowe bez moderowania
Wykonaj pierwsze cztery kroki, aby wyświetlić modalne okno dialogowe, z wyjątkiem wybrania klasy widoku (CDisplayDialogView) w kroku 4.
Edytuj displayDialogView.h:
- Zadeklaruj klasę okna dialogowego poprzedzającą pierwszą deklarację klasy:
class CTestDialog;
- Zadeklaruj wskaźnik do okna dialogowego po sekcji Atrybuty publiczne:
CTestDialog* m_pTestDlg;
Edytuj plik DisplayDialogView.cpp:
- Dodaj następującą instrukcję include po istniejących instrukcjach include:
#include "TestDialog.h"
- Dodaj następujący kod do konstruktora:
m_pTestDlg = NULL;
- Dodaj następujący kod do destruktora:
delete m_pTestDlg;
- Dodaj następujący kod, aby
OnViewTest
zaimplementować funkcję:
if (NULL == m_pTestDlg) { m_pTestDlg = new CTestDialog(this); m_pTestDlg->Create(CTestDialog::IDD, this); } m_pTestDlg->ShowWindow(SW_SHOW);