Udostępnij za pośrednictwem


Klasa COleServerDoc

Klasa bazowa dokumentów serwera OLE.

Składnia

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
COleServerDoc::COleServerDoc COleServerDoc Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
COleServerDoc::ActivateDocObject Aktywuje skojarzony dokument DocObject.
COleServerDoc::ActivateInPlace Aktywuje dokument do edycji w miejscu.
COleServerDoc::D eactivateAndUndo Dezaktywuje interfejs użytkownika serwera.
COleServerDoc::D iscardUndoState Odrzuca informacje o stanie cofania.
COleServerDoc::GetClientSite Pobiera wskaźnik do bazowego IOleClientSite interfejsu.
COleServerDoc::GetEmbeddedItem Zwraca wskaźnik do elementu reprezentującego cały dokument.
COleServerDoc::GetItemClipRect Zwraca bieżący prostokąt wycinków do edycji w miejscu.
COleServerDoc::GetItemPosition Zwraca prostokąt bieżącej pozycji względem obszaru klienta aplikacji kontenera na potrzeby edycji w miejscu.
COleServerDoc::GetZoomFactor Zwraca współczynnik powiększenia w pikselach.
COleServerDoc::IsDocObject Określa, czy dokument jest obiektem DocObject.
COleServerDoc::IsEmbedded Wskazuje, czy dokument jest osadzony w dokumencie kontenera, czy w trybie autonomicznym.
COleServerDoc::IsInPlaceActive Zwraca wartość TRUE, jeśli element jest aktualnie aktywowany.
COleServerDoc::NotifyChanged Powiadamia kontenery, że użytkownik zmienił dokument.
COleServerDoc::NotifyClosed Powiadamia kontenery, że użytkownik zamknął dokument.
COleServerDoc::NotifyRename Powiadamia kontenery o zmianie nazwy dokumentu przez użytkownika.
COleServerDoc::NotifySaved Powiadamia kontenery, że użytkownik zapisał dokument.
COleServerDoc::OnDeactivate Wywoływana przez platformę, gdy użytkownik dezaktywuje aktywowany element.
COleServerDoc::OnDeactivateUI Wywoływana przez platformę w celu zniszczenia kontrolek i innych elementów interfejsu użytkownika utworzonych na potrzeby aktywacji w miejscu.
COleServerDoc::OnDocWindowActivate Wywoływana przez platformę, gdy okno ramki dokumentu kontenera jest aktywowane lub dezaktywowane.
COleServerDoc::OnResizeBorder Wywoływana przez platformę, gdy zmienia się rozmiar okna ramki aplikacji kontenera lub okna dokumentu.
COleServerDoc::OnShowControlBars Wywoływana przez platformę w celu wyświetlania lub ukrywania pasków sterowania do edycji w miejscu.
COleServerDoc::OnUpdateDocument Wywoływana przez platformę, gdy dokument serwera, który jest elementem osadzonym, jest zapisywany, aktualizując kopię kontenera elementu.
COleServerDoc::RequestPositionChange Zmienia położenie ramki edycji w miejscu.
COleServerDoc::SaveEmbedding Informuje aplikację kontenera o zapisaniu dokumentu.
COleServerDoc::ScrollContainerBy Przewija dokument kontenera.
COleServerDoc::UpdateAllItems Powiadamia kontenery, że użytkownik zmienił dokument.

Metody chronione

Nazwa/nazwisko opis
COleServerDoc::CreateInPlaceFrame Wywoływana przez platformę w celu utworzenia okna ramowego do edycji w miejscu.
COleServerDoc::D estroyInPlaceFrame Wywoływana przez platformę w celu zniszczenia okna ramowego do edycji w miejscu.
COleServerDoc::GetDocObjectServer Zastąpij tę funkcję, aby utworzyć nowy CDocObjectServer obiekt i wskazać, że ten dokument jest kontenerem DocObject.
COleServerDoc::OnClose Wywoływana przez platformę, gdy kontener żąda zamknięcia dokumentu.
COleServerDoc::OnExecOleCmd Wykonuje określone polecenie lub wyświetla pomoc dla polecenia.
COleServerDoc::OnFrameWindowActivate Wywoływana przez platformę, gdy okno ramki kontenera jest aktywowane lub dezaktywowane.
COleServerDoc::OnGetEmbeddedItem Wywołana funkcja w celu uzyskania elementu COleServerItem reprezentującego cały dokument. Służy do pobierania elementu osadzonego. Wymagana implementacja.
COleServerDoc::OnReactivateAndUndo Wywoływana przez platformę w celu cofnięcia zmian wprowadzonych podczas edycji w miejscu.
COleServerDoc::OnSetHostNames Wywoływana przez platformę, gdy kontener ustawia tytuł okna dla obiektu osadzonego.
COleServerDoc::OnSetItemRects Wywoływana przez platformę, aby umieścić okno ramki edycji w miejscu w oknie aplikacji kontenera.
COleServerDoc::OnShowDocument Wywoływana przez strukturę w celu pokazania lub ukrycia dokumentu.

