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ć COleServerDoc
klasy , 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 OnGetEmbeddedItem
klasy .
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 COleServerDoc
klasy 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 COleServerDoc
klasy pochodne.
Aby uzyskać więcej informacji na temat serwerów, zobacz artykuł Serwery: implementowanie serwera.
Hierarchia dziedziczenia
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 COleLinkingDoc
implementację OnNewDocument
, OnOpenDocument
i 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 COleServerDoc
implementację 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 COleServerDoc
implementację 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 COleServerDoc
implementację 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 | 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 COleServerItem
klasy.
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 OnDeactivate
metody , 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 sizeScroll
element .
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ą CObject
do przechowywania informacji o modyfikacjach i przekazać obiekt tej klasy przy użyciu metody pHint. Zastąp funkcję składową w COleServerItem
klasie -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