Вариант с переформатированием в RTF и отображением в окне оказался не самым удобным. Пришлось родить функцию. Она, конечно, недолизана и заточена под кириллицу, но помещает в буфер текст в кодировке Юникод. Далее всё всем и так понятно. Не пилите за оформление, лень долизовать, переводить в класс и т.п. (у себя я уже вставил куда надо и как надо)
Код: Выделить всё
PROGRAM
Include('svapi.inc'),once
MAP
StringToClipBoard(String)
module('CW_API')
memcpy(long,long,long),raw,name('_memcpy')
End
Include('svapifnc.inc'),ONCE
END
TestString String(1024)
CODE
TestString = 'Проверка Clipboard с юникодом'
StringToClipboard(TestString)
StringToClipBoard Procedure(InpString)
UnicodeText String(2*Size(InpString)+2)
L Long
I Long
loc:RetrievedHandle Long
CODE
IF OpenClipboard(0{PROP:AppInstance}) Then
I = Len(Clip(InpString))
L = Size(UnicodeText)
Clear(UnicodeText,0)
If MultiByteToWideChar(1251,0,Address(InpString),I,Address(UnicodeText),L).
UnicodeText[ L-1 : L] = '<0><0>'
IF EmptyClipboard()
loc:RetrievedHandle = GlobalAlloc(GMEM_DDESHARE,L)
memcpy(GlobalLock(loc:RetrievedHandle),address(UnicodeText),L)
x# = GlobalUnlock(loc:RetrievedHandle)
x# = SetClipboardData(CF_UNICODETEXT,loc:RetrievedHandle) THEN
x# = GlobalFree(loc:RetrievedHandle)
CloseClipboard()
END