Uwagi

Dokument serwera może zawierać obiekty COleServerItem , które reprezentują interfejs serwera z osadzonymi lub połączonymi elementami. Gdy aplikacja serwera jest uruchamiana przez kontener w celu edytowania elementu osadzonego, element jest ładowany jako własny dokument serwera; COleServerDoc obiekt zawiera tylko jeden COleServerItem obiekt składający się z całego dokumentu. Gdy aplikacja serwera jest uruchamiana przez kontener w celu edytowania połączonego elementu, istniejący dokument jest ładowany z dysku; wyróżniono część zawartości dokumentu, aby wskazać połączony element.

COleServerDoc obiekty mogą również zawierać elementy klasy COleClientItem . Umożliwia to tworzenie aplikacji kontener-serwer. Platforma udostępnia funkcje do prawidłowego COleClientItem przechowywania elementów podczas obsługi COleServerItem obiektów.

Jeśli aplikacja serwera nie obsługuje łączy, dokument serwera zawsze będzie zawierać tylko jeden element serwera, który reprezentuje cały osadzony obiekt jako dokument. Jeśli aplikacja serwera obsługuje łącza, musi utworzyć element serwera za każdym razem, gdy wybór zostanie skopiowany do Schowka.

Aby użyć COleServerDocklasy , utwórz z niej klasę i zaimplementuj funkcję składową OnGetEmbeddedItem , która umożliwia serwerowi obsługę elementów osadzonych. Utwórz klasę z COleServerItem , aby zaimplementować elementy w dokumentach i zwrócić obiekty tej klasy z OnGetEmbeddedItemklasy .

Aby obsługiwać połączone elementy, COleServerDoc udostępnia funkcję składową OnGetLinkedItem . Możesz użyć domyślnej implementacji lub zastąpić ją, jeśli masz własny sposób zarządzania elementami dokumentu.

Potrzebujesz jednej COleServerDocklasy pochodnej dla każdego typu dokumentu serwera obsługiwanego przez aplikację. Jeśli na przykład aplikacja serwera obsługuje arkusze i wykresy, potrzebne są dwie COleServerDocklasy pochodne.

Aby uzyskać więcej informacji na temat serwerów, zobacz artykuł Serwery: implementowanie serwera.

Hierarchia dziedziczenia

Obiekt CObject

CCmdTarget

Dokument CDocument

COleDocument

COleLinkingDoc

COleServerDoc

Wymagania

Nagłówek: afxole.h

COleServerDoc::ActivateDocObject

Aktywuje skojarzony dokument DocObject.

void ActivateDocObject();

Uwagi

Domyślnie COleServerDoc nie obsługuje aktywnych dokumentów (nazywanych również dokumentami DocObjects). Aby włączyć tę obsługę, zobacz GetDocObjectServer i klasa CDocObjectServer.

COleServerDoc::ActivateInPlace

Aktywuje element do edycji w miejscu.

BOOL ActivateInPlace();

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0, co oznacza, że element jest w pełni otwarty.

Uwagi

Ta funkcja wykonuje wszystkie operacje niezbędne do aktywacji w miejscu. Tworzy okno ramki w miejscu, aktywuje go i ustawia jego rozmiar w elemencie, konfiguruje udostępnione menu i inne kontrolki, przewija element do widoku i ustawia fokus na okno ramek w miejscu.

Ta funkcja jest wywoływana przez domyślną implementację COleServerItem::OnShow. Wywołaj tę funkcję, jeśli aplikacja obsługuje inne zlecenie aktywacji w miejscu (np. Play).

COleServerDoc::COleServerDoc

COleServerDoc Tworzy obiekt bez nawiązywania połączenia z bibliotekami DLL systemu OLE.

COleServerDoc();

Uwagi

Musisz wywołać metodę COleLinkingDoc::Register , aby otworzyć komunikację z obiektem OLE. Jeśli używasz COleTemplateServer w aplikacji, COleLinkingDoc::Register jest wywoływana przez COleLinkingDocimplementację OnNewDocument, OnOpenDocumenti OnSaveDocument.

COleServerDoc::CreateInPlaceFrame

Struktura wywołuje tę funkcję, aby utworzyć okno ramki do edycji w miejscu.

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

Parametry

pParentWnd
Wskaźnik do okna nadrzędnego aplikacji kontenera.

Wartość zwracana

Wskaźnik do okna ramki w miejscu lub wartość NULL, jeśli nie powiedzie się.

Uwagi

Domyślna implementacja używa informacji określonych w szablonie dokumentu do utworzenia ramki. Używany widok jest pierwszym widokiem utworzonym dla dokumentu. Ten widok jest tymczasowo odłączony od oryginalnej ramki i dołączony do nowo utworzonej ramki.

Jest to zaawansowane przesłonięcia.

COleServerDoc::D eactivateAndUndo

