Скриншот контрола?
Добавлено: 26 Январь 2006, 18:35
Здравствуйте, у меня есть OLE Control и мне нушно поместить его изображение в буфер или сохранить на диск. Как это сделать?
Место общения программистов, форум разработчиков БД на Clarion
https://forum.clarionlife.net/
попал в десятку, пример показывает как по PROP:Handle контрола/окна залить его как картинку в файлAdmin писал(а):Вот пример от Андрея Мялина ...
Все просто как двери
Я сделал так...начать можно так (это все API):
- узнать контекст окна, на котором находится контрол - GetDC(), GetWindowDC()
- создать compatible DC - CreateCompatibleDC
- создать битмап CreateCompatibleBitmap
- выбрать битмап SelectObject(CompatibleDC,CopmatibleBitmap)
- скопировать текущий DC в память BitBlt(текущий DC, ..., compatible DC,...,SRC_COPY)
Код: Выделить всё
OLE_hdc=CreateDC(disp)
OLEComp_hdc=CreateCompatibleDC(OLE_hdc)
GetWindowRect(?OLE1{Prop:Handle},address(Rect)) ! координаты control'а
BitMAP_h=CreateCompatibleBitmap(OLE_hdc, Rect._Right - Rect._Left, Rect._Bottom - Rect._Top)
SelectObject(OLEComp_hdc,BitMAP_h)
BitBlt(OLEComp_hdc,0,0,Rect._Right - Rect._Left,Rect._Bottom - Rect._Top,OLE_hdc,Rect._Left,Rect._Top,SRCCOPY)
OpenClipBoard(Window{prop:handle})
SetClipboardData('CF_BITMAP',BitMAP_h)
CloseClipboard()[
Код: Выделить всё
!эти взял из примера Андрея Мялина
CreateDC(*CSTRING, ULONG=0 , ULONG=0 ,ULONG=0 ),UNSIGNED,PASCAL,RAW,NAME('CreateDCA')
CreateCompatibleDC(UNSIGNED),UNSIGNED,PASCAL
CreateCompatibleBitmap(UNSIGNED, SIGNED, SIGNED),UNSIGNED,PASCAL
SelectObject(UNSIGNED, UNSIGNED),UNSIGNED,PASCAL
BitBlt(UNSIGNED, SIGNED, SIGNED, SIGNED, SIGNED, UNSIGNED, SIGNED, SIGNED, ULONG),BOOL,PASCAL
!эти сам писал, видимо здесь и напортачил....
GetWindowRect(ULONG hWnd,LONG lpRect),BOOL,PASCAL
OpenClipboard(ULONG hWnd),BOOL,PASCAL
SetClipboardData(SIGNED, UNSIGNED),UNSIGNED,PASCAL
CloseClipboard(),BOOL,PASCAL
Очень симпотичный компонент... объясните пожалуйста как его заполучить... я здесь новичокImageEx от http://www.solidsoftware.de все это умеет делать на ура!
Если у Вас нет такого - запрос в приват ...
Я уже видел этот пример, но не сразу разобрался...Вот пример от Андрея Мялина ...
Все просто как двери
Зайти в приват и создать тему с запросом данной бибилотеки. Может быть у кого есть и народ зальет ...Очень симпотичный компонент... объясните пожалуйста как его заполучить... я здесь новичок
Я бы с удовольствием... только, при входе в приват мне пишут: "Извините, только пользователи со специальными правами доступа могут читать сообщения в этом форуме".Admin писал(а): Зайти в приват и создать тему с запросом данной бибилотеки. Может быть у кого есть и народ зальет ...