CView Klasa

Udostępnia podstawowe funkcje klas widoków zdefiniowanych przez użytkownika.

Składnia

class AFX_NOVTABLE CView : public CWnd

Członkowie

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ć CViewmetody , 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 CScrollViewprogramu biblioteka klas programu Microsoft Foundation udostępnia dziewięć innych klas pochodnych z CViewklasy :

  • 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 CPreviewViewfunkcji 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

CObject

CCmdTarget

CWnd

CView

Wymagania

Nagłówka: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_SHIFTMK_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 obszarze MK_CONTROL|MK_SHIFT Tworzy połączenie między obiektem a jego serwerem.

  • DROPEFFECT_COPY dla MK_CONTROL tworzy kopię porzuconego obiektu.

  • DROPEFFECT_MOVE w polu MK_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 OCLIENTpoję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_SHIFTMK_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 obszarze MK_CONTROL|MK_SHIFT Tworzy połączenie między obiektem a jego serwerem.

  • DROPEFFECT_COPY dla MK_CONTROL tworzy kopię porzuconego obiektu.

  • DROPEFFECT_MOVE w polu MK_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 OCLIENTpoję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_SHIFTMK_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 obszarze MK_CONTROL|MK_SHIFT Tworzy połączenie między obiektem a jego serwerem.

  • DROPEFFECT_COPY dla MK_CONTROL tworzy kopię porzuconego obiektu.

  • DROPEFFECT_MOVE w polu MK_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 OCLIENTpoję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ę na dropDefaultpodstawie .

    • 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ć, że OnDrop 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, ustaw m_bContinuePrinting element członkowski CPrintInfo struktury na FALSE.

  • Aby wysłać kody ucieczki do drukarki na podstawie strony. Aby wysłać kody ucieczki z OnPrepareDCpolecenia , wywołaj Escape funkcję składową parametru pDC .

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 DoPreparePrintingprzekaż 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 OnDrawprogramu , 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 programie OnEndPrinting.

  • 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 OnPrintelementu ; 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 elemencie nPos.

  • 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 TRUEwartość , 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 TRUEjest wykonywane przewijanie, FALSEjeś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ć lHintmetody , zdefiniuj specjalne wartości wskazówek, zazwyczaj maskę bitową lub typ wyliczony, a dokument przekaże jedną z tych wartości. Aby użyć pHintmetody , utwórz klasę wskazówek z CObject elementu i przekaż dokument wskaźnik do obiektu wskazówek. Podczas zastępowania OnUpdateuż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 OnUpdateelementu . 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 NULLwartość , 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