Wywołaj tę funkcję, jeśli aplikacja obsługuje funkcję Cofnij, a użytkownik wybiera pozycję Cofnij po aktywowaniu elementu, ale przed jego edycją.

BOOL DeactivateAndUndo();

Wartość zwracana

Nonzero na sukces; w przeciwnym razie 0.

Uwagi

Jeśli aplikacja kontenera jest napisana przy użyciu biblioteki klas programu Microsoft Foundation, wywołanie tej funkcji powoduje wywołanie klasy COleClientItem::OnDeactivateAndUndo , co dezaktywuje interfejs użytkownika serwera.

COleServerDoc::D estroyInPlaceFrame

Struktura wywołuje tę funkcję, aby zniszczyć okno ramki w miejscu i zwrócić okno dokumentu aplikacji serwera do stanu przed aktywacją w miejscu.

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

Parametry

pFrameWnd
Wskaźnik do okna ramowego w miejscu, który ma zostać zniszczony.

Uwagi

Jest to zaawansowane przesłonięcia.

COleServerDoc::D iscardUndoState

Jeśli użytkownik wykonuje operację edycji, której nie można cofnąć, wywołaj tę funkcję, aby zmusić aplikację kontenera do odrzucenia informacji o stanie cofania.

BOOL DiscardUndoState();

Wartość zwracana

Nonzero na sukces; w przeciwnym razie 0.

Uwagi

Ta funkcja jest udostępniana tak, aby serwery, które obsługują cofanie, mogły zwolnić zasoby, które w przeciwnym razie byłyby używane przez informacje o stanie cofania, których nie można użyć.

COleServerDoc::GetClientSite

Pobiera wskaźnik do bazowego IOleClientSite interfejsu.

LPOLECLIENTSITE GetClientSite() const;

Wartość zwracana

Pobiera wskaźnik do bazowego interfejsu IOleClientSite .

COleServerDoc::GetDocObjectServer

Zastąpij tę funkcję, aby utworzyć nowy CDocObjectServer element i zwrócić do niej wskaźnik.

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

Parametry

pDocSite
Wskaźnik do interfejsu IOleDocumentSite , który połączy ten dokument z serwerem.

Wartość zwracana

Wskaźnik do ; CDocObjectServer Wartość NULL, jeśli operacja nie powiodła się.

Uwagi

Po aktywowaniu serwera DocObject zwracany jest wskaźnik o wartości innej niż NULL, który pokazuje, że klient może obsługiwać obiekty DocObjects. Domyślna implementacja zwraca wartość NULL.

Typowa implementacja dokumentu obsługującego obiekt DocObjects po prostu przydzieli nowy CDocObjectServer obiekt i zwróci go do obiektu wywołującego. Na przykład:

CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
   return new CDocObjectServer(this, pSite);
}

COleServerDoc::GetEmbeddedItem

Wywołaj tę funkcję, aby uzyskać wskaźnik do elementu reprezentującego cały dokument.

COleServerItem* GetEmbeddedItem();

Wartość zwracana

Wskaźnik do elementu reprezentującego cały dokument; Wartość NULL, jeśli operacja nie powiodła się.

Uwagi

Wywołuje COleServerDoc::OnGetEmbeddedItem, funkcję wirtualną bez domyślnej implementacji.

COleServerDoc::GetItemClipRect

Wywołaj GetItemClipRect funkcję składową, aby uzyskać współrzędne wycinania prostokąta elementu, który jest edytowany.

void GetItemClipRect(LPRECT lpClipRect) const;

Parametry

lpClipRect
Wskaźnik do RECT struktury lub CRect obiektu w celu odbierania współrzędnych wycinek prostokąta elementu.

Uwagi

Współrzędne znajdują się w pikselach względem obszaru klienta okna aplikacji kontenera.

Rysunek nie powinien występować poza prostokątem wycinkowym. Zazwyczaj rysunek jest automatycznie ograniczony. Użyj tej funkcji, aby określić, czy użytkownik przewinął się poza widoczną część dokumentu; Jeśli tak, przewiń dokument kontenera zgodnie z potrzebami za pomocą wywołania funkcji ScrollContainerBy.

COleServerDoc::GetItemPosition

Wywołaj funkcję składową, GetItemPosition aby uzyskać współrzędne edytowanego elementu.

void GetItemPosition(LPRECT lpPosRect) const;

Parametry

lpPosRect
Wskaźnik do RECT struktury lub CRect obiektu w celu odbierania współrzędnych elementu.

Uwagi

Współrzędne znajdują się w pikselach względem obszaru klienta okna aplikacji kontenera.

Położenie elementu można porównać z bieżącym prostokątem wycinków, aby określić zakres, w jakim element jest widoczny (lub niewidoczny) na ekranie.

COleServerDoc::GetZoomFactor

Funkcja GetZoomFactor składowa określa "współczynnik powiększenia" elementu, który został aktywowany do edycji w miejscu.

