Udostępnij za pośrednictwem


Obiekty danych i źródeł danych: tworzenie i niszczenie

Jak wyjaśniono w artykule obiekty danych i źródeł danych (OLE), obiekty danych i źródeł danych reprezentują obie strony transfer danych.W tym artykule wyjaśniono, gdy do tworzenia i niszczenia tych obiektów i źródeł sprawdzeń transfery danych użytkownika, włączając:

  • Tworzenie obiektów danych

  • Niszczenie danych obiektów

  • Tworzenie źródła danych

  • Niszczenie źródeł danych

Tworzenie obiektów danych

Obiekty danych są używane przez aplikację docelową — klient lub serwer.Obiekt danych w aplikacji docelowej jest jeden koniec połączenia między aplikacji źródłowego i docelowego.Obiekt danych w aplikacji docelowej jest używany do dostępu i korzystania z danych w źródle danych.

Istnieją dwie typowe sytuacje, w których potrzebna jest obiektem danych.Pierwszy sytuacja jest po upuszczeniu danych w aplikacji za pomocą przeciągania i upuszczania.Druga sytuacja jest po wybraniu z menu Edycja Wklej lub Wklej specjalnie.

W sytuacji przeciągania i upuszczania nie trzeba utworzyć obiekt danych.Wskaźnik do obiektu danych zostaną przekazane do programu OnDrop funkcji.Ten obiekt danych jest tworzony w ramach w ramach operacji przeciągania i upuszczania oraz również zostaną zniszczone przez nią.To nie jest zawsze podczas wklejania odbywa się w inny sposób.Aby uzyskać więcej informacji, zobacz Niszczenia danych obiektów.

Jeśli aplikacja wykonuje Wklej lub specjalnych operacji wklejania, należy utworzyć COleDataObject obiektu i wywołanie jej AttachClipboard funkcji składowej.To kojarzy obiekt danych z danych w Schowku.Ten obiekt danych można następnie użyć w funkcji Wklej.

Przykładem, jak to zrobić, zobacz DoPasteItem funkcji MAINVIEW.CPP, czyli plik część próbki MFC OLE OCLIENT.OCLIENT implementuje funkcję, która wykonuje wszystkie operacje wklejania i wywołania DoPasteItem z jego OnDrop, OnPaste, i OnPasteLink funkcji.Ponieważ OnDrop posiada wskaźnik do obiektu danych przekazywanych do niej, przekazuje wskaźnik do DoPasteItem.OnPastei OnPasteLink przekazać NULL dla tego parametru informacją o DoPasteItem do tworzenia obiektu danych i dołączyć go do Schowka.Ten schemat oddziela Wklej kod, trzeba go debugowania w jednym miejscu, ale można nadal używać, dla obu rodzajów operacji wklejania.

Niszczenie danych obiektów

Wykonanie programu, opisanego w Tworzenia obiektów danych, niszczenie danych obiektów jest trywialny aspekt transferu danych.Obiekt danych, który został utworzony w funkcji Wklej zostaną zniszczone przez MFC po powrocie z funkcji Wklej.

Jeśli wykonasz innej metody obsługi operacji wklejania, upewnij się, że niszczony jest obiekt danych, po zakończeniu operacji wklejania użytkownika.Do momentu zniszczenia obiektu danych, będzie niemożliwe dla każdej aplikacji pomyślnie kopiowania danych do Schowka.

Tworzenie źródła danych

Źródła danych są używane przez źródło transfer danych, która może być klienta lub transferu danych po stronie serwera.Źródła danych w aplikacji źródłowej jest jeden koniec połączenia między aplikacji źródłowego i docelowego.Obiekt danych w aplikacji docelowej jest używany do interakcji z danymi w źródle danych.

Źródła danych są tworzone, jeśli aplikacja wymaga skopiowania danych do Schowka.Typowy scenariusz działa następująco:

  1. Użytkownik wybiera niektóre dane.

  2. Użytkownik zdecyduje się na kopię (lub Wytnij) z Edytuj menu lub zaczyna się od operacji przeciągania i upuszczania.

  3. W zależności od projektu program, aplikacja tworzy albo COleDataSource lub obiektu z klasą pochodną COleDataSource.

  4. Wybrane dane jest wstawiany do źródła danych, wywołując funkcje w COleDataSource::CacheData lub COleDataSource::DelayRenderData grup.

  5. Wywołania aplikacji SetClipboard funkcji składowej (lub DoDragDrop funkcji składowej, jeśli jest to przeciągnij i upuść) należących do obiektu utworzonego w kroku 3.

  6. Jeśli jest to Wytnij operacji lub DoDragDrop zwraca DROPEFFECT_MOVE, dane wybrane w kroku 1 skreśla się z dokumentu.

W tym scenariuszu jest implementowana przez próbek MFC OLE OCLIENT i HIERSVR.Spójrz na źródła dla każdej aplikacji CView-klasy dla wszystkich, ale GetClipboardData i OnGetClipboardData funkcji.Te dwie funkcje są w albo COleClientItem lub COleServerItem-uzyskane implementacje klasy.Programy te próbki zawierają dobry przykład jak zaimplementować te pojęcia.

Jeden sytuację w której można utworzyć COleDataSource obiektu występuje, jeśli modyfikujesz domyślne zachowanie operacji przeciągania i upuszczania.Aby uzyskać więcej informacji, zobacz przeciągnij i upuść: Dostosowywanie art.

Niszczenie źródeł danych

Źródła danych muszą zostać zniszczone przez aktualnie odpowiedzialny za ich stosowania.W sytuacjach, gdy strony źródła danych do OLE, takich jak wywoływanie COleDataSource::DoDragDrop, trzeba wywołać pDataSrc - > InternalRelease.Na przykład:

void CMyListView::OnLvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
{
   UNREFERENCED_PARAMETER(pResult);

   LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

   CMyDataSource* pDataSrc = new CMyDataSource();
   if (NULL != pDataSrc)
   {
      pDataSrc->Initialize(pNMLV, this);
      pDataSrc->DelayRenderData(
         (CLIPFORMAT)RegisterClipboardFormat(_T("TIGroupFiles")));
      pDataSrc->DoDragDrop();
      pDataSrc->InternalRelease();
   }
}

Jeśli mają nie przekazało źródła danych OLE, a następnie są odpowiedzialne za zniszczenie, jak w przypadku dowolnego obiektu typowe C++.

Aby uzyskać więcej informacji, zobacz przeciągania i upuszczania, Schowka, i manipulowania obiektami danych i źródeł danych.

Zobacz też

Informacje

Klasa COleDataObject

Klasa COleDataSource

Koncepcje

Obiekty danych i źródeł danych (OLE)