Megosztás a következőn keresztül:


Vágólapformátumok

Egy ablak több objektumot is elhelyezhet a vágólapon, amelyek mindegyike ugyanazt az információt egy másik vágólapformátumban jeleníti meg. A felhasználóknak nem kell tisztában lenniük a vágólapon lévő objektumokhoz használt vágólapformátummal.

Az alábbi témakörök a vágólap formátumát ismertetik.

Normál vágólapformátumok

A rendszer által definiált vágólapformátumokat szabványos vágólapformátumoknak nevezzük. Ezeket a vágólapformátumokat Normál vágólapformátumokismerteti.

Regisztrált vágólapformátumok

Számos alkalmazás olyan adatokkal dolgozik, amelyek nem fordíthatók le szabványos vágólapformátumra információvesztés nélkül. Ezek az alkalmazások saját vágólapformátumokat hozhatnak létre. Az alkalmazás által definiált vágólapformátumot regisztrált vágólapformátumnak nevezzük. Ha például egy szövegszerkesztő alkalmazás szabványos szövegformátummal másolta át a formázott szöveget a vágólapra, a formázási információk elvesznek. A megoldás egy új vágólapformátum, például a Rich Text Formátum (RTF) regisztrálása lenne.

Új vágólapformátum regisztrálásához használja a RegisterClipboardFormat függvényt. Ez a függvény a formátum nevét veszi fel, és egy aláíratlan egész számot ad vissza, amely a regisztrált vágólap formátumát jelöli. A regisztrált vágólapformátum nevének lekéréséhez adja át az aláíratlan egész számot a GetClipboardFormatName függvénynek.

Ha egynél több alkalmazás regisztrál egy pontosan azonos nevű vágólapformátumot, a vágólap formátuma csak egyszer lesz regisztrálva. A RegisterClipboardFormat függvény mindkét hívása ugyanazt az értéket adja vissza. Így két különböző alkalmazás oszthat meg adatokat regisztrált vágólapformátum használatával.

Privát vágólapformátumok

Az alkalmazások a CF_PRIVATELASTCF_PRIVATEFIRST tartomány értékének meghatározásával azonosíthatnak egy privát vágólapformátumot. Az alkalmazások privát vágólapformátumot használhatnak olyan alkalmazás által definiált adatformátumokhoz, amelyeket nem kell regisztrálni a rendszerben.

A rendszer nem szabadít fel automatikusan a privát vágólapformátumokhoz társított adatkezelőket. Ha az ablakok privát vágólapformátumokat használnak, az WM_DESTROYCLIPBOARD üzenettel felszabadíthatja a már nem szükséges kapcsolódó erőforrásokat.

A WM_DESTROYCLIPBOARD üzenetről további információt Vágólap tulajdonjogacímű témakörben talál.

Az alkalmazások a vágólapra helyezhetik az adatfogantyúkat úgy, hogy privát formátumot határoznak meg a CF_GDIOBJFIRSTCF_GDIOBJLASTtartományában. Ha ebben a tartományban használ értékeket, az adatleíró nem egy Windows Grafikuseszköz-kezelő (GDI) objektum leírója, hanem a GlobalAlloc függvény által lefoglalt leíró, a GMEM_MOVEABLE jelzővel. A vágólap kiürítésekor a rendszer automatikusan törli az objektumot a GlobalFree függvénnyel.

Több vágólapformátum

Egy ablak több vágólapobjektumot is elhelyezhet a vágólapon, amelyek mindegyike ugyanazt az információt más vágólapformátumban jeleníti meg. Amikor adatokat helyez el a vágólapon, az ablaknak a lehető legtöbb formátumban kell megadnia az adatokat. A vágólapon jelenleg használt formátumok számának megismeréséhez hívja meg a CountClipboardFormats függvényt.

A legtöbb információt tartalmazó vágólapformátumokat először a vágólapra kell helyezni, majd a kevésbé leíró formátumokat. A vágólapról adatokat beillesztő ablak általában egy vágólap-objektumot kér le az általa felismert első formátumban. Mivel a vágólap formátumai a vágólapra helyezésük sorrendjében vannak felsorolva, az első felismert formátum is a legleíróbb.

Tegyük fel például, hogy egy felhasználó formázott szöveget másol egy szövegszerkesztő dokumentumból. Előfordulhat, hogy a dokumentumot tartalmazó ablak először regisztrált formátumban, például RTF formátumban helyezi el az adatokat a vágólapon. Ezt követően az ablak kevésbé leíró formátumban, például szövegként (CF_TEXT) helyezi el az adatokat a vágólapon.

Amikor a vágólap tartalma egy másik ablakba van beillesztve, az ablak az általa felismert legleíróbb formátumban kéri le az adatokat. Ha az ablak felismeri az RTF-et, a megfelelő adatok beillesztve lesznek a dokumentumba. Ellenkező esetben a rendszer beilleszti a szöveges adatokat a dokumentumba, és a formázási adatok elvesznek.

Szintetizált vágólapformátumok

A rendszer implicit módon konvertálja az adatokat bizonyos vágólapformátumok között: ha egy ablak olyan formátumban kér adatokat, amely nem szerepel a vágólapon, a rendszer konvertálja az elérhető formátumot a kért formátumra. A rendszer az alábbi táblázatban leírtaknak megfelelően konvertálhatja az adatokat.