BOOL GetZoomFactor(
    LPSIZE lpSizeNum = NULL,
    LPSIZE lpSizeDenom = NULL,
    LPCRECT lpPosRect = NULL) const;

Parametry

lpSizeNum
Wskaźnik do obiektu klasy CSize , który będzie przechowywać licznik współczynnika powiększenia. Może mieć wartość NULL.

lpSizeDenom
Wskaźnik do obiektu klasy CSize , który będzie przechowywać mianownik współczynnika powiększenia. Może mieć wartość NULL.

lpPosRect
Wskaźnik do obiektu klasy CRect , który opisuje nową pozycję elementu. Jeśli ten argument ma wartość NULL, funkcja używa bieżącego położenia elementu.

Wartość zwracana

Niezerowe, jeśli element jest aktywowany do edycji w miejscu, a jego współczynnik powiększenia jest inny niż 100% (1:1); w przeciwnym razie 0.

Uwagi

Współczynnik powiększenia w pikselach jest proporcją rozmiaru elementu do bieżącego zakresu. Jeśli aplikacja kontenera nie ustawiła zakresu elementu, używany jest jego naturalny zakres (określony przez COleServerItem::OnGetExtent).

Funkcja ustawia dwa pierwsze argumenty na licznik i mianownik "współczynnik powiększenia" elementu. Jeśli element nie jest edytowany, funkcja ustawia te argumenty na wartość domyślną 100% (lub 1:1) i zwraca zero. Aby uzyskać więcej informacji, zobacz Technical Note 40, MFC/OLE In-Place Resizing and Zooming (Uwaga techniczna 40, zmiana rozmiaru i powiększanie w miejscu MFC/OLE).

COleServerDoc::IsDocObject

Określa, czy dokument jest obiektem DocObject.

BOOL IsDocObject() const;

Wartość zwracana

Wartość TRUE, jeśli dokument jest obiektem DocObject; w przeciwnym razie FAŁSZ.

COleServerDoc::IsEmbedded

Wywołaj funkcję składową IsEmbedded , aby określić, czy dokument reprezentuje obiekt osadzony w kontenerze.

BOOL IsEmbedded() const;

Wartość zwracana

Nonzero, jeśli COleServerDoc obiekt jest dokumentem reprezentującym obiekt osadzony w kontenerze; w przeciwnym razie 0.

Uwagi

Dokument załadowany z pliku nie jest osadzony, chociaż może być manipulowany przez aplikację kontenera jako link. Dokument osadzony w dokumencie kontenera jest uznawany za osadzony.

COleServerDoc::IsInPlaceActive

Wywołaj funkcję składową IsInPlaceActive , aby określić, czy element jest obecnie w stanie aktywnym w miejscu.

BOOL IsInPlaceActive() const;

Wartość zwracana

Nonzero, jeśli COleServerDoc obiekt jest aktywny; w przeciwnym razie 0.

COleServerDoc::NotifyChanged

Wywołaj tę funkcję, aby powiadomić wszystkie połączone elementy połączone z dokumentem o zmianie dokumentu.

void NotifyChanged();

Uwagi

Zazwyczaj ta funkcja jest wywoływana po zmianie przez użytkownika niektórych atrybutów globalnych, takich jak wymiary dokumentu serwera. Jeśli element OLE jest połączony z dokumentem za pomocą linku automatycznego, element zostanie zaktualizowany w celu odzwierciedlenia zmian. W aplikacjach kontenerów napisanych za pomocą biblioteki klas programu Microsoft Foundation wywoływana jest funkcja COleClientItem składowa OnChange.

Uwaga

Ta funkcja jest uwzględniona w celu zachowania zgodności z ole 1. Nowe aplikacje powinny używać funkcji UpdateAllItems.

COleServerDoc::NotifyClosed

Wywołaj tę funkcję, aby powiadomić kontenery o zamknięciu dokumentu.

void NotifyClosed();

Uwagi

Gdy użytkownik wybierze polecenie Zamknij z menu Plik, NotifyClosed jest wywoływany przez COleServerDocimplementację funkcji składowej OnCloseDocument . W aplikacjach kontenerów napisanych za pomocą biblioteki klas programu Microsoft Foundation wywoływana jest funkcja COleClientItem składowa OnChange.

COleServerDoc::NotifyRename

Wywołaj tę funkcję po zmianie nazwy dokumentu serwera przez użytkownika.

void NotifyRename(LPCTSTR lpszNewName);

Parametry

lpszNewName
Wskaźnik do ciągu określającego nową nazwę dokumentu serwera; jest to zazwyczaj w pełni kwalifikowana ścieżka.

Uwagi

Gdy użytkownik wybierze polecenie Zapisz jako z menu Plik, NotifyRename jest wywoływany przez COleServerDocimplementację funkcji składowej OnSaveDocument . Ta funkcja powiadamia biblioteki DLL systemu OLE, które z kolei powiadamiają kontenery. W aplikacjach kontenerów napisanych za pomocą biblioteki klas programu Microsoft Foundation wywoływana jest funkcja COleClientItem składowa OnChange.

