Não, você não pode colocar texto com caracteres nulos incorporados na área de transferência. Vamos ver a lista de formatos padrão da área de transferência do Windows . Existem alguns formatos que mantêm as coisas geralmente entendidas como texto:
-
CF_TEXT
(1) -
CF_OEMTEXT
(7) -
CF_UNICODETEXT
(13)
Cada um deles tem essa frase em sua definição:
A null character signals the end of the data.
Agora, CF_UNICODETEXT
mantém seus dados como UTF-16LE , por isso, é mais provável que tenha algum valor nulo < em> bytes , mas caracteres nulos (dois bytes nulos em uma linha, basicamente) ainda terminarão a string.
Podemos apenas especular sobre por que os caracteres nulos não são permitidos no texto da área de transferência, mas é mais do que provável que seja apenas porque as funções de processamento de strings mais usadas no Windows assumem que um caractere nulo sinaliza o fim. A única outra maneira de saber onde uma string é interrompida seria prefixar seu tamanho.
Você pode manter gráficos na área de transferência, mesmo que eles provavelmente tenham bytes nulos porque são passados em formatos diferentes da área de transferência (por exemplo, CF_BITMAP
), que precisam ser entendidos de forma diferente por programas.