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.
Po utworzeniu obiektu danych lub źródła danych można wykonać szereg typowych operacji na danych, takich jak wstawianie i usuwanie danych, wyliczanie formatów danych i nie tylko. W tym artykule opisano techniki niezbędne do wykonania najbardziej typowych operacji. Tematy obejmują:
Wstawianie danych do źródła danych
Sposób wstawiania danych do źródła danych zależy od tego, czy dane są dostarczane natychmiast, czy na żądanie, i w jakim nośniku są dostarczane. Możliwości są następujące.
Natychmiastowe dostarczanie danych (natychmiastowe renderowanie)
Wywołaj
COleDataSource::CacheGlobalDatawielokrotnie dla każdego formatu Schowka, w którym podajesz dane. Przekaż format Schowka do użycia, uchwyt do pamięci zawierającej dane i opcjonalnie strukturę FORMATETC opisującą dane.— lub —
Jeśli chcesz pracować bezpośrednio ze strukturami STGMEDIUM, wywołaj
COleDataSource::CacheDatazamiastCOleDataSource::CacheGlobalDataw powyższej opcji.
Dostarczanie danych na żądanie (opóźnione renderowanie)
Jest to zaawansowany temat.
Wywołaj
COleDataSource::DelayRenderDatawielokrotnie dla każdego formatu Schowka, w którym podajesz dane. Przekaż format Schowka do użycia i, opcjonalnie, strukturę FORMATETC opisującą dane. Po zażądaniu danych, platforma wywoła metodęCOleDataSource::OnRenderData, którą musisz przysłonić.— lub —
Jeśli używasz
CFileobiektu do dostarczania danych, wywołaj metodęCOleDataSource::DelayRenderFileDatazamiastCOleDataSource::DelayRenderDataw poprzedniej opcji. Po zażądaniu danych, platforma wywoła metodęCOleDataSource::OnRenderFileData, którą musisz przysłonić.
Określanie formatów dostępnych w obiekcie danych
Zanim aplikacja pozwoli użytkownikowi wkleić do siebie dane, musi wiedzieć, czy w Schowku istnieją formaty, które może obsłużyć. W tym celu aplikacja powinna wykonać następujące czynności:
Utwórz
COleDataObjectobiekt i strukturę FORMATETC .Wywołaj funkcję składową obiektu
AttachClipboarddanych, aby skojarzyć obiekt danych z danymi w Schowku.Wykonaj jedną z następujących czynności:
Wywołaj funkcję składową obiektu
IsDataAvailabledanych, jeśli potrzebujesz tylko jednego lub dwóch formatów. Pozwoli to zaoszczędzić czas w przypadkach, w których dane w Schowku obsługują znacznie więcej formatów niż aplikacja.— lub —
Wywołaj funkcję składową obiektu
BeginEnumFormatsdanych, aby rozpocząć enumerację formatów dostępnych w Schowku. Następnie wywołajGetNextFormataż Schowek zwróci format, który aplikacja obsługuje, lub nie będzie więcej formatów.
Jeśli używasz ON_UPDATE_COMMAND_UI, możesz teraz włączyć opcję Wklej i, prawdopodobnie, Wklej elementy specjalne w menu Edycja. Aby to zrobić, wywołaj metodę CMenu::EnableMenuItem lub CCmdUI::Enable. Aby uzyskać więcej informacji o tym, co aplikacje kontenerów powinny robić z elementami menu i kiedy, zobacz Menu i zasoby: dodatki kontenera.
Pobieranie danych z obiektu danych
Gdy zdecydujesz się na format danych, wystarczy pobrać dane z obiektu danych. W tym celu użytkownik decyduje, gdzie umieścić dane, a aplikacja wywołuje odpowiednią funkcję. Dane będą dostępne w jednym z następujących medium:
| Średni | Funkcja do wywoływania |
|---|---|
Pamięć globalna (HGLOBAL) |
COleDataObject::GetGlobalData |
Plik (CFile) |
COleDataObject::GetFileData |
STGMEDIUM struktura (IStorage) |
COleDataObject::GetData |
Często nośnik jest określany wraz z formatem schowka. Na przykład obiekt CF_EMBEDDEDSTRUCT jest zawsze na IStorage nośniku, który wymaga struktury STGMEDIUM . W związku z tym należy użyć GetData funkcji, ponieważ jest to jedyna z tych funkcji, która może akceptować strukturę STGMEDIUM .
W przypadkach, gdy format Schowka jest w postaci IStream lub HGLOBAL medium, framework może dostarczyć wskaźnik CFile odwołujący się do danych. Aplikacja może następnie użyć odczytu pliku, aby pobrać dane w taki sam sposób, jak może importować dane z pliku. Zasadniczo jest to interfejs po stronie klienta dla OnRenderData i OnRenderFileData rutyn w źródle danych.
Użytkownik może teraz wstawić dane do dokumentu tak samo jak w przypadku innych danych w tym samym formacie.
Co chcesz dowiedzieć się więcej o
Zobacz także
Obiekty danych i źródła danych (OLE)
Klasa COleDataObject
Klasa COleDataSource