GETBMP function
Purpose: Captures portion of screen to a bmp and stores it in an HDC.
Syntax: hDCBmp = GETBMP(LeftSrc%, TopSrc%, WidthSrc%, HeightSrc%, hWnd) Parameters:
|
SAVEBMP function
Purpose: Saves a bmp, stored in an HDC or accessible through a HBITMAP, to a file. Use the GETBMP function to store a bitmap in a HDC.
Syntax: SAVEBMP(hDCBmp, FileName$) Parameters:
|
Example: Note the use of ONENTRY and ONEXIT metafunctions.
' ****************************************************************
' GetBmp SaveBmp Demo by Robert Wishlaw 2002/05/28
' ****************************************************************
' Paste this example into an editor and save as GetSaveBmp.bas
' BC GetSaveBmp will translate, compile and run the program
' ****************************************************************
$COMPILER
"$PELLES$\Bin\pocc -W1 -Gd -Go -Ze -Zx -Tx86-coff $FILE$.c"
$LINKER
"$PELLES$\Bin\polink -release _ -machine:ix86 _ -subsystem:windows _ -OUT:$FILE$.exe _ $FILE$.obj"
$ONEXIT
"GetSaveBmp"
GUI
"GetBmp-SaveBmp"
DIM
Form1AS
CONTROLDIM
Button3AS
CONTROLDIM
Button4AS
CONTROLDIM
Button5AS
CONTROLDIM
Rich1AS
CONTROLDIM
Stat1AS
CONTROLDIM
Buffer$DIM
RectAS
RECTDIM
HDCBmpAS
HDCDIM
hwndAS
HANDLEDIM
retvalDIM
str1$CONST
RunEx(
lpFile, lpParameters, nShowCmd)
=
_ ShellExecute(
0
,"open"
, lpFile, lpParameters,0
, nShowCmd)
SUB
FORMLOADCALL
LoadBuffer1(
)
'******************************************************************
Form1=
BCX_FORM
(
"GetBmp SaveBmp"
,0
,0
,200
,110
)
Button3=
BCX_BUTTON
(
"Capture Client"
,Form1,101
,5
,10
,50
,15
)
Button4=
BCX_BUTTON
(
"Capture Portion"
,Form1,102
,55
,10
,50
,15
)
Button5=
BCX_BUTTON
(
"Capture Screen"
,Form1,103
,105
,10
,50
,15
)
Rich1=
BCX_RICHEDIT
(
Buffer$ ,Form1,104
,5
,30
,190
,60
)
Stat1=
BCX_STATUS
(
"Ready"
,Form1)
'*******************************************************************
SendMessage(
Rich1,EM_SETBKGNDCOLOR,0
,0x00f3f3f3
)
' Set background color
CENTER
(
Form1)
' Center it!
SHOW
(
Form1)
' Show it!
END
SUB
BEGIN
EVENTS
SELECT
CASE
CBMSG
'**********************
CASE
WM_COMMAND'**********************
IF
CBCTL
=
101
THEN
' Capture Client area of a window
GetClientRect(
Rich1,&
Rect)
HDCBmp=
GETBMP
(
Rect.left, Rect.top, _ Rect.right-
Rect.left, _ Rect.bottom-
Rect.top, _ Rich1)
SAVEBMP
(
HDCBmp,"richedit.bmp"
)
'IMPORTANT ! Release device context resources back to system.
retval=
DeleteDC(
HDCBmp)
str1$=
"richedit.bmp"
RunEx(
str1$,""
,1
)
' Start default paint app
END
IF
IF
CBCTL
=
102
THEN
'Capture User defined area of a window
HDCBmp=
GETBMP
(
10
,58
,360
,54
, Rich1)
SAVEBMP
(
HDCBmp,"richedit.bmp"
)
'IMPORTANT ! Release device context resources back to system.
retval=
DeleteDC(
HDCBmp)
str1$=
"richedit.bmp"
RunEx(
str1$,""
,1
)
' Start default paint app
END
IF
IF
CBCTL
=
103
THEN
' Capture screen. NULL is HDC for screen
hwnd=
GetDesktopWindow(
)
HDCBmp=
GETBMP
(
0
,0
,300
,200
, hwnd)
SAVEBMP
(
HDCBmp,"richedit.bmp"
)
'IMPORTANT ! Release device context resources back to system.
retval=
DeleteDC(
HDCBmp)
str1$=
"richedit.bmp"
RunEx(
str1$,""
,1
)
' Start default paint app
END
IF
EXIT
FUNCTION
'**********************
CASE
WM_CLOSE'**********************
IF
MSGBOX
(
"Are you sure?"
,"Quit Program!"
, MB_YESNO)
=
IDYESTHEN
DestroyWindow(
Form1)
END
IF
EXIT
FUNCTION
END
SELECT
END
EVENTS
SUB
LoadBuffer1(
)
Buffer$=
""
Buffer$=
Buffer$&
"{\rtf1\ansi\ansicpg1252\deff0\deflang1033"
Buffer$=
Buffer$&
"{\fonttbl"
Buffer$=
Buffer$&
"{\f0\froman Times New Roman;}"
Buffer$=
Buffer$&
"{\f1\fmodern Lucida Console;}"
Buffer$=
Buffer$&
"{\f2\fswiss Arial;}"
Buffer$=
Buffer$&
"}"
Buffer$=
Buffer$&
"{\colortbl ;"
Buffer$=
Buffer$&
"\red192\green000\blue000;"
Buffer$=
Buffer$&
"\red000\green000\blue160;"
Buffer$=
Buffer$&
"\red255\green255\blue255;"
Buffer$=
Buffer$&
"}\qc"
Buffer$=
Buffer$&
"\f0\fs72\cf1\b\i BCX \i0\b0\par"
Buffer$=
Buffer$&
"\f0\fs64\cf2 GetBmp SaveBmp"
Buffer$=
Buffer$&
"}"
END
SUB