Aracılığıyla paylaş


Veri Nesneleri ve Veri Kaynakları: Oluşturma ve Yok Etme

Veri Nesneleri ve Veri Kaynakları (OLE) makalesinde açıklandığı gibi, veri nesneleri ve veri kaynakları veri aktarımının her iki tarafını da temsil eder. Bu makalede, aşağıdakiler de dahil olmak üzere veri aktarımlarınızı düzgün bir şekilde gerçekleştirmek için bu nesneleri ve kaynakları ne zaman oluşturacağınız ve yok edeceğimiz açıklanmaktadır:

Veri Nesneleri Oluşturma

Veri nesneleri hedef uygulama tarafından (istemci veya sunucu) kullanılır. Hedef uygulamadaki veri nesnesi, kaynak uygulama ile hedef uygulama arasındaki bağlantının bir ucudur. Hedef uygulamadaki bir veri nesnesi, veri kaynağındaki verilere erişmek ve verilerle etkileşim kurmak için kullanılır.

Bir veri nesnesinin gerekli olduğu iki yaygın durum vardır. İlk durum, verilerin sürükle ve bırak kullanılarak uygulamanıza bırakılmasıdır. İkinci durum, Düzenle menüsünden Özel Yapıştır veya Yapıştır seçeneğinin seçilmesidir.

Sürükle ve bırak durumunda veri nesnesi oluşturmanız gerekmez. mevcut bir veri nesnesine yönelik bir işaretçi işlevinize OnDrop geçirilir. Bu veri nesnesi, çerçeve tarafından sürükle ve bırak işleminin bir parçası olarak oluşturulur ve bu nesne tarafından da yok edilir. Yapıştırma işlemi başka bir yöntemle yapılırken her zaman böyle olmaz. Daha fazla bilgi için bkz . Veri Nesnelerini Yok Etme.

Uygulama özel bir yapıştırma veya yapıştırma işlemi gerçekleştiriyorsa, bir COleDataObject nesne oluşturmanız ve üye işlevini çağırmanız AttachClipboard gerekir. Bu, veri nesnesini Pano'da bulunan verilerle ilişkilendirir. Daha sonra bu veri nesnesini yapıştırma işlevinizde kullanabilirsiniz.

Veri Nesnelerini Yok Etme

Veri Nesneleri Oluşturma bölümünde açıklanan şemayı izlerseniz, veri nesnelerini yok etmek veri aktarımlarının önemsiz bir yönüdür. Yapıştırma işleviniz döndürdüğünde, yapıştırma işlevinizde oluşturulan veri nesnesi MFC tarafından yok edilir.

Yapıştırma işlemlerini işlemek için başka bir yöntem izlerseniz, yapıştırma işleminiz tamamlandıktan sonra veri nesnesinin yok olduğundan emin olun. Veri nesnesi yok edilene kadar, herhangi bir uygulamanın panoya başarıyla veri kopyalaması mümkün olmayacaktır.

Veri Kaynakları Oluşturma

Veri kaynakları, veri aktarımının istemcisi veya sunucu tarafı olabilecek veri aktarımının kaynağı tarafından kullanılır. Kaynak uygulamadaki veri kaynağı, kaynak uygulama ile hedef uygulama arasındaki bağlantının bir ucudur. Hedef uygulamadaki bir veri nesnesi, veri kaynağındaki verilerle etkileşim kurmak için kullanılır.

Bir uygulamanın Pano'ya veri kopyalaması gerektiğinde veri kaynakları oluşturulur. Tipik bir senaryo aşağıdaki gibi çalışır:

  1. Kullanıcı bazı verileri seçer.

  2. Kullanıcı, Düzenle menüsünden Kopyala 'yı (veya Kes) seçer veya sürükleyip bırakma işlemi başlatır.

  3. Programın tasarımına bağlı olarak, uygulama öğesinden COleDataSourcetüretilen bir COleDataSource sınıftan bir nesne veya nesnesi oluşturur.

  4. Seçilen veriler, veya COleDataSource::DelayRenderData gruplarındaki COleDataSource::CacheData işlevlerden biri çağrılarak veri kaynağına eklenir.

  5. Uygulama, 3. adımda oluşturulan nesneye ait üye işlevini (veya DoDragDrop sürükle ve bırak işlemiyse üye işlevini) çağırırSetClipboard.

  6. Bu bir Kesme işlemiyse veya DoDragDrop DROPEFFECT_MOVE döndürürse, 1. adımda seçilen veriler belgeden silinir.

Bu senaryo, MFC OLE örnekleri OCLIENT ve HIERSVR tarafından uygulanır. ve OnGetClipboardData işlevleri dışında GetClipboardData her uygulamanın CViewtüretilmiş sınıfının kaynağına bakın. Bu iki işlev veya COleClientItem COleServerItemtüretilmiş sınıf uygulamalarında bulunur. Bu örnek programlar, bu kavramların nasıl uygulanacaklarına yönelik iyi bir örnek sağlar.

Sürükle ve bırak işleminin varsayılan davranışını değiştirirseniz, nesne oluşturmak COleDataSource isteyebileceğiniz bir durum daha oluşur. Daha fazla bilgi için OLE Sürükleme ve bırakma: Sürükleme ve bırakma özelleştirme makalesine bakın.

Veri Kaynaklarını Yok Etme

Veri kaynakları, şu anda bunlardan sorumlu olan uygulama tarafından yok edilmelidir. COleDataSource::D oDragDrop çağrısı gibi veri kaynağını OLE'ye teslim ettiğiniz durumlarda çağrısı yapmanız pDataSrc->InternalReleasegerekir. Örnek:

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();
   }
}

Veri kaynağınızı OLE'ye teslim etmediyseniz, herhangi bir tipik C++ nesnesinde olduğu gibi onu yok etmek sizin sorumluluğunuzdadır.

Daha fazla bilgi için bkz . Sürükle ve Bırak, Pano ve Veri Nesnelerini ve Veri Kaynaklarını Düzenleme.

Ayrıca bkz.

Veri Nesneleri ve Veri Kaynakları (OLE)
COleDataObject Sınıfı
COleDataSource Sınıfı