Format Clipboard

Jendela dapat menempatkan lebih dari satu objek di clipboard, masing-masing mewakili informasi yang sama dalam format clipboard yang berbeda. Pengguna tidak perlu mengetahui format clipboard yang digunakan untuk objek pada clipboard.

Topik berikut menjelaskan format clipboard.

Format Papan Klip Standar

Format clipboard yang ditentukan oleh sistem disebut format clipboard standar. Format clipboard ini dijelaskan dalam Format Papan Klip Standar.

Format Papan Klip Terdaftar

Banyak aplikasi bekerja dengan data yang tidak dapat diterjemahkan ke dalam format clipboard standar tanpa kehilangan informasi. Aplikasi ini dapat membuat format clipboard mereka sendiri. Format clipboard yang ditentukan oleh aplikasi, disebut format clipboard terdaftar. Misalnya, jika aplikasi pemrosesan kata menyalin teks yang diformat ke clipboard menggunakan format teks standar, informasi pemformatan akan hilang. Solusinya adalah mendaftarkan format clipboard baru, seperti Rich Text Format (RTF).

Untuk mendaftarkan format clipboard baru, gunakan fungsi RegisterClipboardFormat. Fungsi ini mengambil nama format dan mengembalikan nilai bilangan bulat yang tidak ditandatangani yang mewakili format clipboard terdaftar. Untuk mengambil nama format clipboard terdaftar, teruskan nilai bilangan bulat yang tidak ditandatangani ke fungsi GetClipboardFormatName.

Jika lebih dari satu aplikasi mendaftarkan format clipboard dengan nama yang sama persis, format clipboard hanya didaftarkan sekali. Kedua panggilan ke fungsi RegisterClipboardFormat mengembalikan nilai yang sama. Dengan cara ini, dua aplikasi yang berbeda dapat berbagi data dengan menggunakan format clipboard terdaftar.

Format Clipboard Privat

Aplikasi dapat mengidentifikasi format clipboard privat dengan menentukan nilai dalam rentang CF_PRIVATEFIRST melalui CF_PRIVATELAST. Aplikasi dapat menggunakan format clipboard privat untuk format data yang ditentukan aplikasi yang tidak perlu didaftarkan dengan sistem.

Handel data yang terkait dengan format clipboard privat tidak secara otomatis dibeberkan oleh sistem. Jika jendela Anda menggunakan format clipboard privat, Anda dapat menggunakan pesan WM_DESTROYCLIPBOARD untuk membebaskan sumber daya terkait yang tidak lagi diperlukan.

Untuk informasi selengkapnya tentang pesan WM_DESTROYCLIPBOARD, lihat Kepemilikan Clipboard.

Aplikasi dapat menempatkan handel data di clipboard dengan menentukan format privat dalam rentang CF_GDIOBJFIRST melalui CF_GDIOBJLAST. Saat menggunakan nilai dalam rentang ini, handel data bukan handel ke objek Windows Graphics Device Interface (GDI), tetapi merupakan handel yang dialokasikan oleh fungsi GlobalAlloc dengan bendera GMEM_MOVEABLE. Ketika clipboard dikosongkan, sistem secara otomatis menghapus objek menggunakan fungsi GlobalFree.

Beberapa Format Clipboard

Jendela dapat menempatkan lebih dari satu objek clipboard pada clipboard, masing-masing mewakili informasi yang sama dalam format clipboard yang berbeda. Saat menempatkan informasi di clipboard, jendela harus menyediakan data dalam format sebanyak mungkin. Untuk mengetahui berapa banyak format yang saat ini digunakan pada clipboard, panggil fungsi CountClipboardFormats.

Format clipboard yang berisi informasi terbanyak harus ditempatkan pada clipboard terlebih dahulu, diikuti dengan format yang kurang deskriptif. Jendela menempelkan informasi dari clipboard biasanya mengambil objek clipboard dalam format pertama yang dikenalinya. Karena format clipboard dijumlahkan dalam urutan yang ditempatkan di clipboard, format pertama yang dikenali juga merupakan yang paling deskriptif.

Misalnya, pengguna menyalin teks bergaya dari dokumen pemrosesan kata. Jendela yang berisi dokumen mungkin terlebih dahulu menempatkan data pada clipboard dalam format terdaftar, seperti RTF. Selanjutnya, jendela akan menempatkan data di clipboard dalam format yang kurang deskriptif, seperti teks (CF_TEXT).

Ketika konten clipboard ditempelkan ke jendela lain, jendela mengambil data dalam format yang paling deskriptif yang dikenalinya. Jika jendela mengenali RTF, data yang sesuai ditempelkan ke dalam dokumen. Jika tidak, data teks ditempelkan ke dalam dokumen dan informasi pemformatan hilang.

