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ırCOleDataSource::OnRenderData
ve bunu geçersiz kılmanız gerekir.-veya-
Verileri sağlamak için bir
CFile
nesne kullanıyorsanız, önceki seçenek yerineCOleDataSource::DelayRenderData
öğesini çağırınCOleDataSource::DelayRenderFileData
. Veriler istendiğinde, çerçeve tarafından çağrılırCOleDataSource::OnRenderFileData
ve 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:
Bir
COleDataObject
nesne ve FORMATETC yapısı oluşturun.Veri nesnesini
AttachClipboard
Panodaki verilerle ilişkilendirmek için veri nesnesinin üye işlevini çağırın.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ı
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin