Aracılığıyla paylaş


Veri Nesneleri ve Veri Kaynakları: Düzenleme

Bir veri nesnesi veya veri kaynağı oluşturulduktan sonra, veriler üzerinde veri ekleme ve kaldırma, verilerin içinde olduğu biçimleri numaralandırma ve daha fazlası gibi bir dizi yaygın işlem gerçekleştirebilirsiniz. Bu makalede, en yaygın işlemleri tamamlamak için gereken teknikler açıklanmaktadır. Konu başlıkları şunlardır:

Veri Kaynağına Veri Ekleme

Verilerin bir veri kaynağına nasıl eklendiği, verilerin hemen mi yoksa isteğe bağlı olarak mı sağlandığına ve hangi ortamda sağlandığına bağlıdır. Olasılıklar aşağıdaki gibidir.

Verileri Hemen Sağlama (Anında İşleme)

  • Veri sağladığınız her Pano biçimi için art arda arama COleDataSource::CacheGlobalData . Kullanılacak Pano biçimini, verileri içeren belleğe bir tanıtıcı ve isteğe bağlı olarak verileri açıklayan bir FORMATETC yapısı geçirin.

    -veya-

  • Doğrudan STGMEDIUM yapılarıyla çalışmak istiyorsanız, yukarıdaki seçenek yerine COleDataSource::CacheGlobalData öğesini çağırırsınızCOleDataSource::CacheData.

İsteğe Bağlı Veri Sağlama (Gecikmeli İşleme)

Bu gelişmiş bir konudur.

  • Veri sağladığınız her Pano biçimi için art arda arama COleDataSource::DelayRenderData . Kullanılacak Pano biçimini ve isteğe bağlı olarak verileri açıklayan bir FORMATETC yapısı geçirin. Veriler istendiğinde, çerçeve tarafından çağrılır COleDataSource::OnRenderDatave bunu geçersiz kılmanız gerekir.

    -veya-

  • Verileri sağlamak için bir CFile nesne kullanıyorsanız, önceki seçenek yerine COleDataSource::DelayRenderData öğesini çağırınCOleDataSource::DelayRenderFileData. Veriler istendiğinde, çerçeve tarafından çağrılır COleDataSource::OnRenderFileDatave bunu geçersiz kılmanız gerekir.

Veri Nesnesinde Kullanılabilir Biçimleri Belirleme

Bir uygulama kullanıcının verilere yapıştırmasına izin vermeden önce Pano'da işleyebileceği biçimler olup olmadığını bilmesi gerekir. Bunu yapmak için uygulamanız aşağıdakileri yapmalıdır:

  1. Bir COleDataObject nesne ve FORMATETC yapısı oluşturun.

  2. Veri nesnesini AttachClipboard Panodaki verilerle ilişkilendirmek için veri nesnesinin üye işlevini çağırın.

  3. Aşağıdakilerden birini yapın:

    • Yalnızca bir veya iki biçime ihtiyacınız varsa veri nesnesinin IsDataAvailable üye işlevini çağırın. Bu, Pano'daki verilerin uygulamanızdan çok daha fazla biçimi desteklediği durumlarda size zaman kazandırır.

      -veya-

    • Pano'da BeginEnumFormats kullanılabilen biçimleri listelemeye başlamak için veri nesnesinin üye işlevini çağırın. Ardından Pano uygulamanızın desteklediği bir biçim döndürene veya başka biçim kalmayıncaya kadar çağrısı GetNextFormat yapın.

ON_UPDATE_COMMAND_UI kullanıyorsanız, artık Düzenle menüsünden Yapıştır ve büyük olasılıkla Özel Öğeleri Yapıştır'ı etkinleştirebilirsiniz. Bunu yapmak için veya CCmdUI::Enableçağrısı CMenu::EnableMenuItem yapın. Kapsayıcı uygulamalarının menü öğeleriyle ve ne zaman yapması gerektiği hakkında daha fazla bilgi için bkz . Menüler ve Kaynaklar: Kapsayıcı Eklemeleri.

Veri Nesnesinden Veri Alma

Bir veri biçimine karar verdikten sonra geriye kalan tek şey, verileri veri nesnesinden almaktır. Bunu yapmak için kullanıcı verilerin nereye yerleştirileceğine karar verir ve uygulama uygun işlevi çağırır. Veriler aşağıdaki ortamlardan birinde kullanılabilir:

Orta Çağrılacak işlev
Genel Bellek (HGLOBAL) COleDataObject::GetGlobalData
Dosya (CFile) COleDataObject::GetFileData
STGMEDIUM yapısı (IStorage) COleDataObject::GetData

Genellikle ortam, Pano biçimiyle birlikte belirtilir. Örneğin, CF_EMBEDDEDSTRUCT nesnesi her zaman STGMEDIUM yapısı gerektiren bir ortamdadırIStorage. Bu nedenle, bir STGMEDIUM yapısını kabul eden bu işlevlerden yalnızca biri olduğundan kullanabilirsinizGetData.

Pano biçiminin bir veya HGLOBAL orta düzeyde IStream olduğu durumlarda, çerçeve verilere başvuran bir CFile işaretçi sağlayabilir. Uygulama daha sonra, verileri bir dosyadan içeri aktarabileceği şekilde almak için dosya okuma özelliğini kullanabilir. Temelde bu, veri kaynağındaki ve OnRenderFileData yordamları için OnRenderData istemci tarafı arabirimidir.

Kullanıcı artık aynı biçimdeki diğer tüm veriler gibi belgeye veri ekleyebilir.

Ne hakkında daha fazla bilgi edinmek istiyorsunuz?

Ayrıca bkz.

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