Klasa CView zapewnia podstawowe mechanizmy funkcjonowania wszystkich
definiowanych przez użytkownika klas widoków. Widok jest bezpośrednio związany
z dokumentem i pełni rolę łącznika dokumentu z użytkownikiem. Widok przedstawia
dokument na ekarnie umożliwiając jednocześnie przyjmowanie poleceń od
użytkownika.
Widok jest zwykle obiektem potomnym w stosunku do obiektu okna-ramki typu
CFrameWnd. Jest jak najbardziej
możliwe wykorzystywanie kilku widoków w ramach jednego okna-ramki.
Widok może być powiązany z tylko jednym dokumentem, natomiast każdy
dokument może mieć wiele widoków. Każdy widok może np. pokazywać inne
cechy dokumenu - dane, wykresy itp.
Widok może być odpowiedzialny za przejmowanie obsługi różnych typów
komunikatów: związanych z myszą, klawiaturą, poleceniami z menu czy paska
narzędzi, a także obsługą mechanizmów typu drag & drop. Jeśli widok nie
obsługuje danego zdarzenia, przesyła je dalej do dokumentu.
Widok jest odpowiedzialny za prezentowanie informacji zawartych w dokumencie,
lecz nie za ich przechowywanie (robi to klasa dokumentu). Obiekt widoku może
korzystać z pól dokumentu bezpośrednio lub za pośrednictwem utworzonych w
tym celu metod.
Gdy dane przechowywane w dokumencie ulegają zmianie, widok odpowiedzialny za
prezentację dokumentu wywołuje zwykle metodę CDocument:UpdateAllViews(),
która informuje inne widoki danego dokumentu o konieczności dokonania zmian
prezentowanej zawartości wywołując ich metodę OnUpdate().
Domyślna implementacja tej metody unieważnia cały obszar widoku.
Aby skutecznie używać klasy CView należy utworzyć klasę
dziedziczącą po niej i pokryć metodę OnDraw(). Metoda ta
może być także użyta do obsługi wydruku i podglądu wydruku.
Widok reaguje na komunikaty związane z obsługą pasków przewijania.
Obsługę przewijania dokumentu można zrealizować pokrywając metody
OnHScrol() i OnVScroll(). Można także wykorzystać
specjalnie w tym celu utworzoną klasę dziedziczącą po CView:
CScrollView. Poza klasą
CScrollView biblioteka MFC udostępnia również inne klasy dziedziczące:
| Metody |
Opis |
| IsSelected | Sprawdza czy pozycja dokumentu jest wybrana (OLE). |
| OnActivateView | Wywoływana automatycznie kiedy widok uzyskuje
aktywność. |
| OnActivateFrame | Wywoływana automatycznie gdy okno zawierające
widok jest aktywowane lub traci aktywność. |
| OnBeginPrinting | Wywoływana przy rozpoczęciu drukowania. |
| OnDraw | Wywoływana w celu narysowania widoku. Implementacja
wymagana. |
| OnEndPrinting | Wywoływana przy zakończeniu wydruku. |
| OnEndPrintPreview | Wywoływana przy zakończeniu podglądu wydruku. |
| OnPrepareDC | Wywoływana przed wywołaniem OnDraw()
lub OnPrint(). |
| OnPreparePrinting | Wywoływana zanim dokument jest drukowany lub
przed podglądem wydruku. |
| OnPrint | Wywoływana w celu wydrukowania lub podglądu wydruku
dla dokumentu. |
| OnUpdate | Wywoływana w celu poinformowania widoku o
zaistnieniu zmian w dokumencie. |