TN025: Dokument, widok i tworzenia ramki

Uwaga ta opisano problemy tworzenie i własności, WinApps, DocTemplates, dokumenty, ramek i widoki. Większość tych informacji oraz inne interesujące tworzenia i kwestie własności, można znaleźć w Visual C++ Programmer's Guide.

WinApp

Istnieje jeden obiekt CWinApp w systemie.

Statycznie zbudowane i zainicjowany przez ramy realizacji wewnętrznego WinMain. Muszą pochodzić od CWinApp do anything przydatne (wyjątek: rozszerzenie dll nie powinny mieć wystąpienie CWinApp — inicjowania odbywa się w DllMain zamiast).

Jeden obiekt CWinApp jest właścicielem listę szablonów dokumentów ( CPtrList). Istnieje jeden lub więcej szablon dokumentu na jeden wniosek. DocTemplates zwykle są załadowane z pliku zasobów (czyli tablicy ciągów) w CWinApp::InitInstance.

pTemplate = new CDocTemplate (IDR_MYDOCUMENT,...);
AddDocTemplate(pTemplate)

Jeden obiekt CWinApp jest właścicielem wszystkich okien ramki w aplikacji. Okno główne ramek dla aplikacji powinny być przechowywane w CWinApp::m_pMainWnd; zazwyczaj można ustawić m_pMainWnd w realizacji InitInstance jeśli nie mają pozwolić AppWizard to zrobić dla Ciebie. Dla interfejsu pojedynczego dokumentu (SDI) to jednym CFrameWnd , który służy jako okna głównego aplikacji ramki, a także tylko okna dokumentu w ramce. MDI (MDI) to MDI-ramka (klasa CMDIFrameWnd), która służy jako okna Ramka głównej aplikacji, który zawiera wszystkie podrzędne CFrameWnds. Każde z okien podrzędnych jest klasy CMDIChildWnd (pochodzące z CFrameWnd) i służy jako jedno z potencjalnie wiele dokumentów ramki okien.

DocTemplates

CDocTemplate jest twórcę i Menedżer dokumentów. Jest właścicielem dokumentów, które tworzy. Jeśli aplikacja używa podejścia opartego na zasób opisane poniżej, będzie trzeba wynikają z CDocTemplate.

Dla aplikacji SDI klasa CSingleDocTemplate przechowuje informacje o jeden otwarty dokument. Dla aplikacji MDI klasa CMultiDocTemplate przechowuje listę ( CPtrList) dokumentów aktualnie otwartych utworzony na podstawie tego szablonu. CDocTemplate::AddDocument i CDocTemplate::RemoveDocument dostarczają wirtualny Państwa funkcje Dodawanie lub usuwanie dokumentu od szablonu. CDocTemplate – przyjaciel CDocument , dzięki czemu możemy ustawić chronionych wskaźnik wstecz CDocument::m_pDocTemplate , aby wskazać szablon doc, który utworzył dokument.

CWinApp obsługuje Domyślna implementacja OnFileOpen , co z kolei będzie kwerendy wszystkie szablony doc. Wykonania zawiera szukasz już otwarte dokumenty i podejmowaniu decyzji, jakie formatowanie do otwierania nowych dokumentów w.

CDocTemplate zarządza wiązania interfejsu użytkownika dla dokumentów i ramek.

CDocTemplate zlicza liczbę dokumentów bez nazwy.

CDocument

CDocument jest własnością CDocTemplate.

Dokumenty mają listę aktualnie otwartego widoków (pochodzące z CView), które oglądasz dokument ( CPtrList).

Dokumenty nie utworzyć/zniszczyć widoków, ale są podłączone do siebie po ich tworzenia. Po zamknięciu dokumentu (oznacza to, że do pliku/Close), wszystkie widoki dołączone zostaną zamknięte. Podczas ostatniego widoku dokumentu jest zamknięta (to jest, zamknij okno /) dokument zostanie zamknięte.

CDocument::AddView, RemoveView interfejsu jest wykorzystywana do utrzymywania na liście Widok. CDocument jest przyjaciela CView , dzięki czemu możemy ustawić wskaźnik Wróć CView::m_pDocument.

CFrameWnd

CFrameWnd (również znany jako ramki) odtwarzany tę samą rolę w MFC 1.0, ale teraz klasy CFrameWnd jest przeznaczony do użycia w wielu przypadkach bez wynikające nowej klasy. Klas pochodnych CMDIFrameWnd i CMDIChildWnd są również rozszerzone tak wielu standardowe polecenia są już wykonywane.

CFrameWnd jest odpowiedzialny za stworzenie systemu windows w obszarze klienta ramki. Normalnie istnieje jedno okno główne wypełnianie obszaru klienckiego ramki.

Dla okna MDI-ramki obszaru klienckiego jest wypełniona kontroli MDICLIENT, który z kolei jest elementem nadrzędnym wszystkich okien ramki podrzędnym MDI. Dla okna SDI-ramkę lub okno potomne MDI ramki obszaru klienckiego zazwyczaj jest wypełniona CView-pochodnych obiektu window. Z CSplitterWnd, obszaru klienckiego widoku jest wypełniona obiekt window CSplitterWnd i CView-pochodnej okno obiekty (po jednym na okienka podzielonego) są tworzone jako dziecko windows CSplitterWnd.

Uwagi techniczne przez liczbę |nbsp; Uwagi techniczne według kategorii

Index