COleServerDoc::NotifySaved

Wywołaj tę funkcję po zapisaniu dokumentu serwera przez użytkownika.

void NotifySaved();

Uwagi

Gdy użytkownik wybierze polecenie Zapisz z menu Plik, NotifySaved jest wywoływany przez COleServerDocimplementację onSaveDocument. Ta funkcja powiadamia biblioteki DLL systemu OLE, które z kolei powiadamiają kontenery. W aplikacjach kontenerów napisanych za pomocą biblioteki klas programu Microsoft Foundation wywoływana jest funkcja COleClientItem składowa OnChange.

COleServerDoc::OnClose

Wywoływana przez platformę, gdy kontener żąda zamknięcia dokumentu serwera.

virtual void OnClose(OLECLOSE dwCloseOption);

Parametry

dwCloseOption
Wartość z wyliczenia OLECLOSE. Ten parametr może mieć jedną z następujących wartości:

  • OLECLOSE_SAVEIFDIRTY Plik jest zapisywany, jeśli został zmodyfikowany.

  • OLECLOSE_NOSAVE Plik jest zamykany bez zapisywania.

  • OLECLOSE_PROMPTSAVE Jeśli plik został zmodyfikowany, zostanie wyświetlony monit o zapisanie go.

Uwagi

Domyślna implementacja wywołuje metodę CDocument::OnCloseDocument.

Aby uzyskać więcej informacji i dodatkowych wartości, zobacz OLECLOSE w zestawie Windows SDK.

COleServerDoc::OnDeactivate

Wywoływana przez platformę, gdy użytkownik dezaktywuje osadzony lub połączony element, który jest obecnie aktywny.

virtual void OnDeactivate();

Uwagi

Ta funkcja przywraca interfejs użytkownika aplikacji kontenera do oryginalnego stanu i niszczy wszystkie menu i inne kontrolki, które zostały utworzone na potrzeby aktywacji w miejscu.

Cofnij informacje o stanie powinny być bezwarunkowo zwolnione w tym momencie.

Aby uzyskać więcej informacji, zobacz artykuł Activation..

COleServerDoc::OnDeactivateUI

Wywoływana, gdy użytkownik dezaktywuje aktywowany element.

virtual void OnDeactivateUI(BOOL bUndoable);

Parametry

bUndoable
Określa, czy zmiany edycji można cofnąć.

Uwagi

Ta funkcja przywraca interfejs użytkownika aplikacji kontenera do oryginalnego stanu, ukrywając wszystkie menu i inne kontrolki utworzone na potrzeby aktywacji w miejscu.

Struktura zawsze ustawia wartość bUndoable na WARTOŚĆ FALSE. Jeśli serwer obsługuje cofanie i istnieje operacja, którą można cofnąć, wywołaj implementację klasy bazowej z funkcją bUndoable ustawioną na true.

COleServerDoc::OnDocWindowActivate

Struktura wywołuje tę funkcję, aby aktywować lub dezaktywować okno dokumentu na potrzeby edycji w miejscu.

virtual void OnDocWindowActivate(BOOL bActivate);

Parametry

bActivate
Określa, czy okno dokumentu ma zostać aktywowane, czy dezaktywowane.

Uwagi

Domyślna implementacja usuwa lub dodaje odpowiednio elementy interfejsu użytkownika na poziomie ramki. Zastąpi tę funkcję, jeśli chcesz wykonać dodatkowe akcje po aktywowaniu lub dezaktywowaniu dokumentu zawierającego element.

Aby uzyskać więcej informacji, zobacz artykuł Activation..

COleServerDoc::OnExecOleCmd

Platforma wywołuje tę funkcję, aby wykonać określone polecenie lub wyświetlić pomoc dla polecenia.

virtual HRESULT OnExecOleCmd(
    const GUID* pguidCmdGroup,
    DWORD nCmdID,
    DWORD nCmdExecOpt,
    VARIANTARG* pvarargIn,
    VARIANTARG* pvarargOut);

Parametry

pguidCmdGroup
Wskaźnik do identyfikatora GUID, który identyfikuje zestaw poleceń. Może mieć wartość NULL, aby wskazać domyślną grupę poleceń.

nCmdID
Polecenie do wykonania. Musi znajdować się w grupie zidentyfikowanym przez element pguidCmdGroup.

nCmdExecOut
Sposób, w jaki obiekt powinien wykonać polecenie, co najmniej jedną z następujących wartości z wyliczenia OLECMDEXECOPT:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUSER

OLECMDEXECOPT_DONTPROMPTUSER

OLECMDEXECOPT_SHOWHELP

pvarargIn
Wskaźnik do argumentu VARIANTARG zawierającego argumenty wejściowe dla polecenia. Może mieć wartość NULL.

pvarargOut
Wskaźnik do argumentu VARIANTARG w celu odbierania wartości zwracanych danych wyjściowych z polecenia . Może mieć wartość NULL.

