Obiekty danych i źródła danych: operowanie

Po utworzeniu obiektu danych lub źródła danych, można wykonywać wiele typowych operacji na danych, takich jak wstawianie i usuwanie danych, wyliczanie formatów, w której znajduje się dane, i więcej.W tym artykule opisano techniki niezbędne do ukończenia najbardziej typowe operacje.Tematy obejmują:

  • Wstawianie danych do źródła danych

  • Określanie formatów dostępnych w obiekcie danych

  • Pobieranie danych z obiektu danych

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 lub na żądanie i w których nośnik jest dostarczany.Możliwości są następujące.

Dostarczanie danych natychmiast (natychmiastowe Rendering)

  • Wywołanie COleDataSource::CacheGlobalData kilka razy dla każdego formatu Schowka, w którym są dostarczająca dane.Przekazać format schowka mają być stosowane, dojście do pamięci, zawierające dane i, opcjonalnie, FORMATETC struktury opisujące danych.

    -lub-

  • Jeśli chcesz pracować bezpośrednio z STGMEDIUM struktur, call COleDataSource::CacheData zamiast COleDataSource::CacheGlobalData w opisanej powyżej opcji.

Dostarczanie danych na żądanie (opóźniony renderowania)

To jest temat zaawansowany.

  • Wywołanie COleDataSource::DelayRenderData kilka razy dla każdego formatu Schowka, w którym są dostarczająca dane.Przekazać format schowka ma być używany i, opcjonalnie, FORMATETC struktury opisujące danych.Gdy jest żądane dane, będzie wywoływać ramach COleDataSource::OnRenderData, który należy zastąpić.

    -lub-

  • Jeśli używasz CFile obiektu do dostarczania danych, call COleDataSource::DelayRenderFileData zamiast COleDataSource::DelayRenderData w poprzedniej opcji.Gdy jest żądane dane, będzie wywoływać ramach COleDataSource::OnRenderFileData, który należy zastąpić.

Określanie formatów dostępnych w obiekcie danych

Zanim aplikacja zezwala użytkownikowi na wkleić danych, musi wiedzieć, czy są formatami w Schowku, jaką może obsłużyć.Aby to zrobić, aplikacja powinna wykonaj następujące czynności:

  1. Tworzenie COleDataObject obiektu i FORMATETC struktury.

  2. Wywołanie obiektu danych AttachClipboard funkcji składowej powiązać obiekt danych z danych w Schowku.

  3. Wykonaj jedną z następujących czynności:

    • Wywołanie obiektu danych IsDataAvailable muszą funkcji członka, jeśli istnieje tylko jeden lub dwóch formatów.Pozwoli to zaoszczędzić czas w przypadkach, gdy dane w Schowku obsługuje znacznie więcej formatów niż aplikacja.

      -lub-

    • Wywołanie obiektu danych BeginEnumFormats funkcji składowej, aby rozpocząć wyliczanie formaty dostępne w Schowku.Następnie wywołać GetNextFormat aż do momentu powrotu Schowka format obsługuje aplikację albo nie ma więcej formatów.

Jeśli używasz ON_UPDATE_COMMAND_UI, można teraz włączyć Wklej i, ewentualnie, elementy Wklej specjalnie w menu Edycja.W tym celu należy wywołać CMenu::EnableMenuItem lub CCmdUI::Enable.Aby uzyskać więcej informacji o jakiego kontenera aplikacji należy wykonać za pomocą elementów menu i kiedy, zobacz menu i zasoby: dodatki kontener.

Pobieranie danych z obiektu danych

Po podjęciu decyzji o formacie danych, pozostaje do pobierania danych z obiektu danych.Aby to zrobić, użytkownik decyduje, gdzie umieścić dane, a aplikacja wywołuje odpowiednią funkcję.Dane będą dostępne w jednym z następujących mediów:

Średni

Funkcji do wywołania

Pamięci globalnej (HGLOBAL)

COleDataObject::GetGlobalData

File (CFile)

COleDataObject::GetFileData

STGMEDIUM struktury (IStorage)

COleDataObject::GetData

Powszechnie medium zostaną określone wraz z jego format Schowka.Na przykład CF_EMBEDDEDSTRUCT obiektu jest zawsze w IStorage nośnika, który wymaga STGMEDIUM struktury.W związku z tym, należy użyć GetData , ponieważ to jest tylko jeden z tych funkcji, które mogą akceptować STGMEDIUM struktury.

W przypadkach, gdy format Schowka jest w IStream lub HGLOBAL ramach średnie, może dostarczyć CFile wskaźnik, który odwołuje się do danych.Aplikacja następnie można użyć pliku Czytaj, aby uzyskać dane w bardzo w taki sam sposób, jak to może importować dane z pliku.Zasadniczo, jest to interfejs po stronie klienta do OnRenderData i OnRenderFileData procedur w źródle danych.

Użytkownik może teraz Wstaw dane do dokumentu tak jak w przypadku innych danych, w tym samym formacie.

O czym chcesz się dowiedzieć więcej?

Zobacz też

Informacje

Klasa COleDataObject

Klasa COleDataSource

Koncepcje

Obiekty danych i źródła danych (OLE)