Format Clipboard yang Disintesis

Sistem secara implisit mengonversi data antara format clipboard tertentu: jika jendela meminta data dalam format yang tidak ada di clipboard, sistem mengonversi format yang tersedia ke format yang diminta. Sistem dapat mengonversi data seperti yang ditunjukkan dalam tabel berikut.

Clipboard Format Format Konversi
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

 

Jika sistem menyediakan konversi jenis otomatis untuk format clipboard tertentu, tidak ada keuntungan untuk menempatkan format konversi pada clipboard.

Jika sistem menyediakan konversi jenis otomatis untuk format clipboard tertentu, dan Anda memanggil EnumClipboardFormats untuk menghitung format data clipboard, sistem terlebih dahulu menghitung format yang ada di clipboard, diikuti dengan format yang dapat dikonversi.

Saat menyalin bitmap, yang terbaik adalah menempatkan format CF_DIB atau CF_DIBV5 pada clipboard. Ini karena warna dalam bitmap yang bergantung pada perangkat (CF_BITMAP) relatif terhadap palet sistem, yang dapat berubah sebelum bitmap ditempelkan. Jika format CF_DIB atau CF_DIBV5 ada di clipboard dan jendela meminta format CF_BITMAP, sistem merender bitmap independen perangkat (DIB) menggunakan palet saat ini pada saat itu.

Jika Anda menempatkan format CF_BITMAP pada clipboard (dan tidak CF_DIB), sistem merender format clipboard CF_DIB atau CF_DIBV5 segera setelah clipboard ditutup. Ini memastikan bahwa palet yang benar digunakan untuk menghasilkan DIB. Jika Anda menempatkan format CF_DIBV5 dengan informasi ruang warna bitmap di clipboard, sistem akan mengonversi bitmap bitmap dari ruang warna bitmap ke ruang warna sRGB saat CF_DIB atau CF_DIBV5 diminta. Jika CF_DIBV5 diminta ketika tidak ada informasi ruang warna di clipboard, sistem mengembalikan informasi ruang warna sRGB dalam struktur BITMAPV5HEADER. Konversi antara format clipboard lainnya terjadi sesuai permintaan.

Jika clipboard berisi data dalam format CF_PALETTE, aplikasi harus menggunakan fungsi SelectPalette dan RealPalette untuk mewujudkan data lain dalam clipboard terhadap palet logis tersebut.

Ada dua format clipboard untuk metafiles: CF_ENHMETAFILE dan CF_METAFILEPICT. Tentukan CF_ENHMETAFILE untuk metafiles dan CF_METAFILEPICT yang disempurnakan untuk metafiles Windows.

Format Riwayat Clipboard cloud dan Clipboard

Beberapa versi Windows termasuk Cloud Clipboard, yang menyimpan riwayat item data clipboard terbaru dan dapat menyinkronkannya di antara perangkat pengguna. Jika Anda tidak ingin data tempat aplikasi Anda di clipboard disertakan dalam riwayat clipboard atau disinkronkan dengan perangkat lain, aplikasi Anda dapat mengontrol perilaku ini dengan menempatkan data dalam format clipboard terdaftar tertentu yang namanya diketahui oleh sistem Windows:

  • ExcludeClipboardContentFromMonitorProcessing : Tempatkan data apa pun di clipboard dalam format ini untuk mencegah semua format clipboard disertakan dalam riwayat clipboard atau disinkronkan ke perangkat lain pengguna.
  • CanIncludeInClipboardHistory : Tempatkan nilai DWORD berseri nol pada clipboard dalam format ini untuk mencegah semua format clipboard disertakan dalam riwayat clipboard, atau tempatkan nilai satu sebagai gantinya untuk secara eksplisit meminta agar item clipboard disertakan dalam riwayat clipboard. Ini tidak memengaruhi sinkronisasi ke perangkat lain pengguna.
  • CanUploadToCloudClipboard : Tempatkan nilai DWORD berseri nol pada clipboard dalam format ini untuk mencegah semua format clipboard disinkronkan ke perangkat lain pengguna, atau tempatkan nilai satu sebagai gantinya untuk secara eksplisit meminta agar item clipboard disinkronkan ke perangkat lain. Ini tidak memengaruhi riwayat papan klip perangkat lokal.

Seperti format clipboard terdaftar lainnya, Anda harus menggunakan fungsi RegisterClipboardFormat untuk mendapatkan nilai bilangan bulat yang tidak ditandatangani yang mengidentifikasi masing-masing dari 3 format di atas.