Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ć 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ćCEditViewjako 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
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_INACTIVEOkno ramki jest dezaktywowane.WA_ACTIVEOkno ramki jest aktywowane za pomocą innej metody niż kliknięcie myszą (na przykład za pomocą interfejsu klawiatury do wybrania okna).WA_CLICKACTIVEOkno 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_NONENie można usunąć obiektu danych w tym oknie.DROPEFFECT_LINKw obszarzeMK_CONTROL|MK_SHIFTTworzy połączenie między obiektem a jego serwerem.DROPEFFECT_COPYdlaMK_CONTROLtworzy kopię porzuconego obiektu.DROPEFFECT_MOVEw poluMK_ALTTworzy 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_NONENie można usunąć obiektu danych w tym oknie.DROPEFFECT_LINKw obszarzeMK_CONTROL|MK_SHIFTTworzy połączenie między obiektem a jego serwerem.DROPEFFECT_COPYdlaMK_CONTROLtworzy kopię porzuconego obiektu.DROPEFFECT_MOVEw poluMK_ALTTworzy 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_NONENie można usunąć obiektu danych w tym oknie.DROPEFFECT_LINKw obszarzeMK_CONTROL|MK_SHIFTTworzy połączenie między obiektem a jego serwerem.DROPEFFECT_COPYdlaMK_CONTROLtworzy kopię porzuconego obiektu.DROPEFFECT_MOVEw poluMK_ALTTworzy kopię usuniętego obiektu i usuń oryginalny obiekt.DROPEFFECT_SCROLLWskazuje, ż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_COPYTworzy kopię usuniętego obiektu danych.DROPEFFECT_MOVEPrzenosi obiekt danych do bieżącej lokalizacji myszy.DROPEFFECT_LINKTworzy 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
SetMenuDefaultItempolecenia , aby ustawić domyślną akcję nadropDefaultpodstawie .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ć, żeOnDropbę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_NONESpadek nie będzie dozwolony.DROPEFFECT_COPYZostanie wykonana operacja kopiowania.DROPEFFECT_MOVEZostanie wykonana operacja przenoszenia.DROPEFFECT_LINKZostanie ustanowione łącze z porzuconych danych do oryginalnych danych.DROPEFFECT_SCROLLWskazuje, ż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ńOnPrepareDCgo, aby przetestować koniec dokumentu podczas drukowania. Jeśli nie ma więcej dokumentu do wydrukowania, ustawm_bContinuePrintingelement członkowskiCPrintInfostruktury naFALSE.Aby wysłać kody ucieczki do drukarki na podstawie strony. Aby wysłać kody ucieczki z
OnPrepareDCpolecenia , wywołajEscapefunkcję 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 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
OnDrawrenderowania 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
OnBeginPrintingwydać w programieOnEndPrinting.Aby zaimplementować nagłówki lub stopki. Nadal można użyć
OnDrawfunkcji 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_BOTTOMPrzewija się do dołu.SB_LINEDOWNPrzewija jeden wiersz w dół.SB_LINEUPPrzewija jeden wiersz w górę.SB_PAGEDOWNPrzewija jedną stronę w dół.SB_PAGEUPPrzewija jedną stronę w górę.SB_THUMBTRACKPrzeciąga pole przewijania do określonej pozycji. Bieżące położenie jest określone w elemencienPos.SB_TOPPrzewija 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