· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Трабл с Clipboard'ом

Посл.отвђт Сообщенiе


Дата: Авг 20, 2003 02:39:54

Какой-то непонятный глюк творится с этим буфером обмена. Считываю данные (текст) с него без проблем, а вот записать туда не могу... :(
При вызове комманды SetClipboardData выскакивает (но не всегда) ошибка.
У кого есть рабочий пример работы с буфером. Может там какие-то есть ограничения?


Дата: Авг 20, 2003 17:37:54

faq с hi-tech:
Q32: Как скопировать текст в буфер обмена? 

Copy2CB proc pszStr:DWORD	
; указатель на строку, которую нужно поместить в Клипбоард

 LOCAL dwStrLen:DWORD
 LOCAL hMemm:DWORD
 LOCAL pMemm:DWORD

 invoke lstrlen,pszStr ; посчитаем длину нашей строки
 mov dwStrLen,eax
 inc dwStrLen ; нужно учесть завершающий ноль... кажется нужно :)
 invoke GlobalAlloc,GMEM_MOVEABLE,dwStrLen	; выделим память
 mov hMemm,eax
 invoke GlobalLock,hMemm ; заблокируем и получим на нее указатель
 mov pMemm,eax
 invoke lstrcpy,pMemm,pszStr ; скопируем в эту память нашу строку
 invoke GlobalUnlock,hMemm   ; разблокируем нашу память
 invoke OpenClipboard,hWnd   ; откроем Клипбоард
 invoke EmptyClipboard       ; почистим его
 invoke SetClipboardData,CF_TEXT,hMemm	; установим нашу строку
 invoke CloseClipboard       ; закроем Клипбоард
 invoke GlobalFree,hMemm     ; освободим память, любезно 
	                         ; предоставленную нам Windows :)
 ret
Copy2CB endp


---------------------------------------------------------------------- ----------

  Q33: Как получить текст из Клипбоарда?


"Элементарно, Ватсон..." (C) Шерлок Холмс 
ShowCB proc

 LOCAL hMemm:DWORD
 LOCAL pMemm:DWORD
	
 invoke OpenClipboard,hWnd
 invoke GetClipboardData,CF_TEXT
 mov hMemm,eax
 invoke CloseClipboard
 .if hMemm!=0
    invoke GlobalLock,hMemm
    mov pMemm,eax
    ; покажем что у нас в Клипбоарде
    invoke MessageBox,hWnd,pMemm,0,0	
    invoke GlobalUnlock,hMemm
 .endif
	ret
ShowCB endp



Дата: Авг 21, 2003 02:24:30

А вот зачем было освобождать память при посылке данных в клипорт? В документиции сказано, что система сама освободит память! :(


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064