Vágólap formátuma Konvertálási formátum
CF_BITMAP CF_DIB
CF_BITMAP CF_DIBV5
CF_DIB CF_BITMAP
CF_DIB CF_PALETTE
CF_DIB CF_DIBV5
CF_DIBV5 CF_BITMAP
CF_DIBV5 CF_DIB
CF_DIBV5 CF_PALETTE
CF_ENHMETAFILE CF_METAFILEPICT
CF_METAFILEPICT CF_ENHMETAFILE
CF_OEMTEXT CF_TEXT
CF_OEMTEXT CF_UNICODETEXT
CF_TEXT CF_OEMTEXT
CF_TEXT CF_UNICODETEXT
CF_UNICODETEXT CF_OEMTEXT
CF_UNICODETEXT CF_TEXT

 

Ha a rendszer automatikus típuskonvertálást biztosít egy adott vágólapformátumhoz, nincs előnye annak, hogy a konvertálási formátum(ok) a vágólapra kerülnek.

Ha a rendszer automatikus típusátalakítást biztosít egy adott vágólapformátumhoz, és EnumClipboardFormats meghívásával számba szeretné venni a vágólap adatformátumait, a rendszer először a vágólapon lévő formátumot sorolja fel, majd azokat a formátumokat, amelyekbe konvertálható.

Bitképek másolásakor a legjobb, ha a CF_DIB vagy CF_DIBV5 formátumot a vágólapra helyezi. Ennek az az oka, hogy az eszközfüggő bitképek (CF_BITMAP) színei a rendszerpalettához képest változnak, ami a bitkép beillesztése előtt változhat. Ha a CF_DIB vagy CF_DIBV5 formátum a vágólapon van, és egy ablak kéri a CF_BITMAP formátumot, a rendszer az aktuális palettával jeleníti meg az eszközfüggetlen bitképet (DIB).

Ha a CF_BITMAP formátumot a vágólapra helyezi (és nem CF_DIB), a rendszer a vágólap bezárása után azonnal megjeleníti a CF_DIB vagy CF_DIBV5 vágólap formátumát. Ez biztosítja, hogy a DIB létrehozásához a megfelelő palettát használja a rendszer. Ha a CF_DIBV5 formátumot a vágólapon lévő bitkép színterével együtt helyezi el, a rendszer a bitkép színteréből az sRGB színtérbe konvertálja a bitkép bitképeit, amikor CF_DIB vagy CF_DIBV5 kéri. Ha CF_DIBV5 akkor van szükség, ha nincs színtér információ a vágólapon, a rendszer sRGB színtéradatokat ad vissza a BITMAPV5HEADER struktúrában. Az egyéb vágólapformátumok közötti átalakítás igény szerint történik.

Ha a vágólap CF_PALETTE formátumban tartalmaz adatokat, az alkalmazásnak a SelectPalette és RealizePalette függvényt kell használnia, hogy a vágólapon lévő egyéb adatokat az adott logikai palettán valósítsa meg.

A metafájlokhoz két vágólapformátum érhető el: CF_ENHMETAFILE és CF_METAFILEPICT. A Bővített metafájlok és a Windows-metafájlok CF_METAFILEPICTCF_ENHMETAFILE megadása.

Felhőbeli vágólap- és vágólapelőzmény-formátumok

A Windows egyes verziói közé tartozik felhőalapú vágólap, amely megőrzi a vágólap legutóbbi adatelemeinek előzményeit, és szinkronizálhatja azokat a felhasználó eszközei között. Ha nem szeretné, hogy az alkalmazás által a vágólapra helyezett adatok bekerüljenek a vágólap előzményeibe, vagy más eszközökkel szinkronizálva legyenek, az alkalmazás szabályozhatja ezt a viselkedést azáltal, hogy adatokat helyez el bizonyos regisztrált vágólapformátumokban, amelyek neve ismert a Windows rendszerben:

  • ExcludeClipboardContentFromMonitorProcessing: Helyezze az adatokat a vágólapra ebben a formátumban, hogy megakadályozza a vágólap előzményeinek összes vágólapformátumát, vagy szinkronizálja a felhasználó más eszközeire.
  • CanIncludeInClipboardHistory: Helyezzen egy szerializált DWORD nulla értéket a vágólapra ebben a formátumban, hogy ne szerepeljen az összes vágólapformátum a vágólap előzményei között, vagy adjon meg egy értéket a vágólap előzményei között. Ez nem befolyásolja a felhasználó más eszközeire való szinkronizálást.
  • CanUploadToCloudClipboard: Helyezzen egy szerializált DWORD nulla értéket a vágólapra ebben a formátumban, hogy ne szinkronizálja az összes vágólapformátumot a felhasználó más eszközeivel, vagy helyezzen el egy értéket, hogy explicit módon kérje a vágólapelem más eszközökkel való szinkronizálását. Ez nem befolyásolja a helyi eszköz vágólapjának előzményeit.

A többi regisztrált vágólapformátumhoz hasonlóan a RegisterClipboardFormat függvénnyel is le kell szereznie egy aláíratlan egész számot, amely a fenti 3 formátum mindegyikét azonosítja.