Man-wai Chang wrote:
Is there a VFP function that does it? Win32API needed?
Here's what I use. It creates a snapshot of the entire screen and saves
it as "error.emf" which is a bit-map format that compresses extremely well.
Mike
========================
PROCEDURE screensnap
DECLARE INTEGER GetFocus IN user32
DECLARE INTEGER ReleaseDC IN user32 INTEGER, INTEGER
DECLARE INTEGER GetWindowRect IN user32 INTEGER, STRING @
DECLARE INTEGER GetDeviceCaps IN gdi32 INTEGER, INTEGER
DECLARE INTEGER CloseEnhMetaFile IN gdi32 INTEGER
DECLARE INTEGER DeleteEnhMetaFile IN gdi32 INTEGER
DECLARE INTEGER GetWindowDC IN user32 INTEGER
DECLARE INTEGER CreateEnhMetaFile IN gdi32 INTEGER, STRING, STRING @,
STRING
DECLARE INTEGER BitBlt IN gdi32 INTEGER, INTEGER, INTEGER, INTEGER,
INTEGER, INTEGER, INTEGER, INTEGER, INTEGER
hwndsrc= &main..HWND
hdcsrc = getwindowdc(hwndsrc)
hsize = getdevicecaps(hdcsrc, 4)*100
vsize = getdevicecaps(hdcsrc, 6)*100
hres = getdevicecaps(hdcsrc, 8)
vres = getdevicecaps(hdcsrc, 10)
rcsrc = REPLICATE(CHR(0), 16)
= getwindowrect(hwndsrc, @rcsrc)
nleftsrc = buf2dword(SUBSTR(rcsrc, 1, 4))
ntopsrc = buf2dword(SUBSTR(rcsrc, 5, 4))
nrightsrc = buf2dword(SUBSTR(rcsrc, 9, 4))
nbotsrc = buf2dword(SUBSTR(rcsrc, 13, 4))
nrightsrc = nrightsrc-nleftsrc
nbotsrc = nbotsrc-ntopsrc
STORE 0 TO nleftsrc, ntopsrc
nmetaleft = (nleftsrc*hsize)/hres
nmetatop = (ntopsrc*vsize)/vres
nmetaright = (nrightsrc*hsize)/hres
nmetabot = (nbotsrc*vsize)/vres
rcmeta =
num2dword(nmetaleft)+num2dword(nmetatop)+num2dword(nmetaright)+num2dword(nmetabot)
hmetadc = createenhmetafile(hdcsrc, "error.emf", @rcmeta, .NULL.)
= bitblt(hmetadc, 0, 0, nrightsrc, nbotsrc, hdcsrc, 0, 0, 13369376)
hmetafile = closeenhmetafile(hmetadc)
= deleteenhmetafile(hmetafile)
= releasedc(hwndsrc, hdcsrc)
ENDPROC
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message:
http://leafe.com/archives/byMID/profox/[email protected]
** All postings, unless explicitly stated otherwise, are the opinions of the
author, and do not constitute legal or medical advice. This statement is added
to the messages for those lawyers who are too stupid to see the obvious.