Wartość zwracana

Zwraca S_OK w przypadku powodzenia; w przeciwnym razie jeden z następujących kodów błędów:

Wartość Opis
E_UNEXPECTED Wystąpił nieoczekiwany błąd
E_FAIL Wystąpił błąd
E_NOTIMPL Wskazuje, że sam MFC powinien próbować przetłumaczyć i wysłać polecenie
OLECMDERR_E_UNKNOWNGROUP pguidCmdGroup nie ma wartości NULL, ale nie określa rozpoznanej grupy poleceń
OLECMDERR_E_NOTSUPPORTED Identyfikator nCmdID nie jest rozpoznawany jako prawidłowe polecenie w grupie pguidCmdGroup
OLECMDERR_DISABLED Polecenie zidentyfikowane przez identyfikator nCmdID jest wyłączone i nie można go wykonać
OLECMDERR_NOHELP Wywołujący poprosił o pomoc w poleceniu zidentyfikowanym przez nCmdID , ale żadna pomoc nie jest dostępna
OLECMDERR_CANCELED Użytkownik anulował wykonanie

Uwagi

COleCmdUI Umożliwia włączanie, aktualizowanie i ustawianie innych właściwości poleceń interfejsu użytkownika DocObject. Po zainicjowaniu poleceń można je wykonać za pomocą polecenia OnExecOleCmd.

Platforma wywołuje funkcję przed podjęciem próby tłumaczenia i wysłania polecenia dokumentu OLE. Nie musisz zastępować tej funkcji do obsługi standardowych poleceń dokumentów OLE, ale musisz podać przesłonięcia tej funkcji, jeśli chcesz obsługiwać własne polecenia niestandardowe lub obsługiwać polecenia, które akceptują parametry lub zwracają wyniki.

Większość poleceń nie bierze argumentów ani zwraca wartości. W przypadku większości poleceń obiekt wywołujący może przekazać listy NUL dla pvarargIn i pvarargOut. W przypadku poleceń, które oczekują wartości wejściowych, obiekt wywołujący może zadeklarować i zainicjować zmienną VARIANTARG i przekazać wskaźnik do zmiennej w pvarargIn. W przypadku poleceń wymagających pojedynczej wartości argument może być przechowywany bezpośrednio w funkcji VARIANTARG i przekazywany do funkcji. Wiele argumentów musi być spakowanych w ramach klasy VARIANTARG przy użyciu jednego z obsługiwanych typów (takich jak IDispatch i SAFEARRAY).

Podobnie jeśli polecenie zwraca argumenty, obiekt wywołujący ma zadeklarować element VARIANTARG, zainicjować go do VT_EMPTY i przekazać jego adres w pvarargOut. Jeśli polecenie zwróci pojedynczą wartość, obiekt może przechowywać te wartości bezpośrednio w pvarargOut. Wiele wartości wyjściowych musi być spakowanych w jakiś sposób odpowiedni dla VARIANTARG.

Implementacja klasy bazowej tej funkcji przeprowadzi OLE_COMMAND_MAP struktury skojarzone z obiektem docelowym polecenia i spróbuje wysłać polecenie do odpowiedniego programu obsługi. Implementacja klasy bazowej działa tylko z poleceniami, które nie akceptują argumentów ani zwracanych wartości. Jeśli musisz obsługiwać polecenia, które akceptują argumenty lub zwracane wartości, musisz zastąpić tę funkcję i pracować z parametrami pvarargIn i pvarargOut samodzielnie.

COleServerDoc::OnFrameWindowActivate

Platforma wywołuje tę funkcję, gdy okno ramki aplikacji kontenera jest aktywowane lub dezaktywowane.

virtual void OnFrameWindowActivate(BOOL bActivate);

Parametry

bActivate
Określa, czy okno ramki ma zostać aktywowane, czy dezaktywowane.

Uwagi

Domyślna implementacja anuluje wszystkie tryby pomocy, w których może znajdować się okno ramki. Zastąpij tę funkcję, jeśli chcesz wykonać specjalne przetwarzanie po aktywowaniu lub dezaktywowaniu okna ramki.

Aby uzyskać więcej informacji, zobacz artykuł Activation..

COleServerDoc::OnGetEmbeddedItem

Wywoływana przez platformę, gdy aplikacja kontenera wywołuje aplikację serwera w celu utworzenia lub edytowania osadzonego elementu.

virtual COleServerItem* OnGetEmbeddedItem() = 0;

Wartość zwracana

Wskaźnik do elementu reprezentującego cały dokument; Wartość NULL, jeśli operacja nie powiodła się.

Uwagi

Nie ma implementacji domyślnej. Tę funkcję należy zastąpić, aby zwrócić element reprezentujący cały dokument. Ta wartość zwracana powinna być obiektem -pochodnej COleServerItemklasy.

COleServerDoc::OnReactivateAndUndo

