Aracılığıyla paylaş


Veri Nesneleri ve Veri Kaynakları: Düzenleme

Uyarı

Microsoft Foundation Sınıfları (MFC) kitaplığı desteklenmeye devam ediyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

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. Konular ş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 bir pano biçimi için COleDataSource::CacheGlobalData'yi tekrar tekrar çağrı yapın. 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::CacheData öğesini çağırırsınızCOleDataSource::CacheGlobalData.

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

Bu gelişmiş bir konudur.

  • Veri sağladığınız her bir pano biçimi için COleDataSource::DelayRenderData'yi tekrar tekrar çağrı yapın. 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 COleDataSource::OnRenderData'i çağırır ve bunu geçersiz kılmanız gerekir.

    -veya-

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

Veri Nesnesinde Kullanılabilir Biçimleri Belirleme

Bir uygulama, kullanıcının verileri yapıştırmasına izin vermeden önce Pano'da işleyebileceği herhangi bir format olup olmadığını bilmesi gerekiyor. 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çimi döndürene kadar veya başka biçim kalmadığında GetNextFormat çağırı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 ya CMenu::EnableMenuItem ya da CCmdUI::Enable çağırı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 IStorage yapısı gerektiren bir ortamdadır. Bu nedenle, GetData kullanırsınız çünkü bu işlevlerden yalnızca bir STGMEDIUM yapısını kabul edebilen odur.

Pano biçiminin IStream veya HGLOBAL türünde olduğu durumlarda, çerçeve verilere referans veren 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 OnRenderData ve OnRenderFileData yordamları için 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 bakınız

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