Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
ВнизНе работает копирование в буфер в win9x Найти похожие ветки
← →
A Programmer (2007-05-26 16:10) [0]
SelLen:= Length(ws);
if (SelLen > 0) then
begin
OpenClipboard(Application.Handle);
try
EmptyClipboard;
hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, SelLen*2+2);
try
if (hg <> 0) then
begin
P:=GlobalLock(hg);
if P <> nil then
begin
Move(PWideChar(ws)^, P^, SelLen * 2 + 2);
SetClipboardData(CF_UNICODETEXT,hg);
end;
end;
finally
GlobalUnlock(hg);
GlobalFree(hg);
end;
finally
CloseClipboard;
end;
end;
В Win2000 всё работает, в win9x не происходит копирования в буфер, хотя переменная ws содержит юникод-символы.
Как это исправить?
← →
begin...end © (2007-05-26 17:30) [1]CF_UNICODETEXT
Windows NT/2000/XP: Unicode text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data.
(c) MSDN
← →
A Programmer (2007-05-26 18:02) [2]>CF_UNICODETEXT
Ясно,но я пробовал и CF_TEXT, всё равно не работает - указатель P указывает на адрес, по которому находится мусор или одни нули (если обнулить hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SelLen*2+2);).
А как же поместить юникод в буфер обмена в win9x, опера ведь это как-то делает?
← →
A Programmer (2007-05-26 19:15) [3]Нашёл в чём дело:
GlobalFree(hg);
должен быть после
CloseClipboard;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.055 c