CView
Klasa
Udostępnia podstawowe funkcje klas widoków zdefiniowanych przez użytkownika.
Składnia
class AFX_NOVTABLE CView : public CWnd
Elementy członkowskie
Konstruktory chronione
Nazwa/nazwisko | opis |
---|---|
CView::CView |
CView Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CView::DoPreparePrinting |
Wyświetla okno dialogowe Drukowanie i tworzy kontekst urządzenia drukarki; wywołanie podczas zastępowania funkcji składowej OnPreparePrinting . |
CView::GetDocument |
Zwraca dokument skojarzony z widokiem. |
CView::IsSelected |
Sprawdza, czy wybrano element dokumentu. Wymagane do obsługi OLE. |
CView::OnDragEnter |
Wywoływana, gdy element jest najpierw przeciągany do obszaru przeciągania i upuszczania widoku. |
CView::OnDragLeave |
Wywoływane, gdy przeciągnięty element opuszcza obszar przeciągania i upuszczania widoku. |
CView::OnDragOver |
Wywoływana, gdy element jest przeciągany w regionie przeciągania i upuszczania widoku. |
CView::OnDragScroll |
Wywoływana w celu określenia, czy kursor jest przeciągany do obszaru przewijania okna. |
CView::OnDrop |
Wywoływana, gdy element został porzucony w regionie przeciągania i upuszczania widoku, domyślny program obsługi. |
CView::OnDropEx |
Wywoływana, gdy element został porzucony w regionie przeciągania i upuszczania widoku, podstawowego programu obsługi. |
CView::OnInitialUpdate |
Wywoływane po pierwszym dołączeniu widoku do dokumentu. |
CView::OnPrepareDC |
Wywoływana przed wywołaniem funkcji składowej OnDraw na potrzeby wyświetlania ekranu lub OnPrint funkcji składowej jest wywoływana na potrzeby drukowania lub podglądu wydruku. |
CView::OnScroll |
Wywoływane, gdy elementy OLE są przeciągane poza granice widoku. |
CView::OnScrollBy |
Wywoływana, gdy jest przewijany widok zawierający aktywne elementy OLE w miejscu. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
CView::OnActivateFrame |
Wywoływana, gdy okno ramki zawierające widok jest aktywowane lub dezaktywowane. |
CView::OnActivateView |
Wywoływana po aktywowaniu widoku. |
CView::OnBeginPrinting |
Wywoływana po rozpoczęciu zadania drukowania; zastąpić w celu przydzielenia zasobów interfejsu urządzenia graficznego (GDI). |
CView::OnDraw |
Wywoływana w celu renderowania obrazu dokumentu na potrzeby wyświetlania, drukowania lub podglądu wydruku. Wymagana implementacja. |
CView::OnEndPrinting |
Wywoływane po zakończeniu zadania drukowania; zastąpić cofnięcie przydziału zasobów GDI. |
CView::OnEndPrintPreview |
Wywoływana po zakończeniu trybu podglądu. |
CView::OnPreparePrinting |
Wywoływane przed wydrukowanie lub wyświetlenie podglądu dokumentu; zastąpić, aby zainicjować okno dialogowe Drukowanie. |
CView::OnPrint |
Wywoływana w celu drukowania lub wyświetlania podglądu strony dokumentu. |
CView::OnUpdate |
Wywoływana w celu powiadomienia widoku o modyfikacji dokumentu. |
Uwagi
Widok jest dołączony do dokumentu i działa jako pośrednik między dokumentem a użytkownikiem: widok renderuje obraz dokumentu na ekranie lub drukarce i interpretuje dane wejściowe użytkownika jako operacje na dokumencie.
Widok jest elementem podrzędnym okna ramowego. Więcej niż jeden widok może współużytkować okno ramki, tak jak w przypadku okna podziału. Relacja między klasą widoku, klasą okien ramowych i klasą dokumentu jest ustanawiana CDocTemplate
przez obiekt. Gdy użytkownik otworzy nowe okno lub podzieli istniejące, struktura tworzy nowy widok i dołącza go do dokumentu.
Widok można dołączyć tylko do jednego dokumentu, ale dokument może mieć wiele widoków dołączonych do niego jednocześnie — na przykład jeśli dokument jest wyświetlany w oknie rozdzielacza lub w wielu oknach podrzędnych w aplikacji interfejsu wielu dokumentów (MDI). Aplikacja może obsługiwać różne typy widoków dla danego typu dokumentu; Na przykład program do przetwarzania wyrazów może zawierać zarówno pełny widok tekstu dokumentu, jak i widok konspektu, który zawiera tylko nagłówki sekcji. Te różne typy widoków można umieścić w oddzielnych oknach ramowych lub w oddzielnych okienkach pojedynczego okna ramowego, jeśli używasz okna podziału.
Widok może być odpowiedzialny za obsługę kilku różnych typów danych wejściowych, takich jak wprowadzanie klawiatury, wprowadzanie myszy lub wprowadzanie za pomocą przeciągania i upuszczania, a także poleceń z menu, pasków narzędzi lub pasków przewijania. Widok odbiera polecenia przekazywane przez okno ramki. Jeśli widok nie obsługuje danego polecenia, przekazuje polecenie do skojarzonego dokumentu. Podobnie jak wszystkie obiekty docelowe poleceń, widok obsługuje komunikaty za pośrednictwem mapy komunikatów.
Widok jest odpowiedzialny za wyświetlanie i modyfikowanie danych dokumentu, ale nie za ich przechowywanie. Dokument zawiera widok z niezbędnymi szczegółami dotyczącymi jego danych. Możesz zezwolić widokowi na bezpośredni dostęp do składowych danych dokumentu lub udostępnić funkcje składowe w klasie dokumentów, aby klasa widoku mogła wywołać metodę .
Gdy dane dokumentu zmienią się, widok odpowiedzialny za zmiany zwykle wywołuje CDocument::UpdateAllViews
funkcję dokumentu, która powiadamia wszystkie inne widoki, wywołując OnUpdate
funkcję składową dla każdego z nich. Domyślna implementacja OnUpdate
unieważnia cały obszar klienta widoku. Można go zastąpić, aby unieważnić tylko te regiony obszaru klienta, które są mapowane na zmodyfikowane fragmenty dokumentu.
Aby użyć CView
metody , utwórz z niej klasę i zaimplementuj funkcję składową w celu wykonania wyświetlania OnDraw
ekranu. Można również użyć OnDraw
funkcji do drukowania i drukowania podglądu. Platforma obsługuje pętlę drukowania na potrzeby drukowania i wyświetlania podglądu dokumentu.
Widok obsługuje komunikaty paska przewijania CWnd::OnHScroll
z funkcjami elementów członkowskich i CWnd::OnVScroll
. Możesz zaimplementować obsługę komunikatów paska przewijania w tych funkcjach lub użyć klasy CScrollView
pochodnej CView
do obsługi przewijania.
Oprócz CScrollView
programu biblioteka klas programu Microsoft Foundation udostępnia dziewięć innych klas pochodnych z CView
klasy :
CCtrlView
, widok, który umożliwia użycie dokumentu — architektura widoku z drzewami, listami i kontrolkami edycji wzbogaconej.CDaoRecordView
, widok, który wyświetla rekordy bazy danych w kontrolkach okna dialogowego.CEditView
, widok, który udostępnia prosty wielowierszowy edytor tekstów. Obiekt można użyćCEditView
jako kontrolki w oknie dialogowym, a także widoku w dokumencie.CFormView
, widok z możliwością przewijania, który zawiera kontrolki okna dialogowego i jest oparty na zasobie szablonu okna dialogowego.CListView
, widok, który umożliwia użycie dokumentu — architektura widoku z kontrolkami listy.CRecordView
, widok, który wyświetla rekordy bazy danych w kontrolkach okna dialogowego.CRichEditView
, widok, który umożliwia użycie dokumentu — architektura widoku z zaawansowanymi kontrolkami edycji.CScrollView
, widok, który automatycznie zapewnia obsługę przewijania.CTreeView
, widok, który umożliwia użycie dokumentu — wyświetlanie architektury z kontrolkami drzewa.
Klasa CView
ma również pochodną klasę implementacji o nazwie CPreviewView
, która jest używana przez platformę do wykonywania podglądu wydruku. Ta klasa zapewnia obsługę funkcji unikatowych dla okna podglądu wydruku, takich jak pasek narzędzi, podgląd pojedynczej lub podwójnej strony oraz powiększanie, czyli powiększanie podglądu obrazu. Nie musisz wywoływać ani zastępować żadnych CPreviewView
funkcji członkowskich, chyba że chcesz zaimplementować własny interfejs na potrzeby podglądu wydruku (na przykład jeśli chcesz obsługiwać edycję w trybie podglądu wydruku). Aby uzyskać więcej informacji na temat korzystania z programu CView
, zobacz Architektura i drukowanie dokumentów/widoków. Ponadto zobacz Technical Note 30 (Uwaga techniczna 30 ), aby uzyskać więcej informacji na temat dostosowywania podglądu wydruku.
Hierarchia dziedziczenia
CView
Wymagania
Nagłówek: afxwin.h
CView::CView
CView
Tworzy obiekt.
CView();
Uwagi
Struktura wywołuje konstruktora, gdy zostanie utworzone nowe okno ramki lub zostanie podzielone okno. Zastąpić funkcję składową OnInitialUpdate
, aby zainicjować widok po dołączeniu dokumentu.
CView::DoPreparePrinting
Wywołaj tę funkcję z przesłonięcia , OnPreparePrinting
aby wywołać okno dialogowe Drukowanie i utworzyć kontekst urządzenia drukarki.
BOOL DoPreparePrinting(CPrintInfo* pInfo);
Parametry
pInfo
CPrintInfo
Wskazuje strukturę, która opisuje bieżące zadanie drukowania.
Wartość zwracana
Bez zera, jeśli drukowanie lub podgląd wydruku można rozpocząć; 0, jeśli operacja została anulowana.
Uwagi
Zachowanie tej funkcji zależy od tego, czy jest wywoływana do drukowania, czy podglądu wydruku (określonego m_bPreview
przez element członkowski parametru pInfo
). Jeśli plik jest drukowany, ta funkcja wywołuje okno dialogowe Drukowanie, używając wartości w CPrintInfo
strukturze pInfo
wskazującej; po zamknięciu okna dialogowego przez użytkownika funkcja tworzy kontekst urządzenia drukarki na podstawie ustawień użytkownika określonego w oknie dialogowym i zwraca ten kontekst urządzenia za pomocą parametru pInfo
. Ten kontekst urządzenia służy do drukowania dokumentu.
Jeśli jest podgląd pliku, ta funkcja tworzy kontekst urządzenia drukarki przy użyciu bieżących ustawień drukarki; ten kontekst urządzenia jest używany do symulowania drukarki podczas podglądu.
CView::GetDocument
Wywołaj tę funkcję, aby uzyskać wskaźnik do dokumentu widoku.
CDocument* GetDocument() const;
Wartość zwracana
Wskaźnik do obiektu skojarzonego CDocument
z widokiem. NULL
jeśli widok nie jest dołączony do dokumentu.
Uwagi
Umożliwia to wywoływanie funkcji składowych dokumentu.
CView::IsSelected
Wywoływana przez strukturę w celu sprawdzenia, czy wybrany jest określony element dokumentu.
virtual BOOL IsSelected(const CObject* pDocItem) const;
Parametry
pDocItem
Wskazuje testowany element dokumentu.
Wartość zwracana
Niezero, jeśli wybrany jest określony element dokumentu; w przeciwnym razie 0.
Uwagi
Domyślna implementacja tej funkcji zwraca wartość FALSE
. Zastąpi tę funkcję, jeśli implementujesz wybór przy użyciu CDocItem
obiektów. Tę funkcję należy zastąpić, jeśli widok zawiera elementy OLE.
CView::OnActivateFrame
Wywoływana przez platformę, gdy okno ramki zawierające widok jest aktywowane lub dezaktywowane.
virtual void OnActivateFrame(
UINT nState,
CFrameWnd* pFrameWnd);
Parametry
nState
Określa, czy okno ramki jest aktywowane, czy dezaktywowane. Może to być jedna z następujących wartości:
WA_INACTIVE
Okno ramki jest dezaktywowane.WA_ACTIVE
Okno ramki jest aktywowane za pomocą innej metody niż kliknięcie myszą (na przykład za pomocą interfejsu klawiatury do wybrania okna).WA_CLICKACTIVE
Okno ramki jest aktywowane przez kliknięcie myszą
pFrameWnd
Wskaźnik do okna ramki, który ma zostać aktywowany.
Uwagi
Zastąpi tę funkcję składową, jeśli chcesz wykonać specjalne przetwarzanie, gdy okno ramki skojarzone z widokiem jest aktywowane lub dezaktywowane. Na przykład CFormView
wykonuje to przesłonięcia podczas zapisywania i przywracania kontrolki, która ma fokus.
CView::OnActivateView
Wywoływana przez platformę, gdy widok jest aktywowany lub dezaktywowany.
virtual void OnActivateView(
BOOL bActivate,
CView* pActivateView,
CView* pDeactiveView);
Parametry
bActivate
Wskazuje, czy widok jest aktywowany, czy dezaktywowany.
pActivateView
Wskazuje obiekt widoku, który jest aktywowany.
pDeactiveView
Wskazuje obiekt widoku, który jest dezaktywowany.
Uwagi
Domyślna implementacja tej funkcji ustawia fokus na aktywowany widok. Zastąpi tę funkcję, jeśli chcesz wykonać specjalne przetwarzanie po aktywowaniu lub dezaktywowaniu widoku. Jeśli na przykład chcesz podać specjalne wskazówki wizualne, które odróżniają aktywny widok od nieaktywnych widoków, należy odpowiednio zbadać bActivate
parametr i zaktualizować wygląd widoku.
Parametry pActivateView
i pDeactiveView
wskazują ten sam widok, jeśli główne okno ramki aplikacji jest aktywowane bez zmian w aktywnym widoku — na przykład jeśli fokus jest przenoszony z innej aplikacji do tego, a nie z jednego widoku do innego w aplikacji lub podczas przełączania między oknami podrzędnymi MDI. Dzięki temu widok może w razie potrzeby ponownie zrealizować paletę.
Te parametry różnią się w przypadku CFrameWnd::SetActiveView
wywoływanego widoku, który różni się od tego, co CFrameWnd::GetActiveView
zwróci. Dzieje się to najczęściej w oknach rozdzielanych.
CView::OnBeginPrinting
Wywoływana przez platformę na początku zadania podglądu wydruku lub wydruku po OnPreparePrinting
wywołaniu.
virtual void OnBeginPrinting(
CDC* pDC,
CPrintInfo* pInfo);
Parametry
pDC
Wskazuje kontekst urządzenia drukarki.
pInfo
CPrintInfo
Wskazuje strukturę, która opisuje bieżące zadanie drukowania.
Uwagi
Domyślna implementacja tej funkcji nic nie robi. Zastąpi tę funkcję, aby przydzielić wszelkie zasoby GDI, takie jak pióra lub czcionki, potrzebne specjalnie do drukowania. Wybierz obiekty GDI w kontekście urządzenia z poziomu funkcji składowej OnPrint
dla każdej strony, która ich używa. Jeśli używasz tego samego obiektu widoku do wyświetlania i drukowania ekranu, użyj oddzielnych zmiennych dla zasobów GDI wymaganych dla każdego wyświetlacza; dzięki temu można zaktualizować ekran podczas drukowania.
Tej funkcji można również użyć do wykonywania inicjalizacji, które zależą od właściwości kontekstu urządzenia drukarki. Na przykład liczba stron potrzebnych do wydrukowania dokumentu może zależeć od ustawień określonych przez użytkownika w oknie dialogowym Drukowanie (np. długość strony). W takiej sytuacji nie można określić długości dokumentu w funkcji składowej OnPreparePrinting
, w której normalnie to zrobić. Należy poczekać, aż kontekst urządzenia drukarki zostanie utworzony na podstawie ustawień okna dialogowego. OnBeginPrinting
jest pierwszą funkcją, która umożliwia zastąpienie dostępu do obiektu reprezentującego CDC
kontekst urządzenia drukarki, dzięki czemu można ustawić długość dokumentu z tej funkcji. Należy pamiętać, że jeśli długość dokumentu nie jest określona tym razem, pasek przewijania nie jest wyświetlany podczas podglądu wydruku.
CView::OnDragEnter
Wywoływana przez strukturę, gdy mysz po raz pierwszy wchodzi w region bez przewijania okna docelowego upuszczania.
virtual DROPEFFECT OnDragEnter(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Parametry
pDataObject
Wskazuje przeciągnięcie do COleDataObject
obszaru upuszczania widoku.
dwKeyState
Zawiera stan kluczy modyfikatora. Jest to kombinacja dowolnej liczby następujących: MK_CONTROL
, , MK_SHIFT
MK_ALT
, MK_LBUTTON
, MK_MBUTTON
, i MK_RBUTTON
.
point
Bieżąca pozycja myszy względem obszaru klienta widoku.
Wartość zwracana
Wartość typu wyliczonego DROPEFFECT
, która wskazuje typ upuszczania, który występuje, jeśli użytkownik porzucił obiekt na tej pozycji. Typ upuszczania zwykle zależy od bieżącego stanu klucza wskazanego przez dwKeyState
. Standardowe mapowanie parametrów keystates na DROPEFFECT
wartości to:
DROPEFFECT_NONE
Nie można usunąć obiektu danych w tym oknie.DROPEFFECT_LINK
w obszarzeMK_CONTROL|MK_SHIFT
Tworzy połączenie między obiektem a jego serwerem.DROPEFFECT_COPY
dlaMK_CONTROL
tworzy kopię porzuconego obiektu.DROPEFFECT_MOVE
w poluMK_ALT
Tworzy kopię usuniętego obiektu i usuń oryginalny obiekt. Zazwyczaj jest to domyślny efekt upuszczania, gdy widok może zaakceptować ten obiekt danych.
Aby uzyskać więcej informacji, zobacz przykładowe OCLIENT
pojęcia zaawansowane MFC .
Uwagi
Domyślna implementacja to nic nie robić i zwracać wartość DROPEFFECT_NONE
.
Zastąpi tę funkcję, aby przygotować się do przyszłych wywołań funkcji składowej OnDragOver
. Wszystkie dane wymagane z obiektu danych powinny być pobierane w tej chwili do późniejszego użycia w funkcji składowej OnDragOver
. Widok powinien być również aktualizowany w tej chwili, aby przekazać opinię o wizualizacji użytkownika. Aby uzyskać więcej informacji, zobacz artykuł Przeciąganie i upuszczanie OLE: Implementowanie miejsca docelowego upuszczania.
CView::OnDragLeave
Wywoływana przez platformę podczas operacji przeciągania, gdy mysz zostanie przeniesiona z prawidłowego obszaru upuszczania dla tego okna.
virtual void OnDragLeave();
Uwagi
Zastąp tę funkcję, jeśli bieżący widok musi wyczyścić wszelkie akcje wykonywane podczas OnDragEnter
lub OnDragOver
wywołania, takie jak usunięcie wszelkich opinii użytkownika wizualizacji podczas przeciągania i porzucania obiektu.
CView::OnDragOver
Wywoływana przez platformę podczas operacji przeciągania po przeniesieniu myszy nad oknem docelowym upuszczania.
virtual DROPEFFECT OnDragOver(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Parametry
pDataObject
COleDataObject
Wskazuje przeciągnięty przez obiekt docelowy upuszczania.
dwKeyState
Zawiera stan kluczy modyfikatora. Jest to kombinacja dowolnej liczby następujących: MK_CONTROL
, , MK_SHIFT
MK_ALT
, MK_LBUTTON
, MK_MBUTTON
, i MK_RBUTTON
.
point
Bieżąca pozycja myszy względem obszaru klienta widoku.
Wartość zwracana
Wartość typu wyliczonego DROPEFFECT
, która wskazuje typ upuszczania, który występuje, jeśli użytkownik porzucił obiekt na tej pozycji. Typ upuszczania często zależy od bieżącego stanu klucza wskazanego przez dwKeyState
. Standardowe mapowanie parametrów keystates na DROPEFFECT
wartości to:
DROPEFFECT_NONE
Nie można usunąć obiektu danych w tym oknie.DROPEFFECT_LINK
w obszarzeMK_CONTROL|MK_SHIFT
Tworzy połączenie między obiektem a jego serwerem.DROPEFFECT_COPY
dlaMK_CONTROL
tworzy kopię porzuconego obiektu.DROPEFFECT_MOVE
w poluMK_ALT
Tworzy kopię usuniętego obiektu i usuń oryginalny obiekt. Zazwyczaj jest to domyślny efekt upuszczania, gdy widok może zaakceptować obiekt danych.
Aby uzyskać więcej informacji, zobacz przykładowe OCLIENT
pojęcia zaawansowane MFC .
Uwagi
Domyślna implementacja to nic nie robić i zwracać wartość DROPEFFECT_NONE
.
Zastąpi tę funkcję, aby przekazać użytkownikowi opinię podczas operacji przeciągania. Ponieważ ta funkcja jest wywoływana w sposób ciągły, każdy zawarty w nim kod powinien być zoptymalizowany jak najwięcej. Aby uzyskać więcej informacji, zobacz artykuł Przeciąganie i upuszczanie OLE: Implementowanie miejsca docelowego upuszczania.
CView::OnDragScroll
Wywoływana przez platformę przed wywołaniem OnDragEnter
metody lub OnDragOver
określenie, czy punkt znajduje się w regionie przewijania.
virtual DROPEFFECT OnDragScroll(
DWORD dwKeyState,
CPoint point);
Parametry
dwKeyState
Zawiera stan kluczy modyfikatora. Jest to kombinacja dowolnej liczby następujących: MK_CONTROL
, , MK_SHIFT
MK_ALT
, MK_LBUTTON
, MK_MBUTTON
, i MK_RBUTTON
.
point
Zawiera lokalizację kursora w pikselach względem ekranu.
Wartość zwracana
Wartość typu wyliczonego DROPEFFECT
, która wskazuje typ upuszczania, który występuje, jeśli użytkownik porzucił obiekt na tej pozycji. Typ upuszczania zwykle zależy od bieżącego stanu klucza wskazanego przez dwKeyState
. Standardowe mapowanie parametrów keystates na DROPEFFECT
wartości to:
DROPEFFECT_NONE
Nie można usunąć obiektu danych w tym oknie.DROPEFFECT_LINK
w obszarzeMK_CONTROL|MK_SHIFT
Tworzy połączenie między obiektem a jego serwerem.DROPEFFECT_COPY
dlaMK_CONTROL
tworzy kopię porzuconego obiektu.DROPEFFECT_MOVE
w poluMK_ALT
Tworzy kopię usuniętego obiektu i usuń oryginalny obiekt.DROPEFFECT_SCROLL
Wskazuje, że operacja przeciągania przewijania ma się pojawić lub występuje w widoku docelowym.
Aby uzyskać więcej informacji, zobacz przykładowe OCLIENT
pojęcia zaawansowane MFC .
Uwagi
Zastąpi tę funkcję, gdy chcesz zapewnić specjalne zachowanie dla tego zdarzenia. Domyślna implementacja automatycznie przewija okna po przeciągnięciu kursora do domyślnego regionu przewijania wewnątrz obramowania każdego okna. Aby uzyskać więcej informacji, zobacz artykuł Przeciąganie i upuszczanie OLE: Implementowanie miejsca docelowego upuszczania.
CView::OnDraw
Wywoływana przez platformę w celu renderowania obrazu dokumentu.
virtual void OnDraw(CDC* pDC) = 0;
Parametry
pDC
Wskazuje kontekst urządzenia, który ma być używany do renderowania obrazu dokumentu.
Uwagi
Struktura wywołuje tę funkcję do wykonywania wyświetlania, drukowania i podglądu wydruku ekranu, a w każdym przypadku przekazuje inny kontekst urządzenia. Nie ma implementacji domyślnej.
Aby wyświetlić widok dokumentu, musisz zastąpić tę funkcję. Wywołania interfejsu urządzenia graficznego (GDI) można wykonywać przy użyciu CDC
obiektu wskazanego pDC
przez parametr . Przed rysunkiem można wybrać zasoby GDI, takie jak pióra lub czcionki, do kontekstu urządzenia, a następnie usunąć ich zaznaczenie. Często kod rysunku może być niezależny od urządzenia; oznacza to, że nie wymaga informacji o typie urządzenia wyświetlającego obraz.
Aby zoptymalizować rysunek, wywołaj RectVisible
funkcję składową kontekstu urządzenia, aby dowiedzieć się, czy zostanie narysowany dany prostokąt. Jeśli musisz odróżnić normalne wyświetlanie ekranu i drukowanie, wywołaj IsPrinting
funkcję składową kontekstu urządzenia.
CView::OnDrop
Wywoływana przez platformę, gdy użytkownik zwalnia obiekt danych nad prawidłowym obiektem docelowym upuszczania.
virtual BOOL OnDrop(
COleDataObject* pDataObject,
DROPEFFECT dropEffect,
CPoint point);
Parametry
pDataObject
Wskazuje wartość COleDataObject
upuszczaną do wartości docelowej spadku.
dropEffect
Efekt upuszczania żądany przez użytkownika.
DROPEFFECT_COPY
Tworzy kopię usuniętego obiektu danych.DROPEFFECT_MOVE
Przenosi obiekt danych do bieżącej lokalizacji myszy.DROPEFFECT_LINK
Tworzy połączenie między obiektem danych a jego serwerem.
point
Bieżąca pozycja myszy względem obszaru klienta widoku.
Wartość zwracana
Nonzero, jeśli spadek zakończył się pomyślnie; w przeciwnym razie 0.
Uwagi
Domyślna implementacja nie wykonuje niczego i zwraca wartość FALSE
.
Zastąpi tę funkcję, aby zaimplementować efekt upuszczania OLE w obszarze klienta widoku. Obiekt danych można zbadać za pomocą pDataObject
formatu danych schowka i danych porzuconych w określonym punkcie.
Uwaga
Struktura nie wywołuje tej funkcji, jeśli w tej klasie widoku istnieje przesłonięcia OnDropEx
.
CView::OnDropEx
Wywoływana przez platformę, gdy użytkownik zwalnia obiekt danych nad prawidłowym obiektem docelowym upuszczania.
virtual DROPEFFECT OnDropEx(
COleDataObject* pDataObject,
DROPEFFECT dropDefault,
DROPEFFECT dropList,
CPoint point);
Parametry
pDataObject
Wskazuje wartość COleDataObject
upuszczaną do wartości docelowej spadku.
dropDefault
Efekt, który użytkownik wybrał dla domyślnej operacji upuszczania na podstawie bieżącego stanu klucza. Może to być DROPEFFECT_NONE
. Efekty upuszczania zostały omówione w sekcji Uwagi.
dropList
Lista efektów upuszczania, które obsługuje źródło drop. Wartości efektu upuszczania można łączyć przy użyciu operacji bitowej OR ( ). |
Efekty upuszczania zostały omówione w sekcji Uwagi.
point
Bieżąca pozycja myszy względem obszaru klienta widoku.
Wartość zwracana
Efekt upuszczania, który wynikał z próby upuszczania w lokalizacji określonej przez point
. Musi to być jedna z wartości wskazanych przez dropEffectList
. Efekty upuszczania zostały omówione w sekcji Uwagi.
Uwagi
Domyślna implementacja to nic nie robić i zwracać fikcyjną wartość ( -1 ), aby wskazać, że struktura powinna wywołać procedurę OnDrop
obsługi.
Zastąpij tę funkcję, aby zaimplementować efekt przeciągania i upuszczania prawego przycisku myszy. Przeciąganie i upuszczanie prawego przycisku myszy zwykle wyświetla menu opcji po zwolnieniu prawego przycisku myszy.
Przesłonięcia OnDropEx
polecenia powinny wykonywać zapytania dotyczące prawego przycisku myszy. Możesz wywołać GetKeyState
lub zapisać prawy stan przycisku myszy z OnDragEnter
programu obsługi.
Jeśli prawy przycisk myszy jest wyłączony, przesłonięcia powinny wyświetlić menu podręczne, które oferuje obsługę efektów upuszczania przez źródło rozwijane.
Sprawdź
dropList
, czy efekty upuszczania są obsługiwane przez źródło upuszczania. Włącz tylko te akcje w menu podręcznym.Użyj
SetMenuDefaultItem
polecenia , aby ustawić domyślną akcję nadropDefault
podstawie .Na koniec wykonaj akcję wskazaną przez wybór użytkownika z menu podręcznego.
Jeśli prawy przycisk myszy nie jest wyłączony, przesłonięcia powinny przetworzyć to jako standardowe żądanie upuszczania. Użyj efektu upuszczania określonego w pliku
dropDefault
. Alternatywnie przesłonięcia mogą zwrócić fikcyjną wartość (-1), aby wskazać, żeOnDrop
będzie obsługiwać tę operację upuszczania.
Użyj pDataObject
polecenia , aby sprawdzić COleDataObject
format danych schowka i dane porzucone w określonym punkcie.
Efekty upuszczania opisują akcję skojarzną z operacją upuszczania. Zobacz następującą listę efektów upuszczania:
DROPEFFECT_NONE
Spadek nie będzie dozwolony.DROPEFFECT_COPY
Zostanie wykonana operacja kopiowania.DROPEFFECT_MOVE
Zostanie wykonana operacja przenoszenia.DROPEFFECT_LINK
Zostanie ustanowione łącze z porzuconych danych do oryginalnych danych.DROPEFFECT_SCROLL
Wskazuje, że operacja przeciągania przewijania ma się pojawić lub występuje w obiekcie docelowym.
Aby uzyskać więcej informacji na temat ustawiania domyślnego polecenia menu, zobacz SetMenuDefaultItem
w zestawie Windows SDK i CMenu::GetSafeHmenu
w tym woluminie.
CView::OnEndPrinting
Wywoływana przez platformę po wydrukowaniu lub wyświetleniu podglądu dokumentu.
virtual void OnEndPrinting(
CDC* pDC,
CPrintInfo* pInfo);
Parametry
pDC
Wskazuje kontekst urządzenia drukarki.
pInfo
CPrintInfo
Wskazuje strukturę, która opisuje bieżące zadanie drukowania.
Uwagi
Domyślna implementacja tej funkcji nic nie robi. Zastąpij tę funkcję, aby zwolnić wszystkie zasoby GDI przydzielone w funkcji składowej OnBeginPrinting
.
CView::OnEndPrintPreview
Wywoływana przez platformę, gdy użytkownik kończy tryb podglądu wydruku.
virtual void OnEndPrintPreview(
CDC* pDC,
CPrintInfo* pInfo,
POINT point,
CPreviewView* pView);
Parametry
pDC
Wskazuje kontekst urządzenia drukarki.
pInfo
CPrintInfo
Wskazuje strukturę, która opisuje bieżące zadanie drukowania.
point
Określa punkt na stronie, który był ostatnio wyświetlany w trybie podglądu.
pView
Wskazuje obiekt widoku używany do wyświetlania podglądu.
Uwagi
Domyślna implementacja tej funkcji wywołuje OnEndPrinting
funkcję składową i przywraca główne okno ramki do stanu, w którego znajdowało się przed rozpoczęciem podglądu wydruku. Zastąpij tę funkcję, aby wykonywać specjalne przetwarzanie po zakończeniu trybu podglądu. Jeśli na przykład chcesz zachować pozycję użytkownika w dokumencie podczas przełączania z trybu podglądu na normalny tryb wyświetlania, możesz przewinąć do pozycji opisanej przez point
parametr i m_nCurPage
składową CPrintInfo
struktury, do której pInfo
wskazuje parametr .
Zawsze należy wywołać wersję klasy bazowej OnEndPrintPreview
z przesłonięcia, zazwyczaj na końcu funkcji.
CView::OnInitialUpdate
Wywoływana przez platformę po pierwszym dołączeniu widoku do dokumentu, ale przed początkowym wyświetleniem widoku.
virtual void OnInitialUpdate();
Uwagi
Domyślna implementacja tej funkcji wywołuje OnUpdate
funkcję składową bez informacji wskazówek (czyli przy użyciu wartości domyślnych 0 dla parametru lHint
i NULL
parametru pHint
). Zastąpi tę funkcję, aby wykonać jednokrotną inicjację, która wymaga informacji o dokumencie. Jeśli na przykład aplikacja ma dokumenty o stałym rozmiarze, możesz użyć tej funkcji, aby zainicjować limity przewijania widoku na podstawie rozmiaru dokumentu. Jeśli aplikacja obsługuje dokumenty o zmiennym rozmiarze, użyj polecenia OnUpdate
, aby zaktualizować limity przewijania za każdym razem, gdy dokument ulegnie zmianie.
CView::OnPrepareDC
Wywoływana przez platformę przed wywołaniem funkcji składowej OnDraw
na potrzeby wyświetlania ekranu i przed OnPrint
wywołaniem funkcji składowej dla każdej strony podczas drukowania lub podglądu wydruku.
virtual void OnPrepareDC(
CDC* pDC,
CPrintInfo* pInfo = NULL);
Parametry
pDC
Wskazuje kontekst urządzenia, który ma być używany do renderowania obrazu dokumentu.
pInfo
CPrintInfo
Wskazuje strukturę, która opisuje bieżące zadanie drukowania, jeśli OnPrepareDC
jest wywoływana do drukowania lub podglądu wydruku; m_nCurPage
element członkowski określa stronę, która ma być drukowana. Ten parametr jest NULL
wywoływany OnPrepareDC
na potrzeby wyświetlania ekranu.
Uwagi
Domyślna implementacja tej funkcji nie działa, jeśli funkcja jest wywoływana na potrzeby wyświetlania ekranu. Jednak ta funkcja jest zastępowana w klasach pochodnych, takich jak CScrollView
, w celu dostosowania atrybutów kontekstu urządzenia. W związku z tym należy zawsze wywoływać implementację klasy bazowej na początku przesłonięcia.
Jeśli funkcja jest wywoływana do drukowania, domyślna implementacja sprawdza informacje o stronie przechowywane w parametrze pInfo
. Jeśli długość dokumentu nie została określona, zakłada, OnPrepareDC
że dokument będzie długi na jednej stronie i zatrzymuje pętlę drukowania po wydrukowaniu jednej strony. Funkcja zatrzymuje pętlę drukowania, ustawiając m_bContinuePrinting
element członkowski struktury na FALSE
.
Zastąpij OnPrepareDC
dowolne z następujących powodów:
Aby dostosować atrybuty kontekstu urządzenia zgodnie z potrzebami dla określonej strony. Jeśli na przykład musisz ustawić tryb mapowania lub inne cechy kontekstu urządzenia, zrób to w tej funkcji.
Aby wykonać stronicowanie w czasie drukowania. Zwykle podczas drukowania określa się długość dokumentu, używając funkcji składowej
OnPreparePrinting
. Jeśli jednak nie wiesz z wyprzedzeniem, jak długo dokument jest (na przykład podczas drukowania nieokreślonej liczby rekordów z bazy danych), przesłońOnPrepareDC
go, aby przetestować koniec dokumentu podczas drukowania. Jeśli nie ma więcej dokumentu do wydrukowania, ustawm_bContinuePrinting
element członkowskiCPrintInfo
struktury naFALSE
.Aby wysłać kody ucieczki do drukarki na podstawie strony. Aby wysłać kody ucieczki z
OnPrepareDC
polecenia , wywołajEscape
funkcję składową parametrupDC
.
Wywołaj wersję klasy bazowej OnPrepareDC
na początku przesłonięcia.
Przykład
void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
CView::OnPrepareDC(pDC, pInfo);
// If we are printing, set the mapmode and the window
// extent properly, then set viewport extent. Use the
// SetViewportOrg member function in the CDC class to
// move the viewport origin to the center of the view.
if (pDC->IsPrinting()) // Is the DC a printer DC.
{
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ISOTROPIC);
CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
}
}
CView::OnPreparePrinting
Wywoływana przez platformę przed wydrukowanie lub wyświetlenie podglądu dokumentu.
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
Parametry
pInfo
CPrintInfo
Wskazuje strukturę, która opisuje bieżące zadanie drukowania.
Wartość zwracana
Bezzerowe, aby rozpocząć drukowanie; 0, jeśli zadanie drukowania zostało anulowane.
Uwagi
Domyślna implementacja nic nie robi.
Aby włączyć drukowanie i podgląd wydruku, należy zastąpić tę funkcję. Wywołaj DoPreparePrinting
funkcję składową, przekazując jej pInfo
parametr, a następnie zwróć jego wartość zwracaną; DoPreparePrinting
wyświetla okno dialogowe Drukowanie i tworzy kontekst urządzenia drukarki. Jeśli chcesz zainicjować okno dialogowe Drukowanie z wartościami innymi niż wartości domyślne, przypisz wartości do elementów członkowskich .pInfo
Jeśli na przykład znasz długość dokumentu, przed wywołaniem metody DoPreparePrinting
przekaż wartość do funkcji pInfo
składowej SetMaxPage . Ta wartość jest wyświetlana w polu Do: w części Zakres okna dialogowego Drukowanie.
DoPreparePrinting
nie wyświetla okna dialogowego Drukowanie dla zadania w wersji zapoznawczej. Jeśli chcesz pominąć okno dialogowe Drukowanie dla zadania drukowania, sprawdź, czy m_bPreview
element członkowski elementu pInfo
jest FALSE
, a następnie ustaw go na TRUE
wartość przed przekazaniem go do DoPreparePrinting
; zresetuj go do FALSE
później.
Jeśli musisz wykonać inicjacje, które wymagają dostępu do CDC
obiektu reprezentującego kontekst urządzenia drukarki (na przykład jeśli musisz znać rozmiar strony przed określeniem długości dokumentu), przesłoń OnBeginPrinting
funkcję składową.
Jeśli chcesz ustawić wartość m_nNumPreviewPages
lub m_strPageDesc
elementów członkowskich parametru pInfo
, wykonaj to po wywołaniu metody DoPreparePrinting
. Funkcja DoPreparePrinting
składowa ustawia m_nNumPreviewPages
wartość znajdującą się w aplikacji . Plik INI i ustawia m_strPageDesc
wartość domyślną.
Przykład
Zastąpij OnPreparePrinting
i wywołaj z przesłonięcia DoPreparePrinting
, aby platforma wyświetlała okno dialogowe Drukowanie i tworzyła kontroler domeny drukarki.
BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
return CEditView::DoPreparePrinting(pInfo);
}
Jeśli wiesz, ile stron zawiera dokument, ustaw maksymalną stronę OnPreparePrinting
przed wywołaniem metody DoPreparePrinting
. Platforma wyświetli maksymalną liczbę stron w oknie dialogowym "do" okna dialogowego Drukowanie.
BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
//The document has 2 pages.
pInfo->SetMaxPage(2);
return CView::DoPreparePrinting(pInfo);
}
CView::OnPrint
Wywoływana przez platformę do drukowania lub wyświetlania podglądu strony dokumentu.
virtual void OnPrint(
CDC* pDC,
CPrintInfo* pInfo);
Parametry
pDC
Wskazuje kontekst urządzenia drukarki.
pInfo
CPrintInfo
Wskazuje strukturę, która opisuje bieżące zadanie drukowania.
Uwagi
Dla każdej drukowanej strony struktura wywołuje tę funkcję natychmiast po wywołaniu funkcji składowej OnPrepareDC
. Wydrukowana strona jest określana przez m_nCurPage
element członkowski CPrintInfo
struktury, która pInfo
wskazuje. Domyślna implementacja wywołuje funkcję składową OnDraw
i przekazuje jej kontekst urządzenia drukarki.
Zastąpij tę funkcję z dowolnego z następujących powodów:
Aby umożliwić drukowanie dokumentów wielostronicowych. Renderuj tylko część dokumentu odpowiadającą aktualnie drukowanej stronie. Jeśli używasz
OnDraw
renderowania do wykonania renderowania, możesz dostosować źródło widoku, aby wydrukować tylko odpowiednią część dokumentu.Aby obraz drukowany wyglądał inaczej niż na obrazie ekranu (czyli jeśli aplikacja nie jest WYSIWYG). Zamiast przekazywać kontekst urządzenia drukarki do
OnDraw
programu , użyj kontekstu urządzenia do renderowania obrazu przy użyciu atrybutów, które nie są wyświetlane na ekranie.Jeśli potrzebujesz zasobów GDI do drukowania, które nie są używane do wyświetlania ekranu, wybierz je w kontekście urządzenia przed rysunkiem i usuń ich zaznaczenie później. Te zasoby GDI należy przydzielić i
OnBeginPrinting
wydać w programieOnEndPrinting
.Aby zaimplementować nagłówki lub stopki. Nadal można użyć
OnDraw
funkcji renderowania, ograniczając obszar, na którym można drukować.
Należy pamiętać, że m_rectDraw
element członkowski parametru pInfo
opisuje obszar drukowania strony w jednostkach logicznych.
Nie należy wywoływać OnPrepareDC
w zastąpieniu OnPrint
elementu ; wywołania OnPrepareDC
struktury automatycznie przed wywołaniem metody OnPrint
.
Przykład
Poniżej przedstawiono szkielet funkcji przesłoniętej OnPrint
:
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
UNREFERENCED_PARAMETER(pInfo);
// Print headers and/or footers, if desired.
// Find portion of document corresponding to pInfo->m_nCurPage.
OnDraw(pDC);
}
Aby zapoznać się z innym przykładem, zobacz CRichEditView::PrintInsideRect
.
CView::OnScroll
Wywoływana przez strukturę w celu określenia, czy przewijanie jest możliwe.
virtual BOOL OnScroll(
UINT nScrollCode,
UINT nPos,
BOOL bDoScroll = TRUE);
Parametry
nScrollCode
Kod paska przewijania wskazujący żądanie przewijania użytkownika. Ten parametr składa się z dwóch części: bajtu o niskiej kolejności, który określa typ przewijania występującego w poziomie i bajt o wysokiej kolejności, który określa typ przewijania występującego w pionie:
SB_BOTTOM
Przewija się do dołu.SB_LINEDOWN
Przewija jeden wiersz w dół.SB_LINEUP
Przewija jeden wiersz w górę.SB_PAGEDOWN
Przewija jedną stronę w dół.SB_PAGEUP
Przewija jedną stronę w górę.SB_THUMBTRACK
Przeciąga pole przewijania do określonej pozycji. Bieżące położenie jest określone w elemencienPos
.SB_TOP
Przewija się do góry.
nPos
Zawiera bieżące położenie pola przewijania, jeśli kod paska przewijania to SB_THUMBTRACK
; w przeciwnym razie nie jest używany. W zależności od początkowego zakresu nPos
przewijania może być ujemny i w razie potrzeby rzutować do elementu int
.
bDoScroll
Określa, czy w rzeczywistości należy wykonać określoną akcję przewijania. Jeśli TRUE
wartość , należy przewijać; jeśli FALSE
, przewijanie nie powinno nastąpić.
Wartość zwracana
Jeśli bDoScroll
element jest TRUE
i widok został rzeczywiście przewinięty, zwróć wartość nonzero; w przeciwnym razie 0. Jeśli bDoScroll
wartość to FALSE
, zwróć wartość, która zostałaby zwrócona, jeśli bDoScroll
to TRUE
, mimo że w rzeczywistości nie wykonujesz przewijania.
Uwagi
W jednym przypadku ta funkcja jest wywoływana przez strukturę z bDoScroll
ustawioną wartością , TRUE
gdy widok odbiera komunikat paska przewijania. W takim przypadku należy przewijać widok. W innym przypadku ta funkcja jest wywoływana z ustawioną wartością bDoScroll
, FALSE
gdy element OLE jest początkowo przeciągany do obszaru automatycznego przewijania miejsca docelowego upuszczania przed rzeczywistym przewijaniem. W takim przypadku nie należy przewijać widoku.
CView::OnScrollBy
Wywoływana przez platformę, gdy użytkownik wyświetla obszar poza widok obecny dokumentu, przeciągając element OLE na bieżące obramowania widoku lub manipulując pionowymi lub poziomymi paskami przewijania.
virtual BOOL OnScrollBy(
CSize sizeScroll,
BOOL bDoScroll = TRUE);
Parametry
sizeScroll
Liczba pikseli przewiniętych w poziomie i w pionie.
bDoScroll
Określa, czy ma miejsce przewijanie widoku. Jeśli TRUE
jest wykonywane przewijanie, FALSE
jeśli wartość , przewijanie nie występuje.
Wartość zwracana
Niezerowe, jeśli widok był w stanie przewijać; w przeciwnym razie 0.
Uwagi
W klasach pochodnych ta metoda sprawdza, czy widok jest przewijany w kierunku żądanym przez użytkownika, a następnie aktualizuje nowy region w razie potrzeby. Ta funkcja jest wywoływana automatycznie przez CWnd::OnHScroll
funkcję i CWnd::OnVScroll
do wykonywania rzeczywistego żądania przewijania.
Domyślna implementacja tej metody nie zmienia widoku, ale jeśli nie zostanie wywołana, widok nie będzie przewijać w klasie pochodnej CScrollView
.
Jeśli szerokość lub wysokość dokumentu przekracza 32767 pikseli, przewijanie w przeszłości 32767 zakończy się niepowodzeniem, ponieważ OnScrollBy
jest wywoływana z nieprawidłowym sizeScroll
argumentem.
CView::OnUpdate
Wywoływana przez platformę po zmodyfikowaniu dokumentu widoku; Ta funkcja jest wywoływana przez CDocument::UpdateAllViews
program i umożliwia widokowi zaktualizowanie jego wyświetlania w celu odzwierciedlenia tych modyfikacji.
virtual void OnUpdate(
CView* pSender,
LPARAM lHint,
CObject* pHint);
Parametry
pSender
Wskazuje widok, który zmodyfikował dokument, lub NULL
jeśli wszystkie widoki mają zostać zaktualizowane.
lHint
Zawiera informacje o modyfikacjach.
pHint
Wskazuje obiekt przechowujący informacje o modyfikacjach.
Uwagi
Jest ona również wywoływana przez domyślną implementację .OnInitialUpdate
Domyślna implementacja unieważnia cały obszar klienta, oznaczając go do malowania po odebraniu następnego WM_PAINT
komunikatu. Zastąpi tę funkcję, jeśli chcesz zaktualizować tylko te regiony, które są mapowane na zmodyfikowane fragmenty dokumentu. W tym celu należy przekazać informacje o modyfikacjach przy użyciu parametrów wskazówki.
Aby użyć lHint
metody , zdefiniuj specjalne wartości wskazówek, zazwyczaj maskę bitową lub typ wyliczony, a dokument przekaże jedną z tych wartości. Aby użyć pHint
metody , utwórz klasę wskazówek z CObject
elementu i przekaż dokument wskaźnik do obiektu wskazówek. Podczas zastępowania OnUpdate
użyj CObject::IsKindOf
funkcji składowej, aby określić typ czasu wykonywania obiektu wskazówek.
Zazwyczaj nie należy wykonywać żadnych rysunków bezpośrednio z OnUpdate
elementu . Zamiast tego określ prostokąt opisujący w współrzędnych urządzenia obszar, który wymaga aktualizacji; przekaż ten prostokąt do CWnd::InvalidateRect
. Powoduje to wystąpienie malowania przy następnym odebraniu komunikatu WM_PAINT
.
Jeśli lHint
ma wartość 0 i pHint
ma NULL
wartość , dokument wysłał ogólne powiadomienie o aktualizacji. Jeśli widok otrzyma ogólne powiadomienie o aktualizacji lub jeśli nie może zdekodować wskazówek, powinien unieważnić cały obszar klienta.
Zobacz też
Przykład MFC MDIDOCVW
CWnd
Klasa
Wykres hierarchii
CWnd
Klasa
CFrameWnd
Klasa
CSplitterWnd
Klasa
CDC
Klasa
CDocTemplate
Klasa
CDocument
Klasa