Struktura wywołuje tę funkcję, gdy użytkownik zdecyduje się cofnąć zmiany wprowadzone w elemencie, który został aktywowany, zmieniony, a następnie zdezaktywowany.

virtual BOOL OnReactivateAndUndo();

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Domyślna implementacja nie wykonuje żadnych czynności, z wyjątkiem zwracania wartości FALSE w celu wskazania błędu.

Zastąpi tę funkcję, jeśli aplikacja obsługuje cofanie. Zazwyczaj należy wykonać operację cofania, a następnie aktywować element, wywołując polecenie ActivateInPlace. Jeśli aplikacja kontenera jest zapisywana w bibliotece klas programu Microsoft Foundation, wywołanie powoduje wywołanie COleClientItem::ReactivateAndUndo tej funkcji.

COleServerDoc::OnResizeBorder

Struktura wywołuje tę funkcję, gdy okna ramowe aplikacji kontenera zmieniają rozmiar.

virtual void OnResizeBorder(
    LPCRECT lpRectBorder,
    LPOLEINPLACEUIWINDOW lpUIWindow,
    BOOL bFrame);

Parametry

lpRectBorder
Wskaźnik do RECT struktury lub CRect obiektu, który określa współrzędne obramowania.

lpUIWindow
Wskaźnik do obiektu klasy IOleInPlaceUIWindow , który jest właścicielem bieżącej sesji edycji w miejscu.

bFrame
Wartość TRUE, jeśli lpUIWindow wskazuje okno ramki najwyższego poziomu aplikacji kontenera lub FALSE, jeśli lpUIWindow wskazuje okno ramki na poziomie dokumentu aplikacji kontenera.

Uwagi

Ta funkcja zmienia rozmiar i dostosowuje paski narzędzi i inne elementy interfejsu użytkownika zgodnie z nowym rozmiarem okna.

Aby uzyskać więcej informacji, zobacz IOleInPlaceUIWindow w zestawie Windows SDK.

Jest to zaawansowane przesłonięcia.

COleServerDoc::OnSetHostNames

Wywoływana przez platformę, gdy kontener ustawia lub zmienia nazwy hostów dla tego dokumentu.

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Parametry

lpszHost
Wskaźnik do ciągu, który określa nazwę aplikacji kontenera.

lpszHostObj
Wskaźnik do ciągu, który określa nazwę kontenera dla dokumentu.

Uwagi

Domyślna implementacja zmienia tytuł dokumentu dla wszystkich widoków odwołującego się do tego dokumentu.

Zastąpi tę funkcję, jeśli aplikacja ustawia tytuły za pomocą innego mechanizmu.

COleServerDoc::OnSetItemRects

Struktura wywołuje tę funkcję, aby umieścić w miejscu okno ramki edycji w oknie ramki aplikacji kontenera.

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

Parametry

lpPosRect
Wskaźnik do RECT struktury lub CRect obiektu, który określa położenie okna ramek w miejscu względem obszaru klienta aplikacji kontenera.

lpClipRect
Wskaźnik do RECT struktury lub CRect obiektu, który określa prostokąt przycinania okna ramki w miejscu względem obszaru klienta aplikacji kontenera.

Uwagi

Zastąpi tę funkcję, aby w razie potrzeby zaktualizować współczynnik powiększenia widoku.

Ta funkcja jest zwykle wywoływana w odpowiedzi na RequestPositionChange wywołanie, chociaż można ją wywołać w dowolnym momencie przez kontener, aby zażądać zmiany położenia elementu w miejscu.

COleServerDoc::OnShowControlBars

Struktura wywołuje tę funkcję w celu pokazania lub ukrycia pasków sterowania aplikacji serwera skojarzonych z oknem ramowym zidentyfikowanym przez element pFrameWnd.

virtual void OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

Parametry

pFrameWnd
Wskaźnik do okna ramki, którego paski sterowania powinny być ukryte lub wyświetlane.

bShow
Określa, czy paski sterowania są wyświetlane, czy ukryte.

Uwagi

Domyślna implementacja wylicza wszystkie paski sterowania należące do tego okna ramki i ukrywa je lub pokazuje.

COleServerDoc::OnShowDocument

Struktura wywołuje OnShowDocument funkcję, gdy dokument serwera musi być ukryty lub wyświetlany.

virtual void OnShowDocument(BOOL bShow);

Parametry

bShow
Określa, czy interfejs użytkownika dokumentu ma być wyświetlany, czy ukryty.

Uwagi

Jeśli wartość bShow ma wartość TRUE, domyślna implementacja aktywuje aplikację serwera, jeśli jest to konieczne, i powoduje, że aplikacja kontenera przewija okno, tak aby element był widoczny. Jeśli obiekt bShow ma wartość FALSE, domyślna implementacja dezaktywuje element za pomocą wywołania OnDeactivatemetody , a następnie niszczy lub ukrywa wszystkie okna ramowe, które zostały utworzone dla dokumentu, z wyjątkiem pierwszego. Jeśli żadne widoczne dokumenty nie pozostaną, domyślna implementacja ukrywa aplikację serwera.

