|
|
| Посл.отвђт | Сообщен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 |