Dokumenty, widoki i struktura
W centrum struktury MFC znajdują się pojęcia dotyczące dokumentu i widoku. Dokument to obiekt danych, z którym użytkownik wchodzi w interakcję w sesji edycji. Jest on tworzony przez polecenie Nowy lub Otwórz w menu Plik i jest zwykle zapisywany w pliku. (Standardowe dokumenty MFC, pochodzące z klasy CDocument
, różnią się od dokumentów aktywnych i dokumentów złożonych OLE). Widok to obiekt okna, za pomocą którego użytkownik wchodzi w interakcję z dokumentem.
Obiekty kluczy w uruchomionej aplikacji to:
Obiekty wątku
Jeśli aplikacja tworzy oddzielne wątki wykonywania — na przykład w celu wykonywania obliczeń w tle — użyjesz klas pochodnych z
CWinThread
klasy .CWinApp
sam element pochodzi zCWinThread
i reprezentuje podstawowy wątek wykonywania (lub główny proces) w aplikacji. MFC można również używać w wątkach pomocniczych.Obiekt aplikacji
Klasa aplikacji (pochodna z
CWinApp
) steruje wszystkimi powyższymi obiektami i określa zachowanie aplikacji, takie jak inicjowanie i oczyszczanie. Jeden obiekt aplikacji i tylko aplikacja tworzy szablony dokumentów dla wszystkich typów dokumentów, które obsługuje aplikacja i zarządza nimi.Szablon lub szablony dokumentu
Szablon dokumentu organizuje tworzenie dokumentów, widoków i okien ramowych. Określona klasa szablonu dokumentu, pochodząca z klasy
CDocTemplate
, tworzy wszystkie otwarte dokumenty jednego typu i zarządza nimi. Aplikacje obsługujące więcej niż jeden typ dokumentu mają wiele szablonów dokumentów. Użyj klasy CSingleDocTemplate dla aplikacji SDI lub użyj klasyCMultiDocTemplate
dla aplikacji MDI.Okna ramowe
Widoki są wyświetlane wewnątrz "okien ramek dokumentu". W aplikacji SDI okno ramki dokumentu jest również "głównym oknem ramowym" dla aplikacji. W aplikacji MDI okna dokumentów są oknami podrzędnym wyświetlanymi w głównym oknie ramowym. Pochodna główna klasa okien ramowych określa style i inne cechy okien ramowych, które zawierają widoki. Jeśli musisz dostosować okna ramowe, należy dostosować
CFrameWnd
okno ramki dokumentu dla aplikacji SDI.CMDIFrameWnd
Utwórz z programu , aby dostosować główne okno ramki dla aplikacji MDI. Utwórz również klasę zCMDIChildWnd
, aby dostosować każdy odrębny rodzaj okien ramek dokumentów MDI, które obsługuje aplikacja.Dokument lub dokumenty.
Klasa dokumentu (pochodna z
CDocument
) określa dane aplikacji.Jeśli chcesz, aby funkcje OLE w aplikacji pochodziły z klasy dokumentów lub jednej z
COleDocument
jej klas pochodnych, w zależności od typu potrzebnych funkcji.Widok lub widoki.
Klasa widoku (pochodna )
CView
to "okno użytkownika w danych". Klasa widoku kontroluje sposób, w jaki użytkownik widzi dane dokumentu i współdziała z nim. W niektórych przypadkach możesz chcieć, aby dokument miał wiele widoków danych.Jeśli potrzebujesz przewijania, pochodzi z .
CScrollView
Jeśli widok ma interfejs użytkownika, który został ułożony w zasobie szablonu okna dialogowego, pochodzą z elementuCFormView
. W przypadku prostych danych tekstowych użyj polecenia lub pochodzą zCEditView
elementu . W przypadku aplikacji dostępu do danych opartej na formularzach, takiej jak program wprowadzania danych, pochodzą zCRecordView
(dla ODBC). Dostępne są również klasyCTreeView
,CListView
iCRichEditView
.
W uruchomionej aplikacji te obiekty współpracują z akcjami użytkownika, powiązanymi ze sobą za pomocą poleceń i innych komunikatów. Pojedynczy obiekt aplikacji zarządza co najmniej jednym szablonem dokumentów. Każdy szablon dokumentu tworzy co najmniej jeden dokument i zarządza nim (w zależności od tego, czy aplikacja jest sdI, czy MDI). Użytkownik wyświetla i manipuluje dokumentem za pośrednictwem widoku zawartego w oknie ramowym. Na poniższej ilustracji przedstawiono relacje między tymi obiektami dla aplikacji SDI.
Obiekty w uruchomionej aplikacji SDI
W pozostałej części artykułów wyjaśniono, w jaki sposób narzędzia platformowe, Kreator aplikacji MFC i edytory zasobów tworzą te obiekty, jak współpracują ze sobą i jak są używane w programowaniu. Dokumenty, widoki i okna ramowe zostały omówione bardziej szczegółowo w temacie Obiekty okien i Architektura dokumentu/widoku.