COleServerDoc::OnUpdateDocument

Wywoływana przez platformę podczas zapisywania dokumentu, który jest elementem osadzonym w dokumencie złożonym.

virtual BOOL OnUpdateDocument();

Wartość zwracana

Nonzero, jeśli dokument został pomyślnie zaktualizowany; w przeciwnym razie 0.

Uwagi

Domyślna implementacja wywołuje funkcje składowe COleServerDoc::NotifySaved i COleServerDoc::SaveEmbedding , a następnie oznacza dokument jako czysty. Zastąpi tę funkcję, jeśli chcesz wykonać specjalne przetwarzanie podczas aktualizowania osadzonego elementu.

COleServerDoc::RequestPositionChange

Wywołaj tę funkcję składową, aby aplikacja kontenera zmieniła położenie elementu.

void RequestPositionChange(LPCRECT lpPosRect);

Parametry

lpPosRect
Wskaźnik do RECT struktury lub CRect obiektu zawierającego nową pozycję elementu.

Uwagi

Ta funkcja jest zwykle wywoływana (w połączeniu z UpdateAllItems) po zmianie danych w aktywnym elemencie w miejscu. Po wywołaniu tego wywołania kontener może lub nie może wykonać zmiany przez wywołanie metody OnSetItemRects. Wynikowa pozycja może być inna niż żądana.

COleServerDoc::SaveEmbedding

Wywołaj tę funkcję, aby poinformować aplikację kontenera o zapisaniu obiektu osadzonego.

void SaveEmbedding();

Uwagi

Ta funkcja jest wywoływana automatycznie z pliku OnUpdateDocument. Należy pamiętać, że ta funkcja powoduje, że element jest aktualizowany na dysku, dlatego jest on zwykle wywoływany tylko w wyniku określonej akcji użytkownika.

COleServerDoc::ScrollContainerBy

Wywołaj funkcję składową ScrollContainerBy , aby przewinąć dokument kontenera o kwotę w pikselach wskazywaną przez sizeScrollelement .

BOOL ScrollContainerBy(CSize sizeScroll);

Parametry

sizeScroll
Wskazuje, jak daleko dokument kontenera ma być przewijany.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Wartości dodatnie wskazują przewijanie w dół i w prawo; wartości ujemne wskazują przewijanie w górę i po lewej stronie.

COleServerDoc::UpdateAllItems

Wywołaj tę funkcję, aby powiadomić wszystkie połączone elementy połączone z dokumentem o zmianie dokumentu.

void UpdateAllItems(
    COleServerItem* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parametry

pSender
Wskaźnik do elementu, który zmodyfikował dokument lub wartość NULL, jeśli wszystkie elementy mają zostać zaktualizowane.

lHint
Zawiera informacje o modyfikacji.

PHint
Wskaźnik do obiektu przechowującego informacje o modyfikacji.

nDrawAspect
Określa sposób rysowania elementu. Jest to wartość z wyliczenia DVASPECT. Ten parametr może mieć jedną z następujących wartości:

  • DVASPECT_CONTENT Element jest reprezentowany w taki sposób, że może być wyświetlany jako obiekt osadzony wewnątrz kontenera.

  • DVASPECT_THUMBNAIL Element jest renderowany w reprezentacji "miniatury", aby można było je wyświetlić w narzędziu przeglądania.

  • DVASPECT_ICON Element jest reprezentowany przez ikonę.

  • DVASPECT_DOCPRINT Element jest reprezentowany tak, jakby został wydrukowany przy użyciu polecenia Drukuj z menu Plik.

Uwagi

Zazwyczaj ta funkcja jest wywoływana po zmianie dokumentu serwera przez użytkownika. Jeśli element OLE jest połączony z dokumentem za pomocą linku automatycznego, element zostanie zaktualizowany w celu odzwierciedlenia zmian. W aplikacjach kontenerów napisanych za pomocą biblioteki klas programu Microsoft Foundation wywoływana jest funkcja COleClientItem składowa OnChange.

Ta funkcja wywołuje OnUpdate funkcję składową dla każdego elementu dokumentu z wyjątkiem elementu wysyłającego, przekazując pHint, lHint i nDrawAspect. Użyj tych parametrów, aby przekazać informacje do elementów dotyczących modyfikacji wprowadzonych w dokumencie. Informacje można kodować przy użyciu biblioteki lHint lub zdefiniować klasę pochodną CObjectdo przechowywania informacji o modyfikacjach i przekazać obiekt tej klasy przy użyciu metody pHint. Zastąp funkcję składową w COleServerItemklasie -pochodnejOnUpdate, aby zoptymalizować aktualizowanie każdego elementu w zależności od tego, czy jego prezentacja uległa zmianie.

Zobacz też

Przykład MFC HIERSVR
Klasa COleLinkingDoc
Wykres hierarchii
Klasa COleDocument
Klasa COleLinkingDoc
Klasa COleTemplateServer