Walter Meester
HoogkarspelNetherlands
General information
Category:
Windows API functions
Hi davor,
The following example 'll push you into the right direction.
You'll need the DIPAPI32.DLL available from the Mircosoft knowledge base.
(i forgot the number)
RECT=SPACE(16)
SET LIBR TO c:\vfp\FOXTOOLS
DECLARE LONG GetActiveWindow IN User32
DECLARE LONG GetDesktopWindow IN User32
DECLARE INTEGER GetWindowRect IN User32 INTEGER HWND , STRING @RECT_Type
DECLARE LONG GetDC IN User32 LONG HWND
DECLARE LONG CreateCompatibleDC IN Gdi32 LONG hdc AS LONG
DECLARE LONG CreateCompatibleBitmap IN Gdi32 LONG hdc, LONG nWidth, LONG nHeight
DECLARE LONG SelectObject IN Gdi32 LONG hdc, LONG hObject
DECLARE LONG BitBlt IN Gdi32 LONG hDestDC,LONG X, LONG Y, LONG nWidth, LONG nHeight,;
LONG hSrcDC, LONG XSrc, LONG YSrc, LONG dwRop
DECLARE LONG OpenClipboard IN User32 LONG HWND
DECLARE LONG EmptyClipboard IN User32
DECLARE LONG SetClipboardData IN User32 LONG wFormat, LONG HMEM
DECLARE LONG CloseClipboard IN User32
DECLARE LONG ReleaseDC IN User32 LONG HWND, LONG hdc
DECLARE LONG DeleteDC IN Gdi32 LONG hdc
SRCCOPY = 13369376
CF_BITMAP = 2
x=regfn("FindWindow","CC","I")
*z=callfn(x,0,"TVX")
AccessHwnd=callfn(x,0,"TVX")
DeskHwnd=GetdesktopWindow()
=GetWindowRect(AccessHwnd, @RECT)
LEFT= ASC(LEFT(RECT,1))+256*ASC(SUBSTR(RECT,2,1))
TOP=ASC(SUBSTR(RECT,5,1))+256*ASC(SUBSTR(RECT,6,1))
RIGHT=ASC(SUBSTR(RECT,9,1))+256*ASC(SUBSTR(RECT,10,1))
Bottom=ASC(SUBSTR(RECT,13,1))+256*ASC(SUBSTR(RECT,14,1))
LEFT=IIF(LEFT>32000, Left-65536, left)
TOP=IIF(TOP>32000, Top-65536, Top)+4
RIGHT=IIF(RIGHT>32000, Right-65536, Right)
Bottom=IIF(Bottom>32000, Bottom-65536, Bottom)-4
*? left,top,right, bottom
NewWidth=ROUND(3*(Bottom-top)/4,0)
Width=Right-left
IF Width > NewWidth
Left=LEFT+ROUND((width-Newwidth)/2,0)
right=Left+newwidth
ENDIF
hdc = GetDC(DeskHwnd)
hdcMem = CreateCompatibleDC(hdc)
hBitmap = CreateCompatibleBitmap(hdc, right-left, bottom-top)
IF hBitmap # 0
* ' Copy the Desktop bitmap to memory location'
* ' based on Microsoft FoxPro coordinates.'
junk = BitBlt(hdcMem, 0, 0, right-left, bottom-top, hdc, LEFT, TOP, 13369376)
ENDIF
DECLARE INTEGER CopyWindowToDIB IN DIBAPI32.DLL INTEGER x, INTEGER y
DECLARE INTEGER SaveDIB IN DIBAPI32.DLL INTEGER x, STRING y
DECLARE INTEGER ChangeDIBFormat IN DIBAPI32.DLL INTEGER x, DOUBLE x, INTEGER x
DECLARE INTEGER DestroyDIB IN DIBAPI32.DLL INTEGER x
DECLARE INTEGER BitmapToDIB IN DIBAPI32.DLL INTEGER hBitmap, INTEGER hPal
DECLARE INTEGER DeleteObject IN "GDI32" INTEGER hObject
y=BITMAPTODIB(hBitmap,0)
m.cFile="C:\"+SYS(2015)+".BMP"
= SaveDIB(Y,m.cFile)
W=DestroyDIB(y)
junk = DeleteDC(hdcMem)
junk = ReleaseDC(DeskHwnd, hdc)
=DELETEOBJECT(HBitmap)
Previous
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only