![]() |
#2
sam_jiang2021-10-27 22:33
|

loformset=CREATEOBJECT("oformset")
loformset.frmmain.show()
loformset.frmctrl.show()
**************************************************
*-- Formset: formset (d:\documents\visual foxpro 项目\usecamera.scx)
*-- ParentClass: formset
*-- BaseClass: formset
*-- Time Stamp: 10/27/21 03:01:04 PM
*
DEFINE CLASS oformset AS formset
DataSession = 1
AutoRelease = .T.
Name = "Formset"
ADD OBJECT ofrmmain AS frmmain WITH ;
DoCreate = .T., ;
AutoCenter = .T., ;
Caption = "frmmain", ;
Name = "frmmain"
ADD OBJECT frmctrl AS form WITH ;
Top = 0, ;
Left = 0, ;
Height = 480, ;
Width = 680, ;
DoCreate = .T., ;
Caption = "viewindow", ;
Name = "frmctrl"
PROCEDURE frmctrl.activate
READ EVENTS
ENDPROC
ENDDEFINE
DEFINE class frmmain as form
ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
Caption = "摄像头控制实例", ;
Height = 16, ;
Left = 10, ;
Top = 10, ;
Width = 86, ;
Name = "Label1"
ADD OBJECT line1 AS line WITH ;
Height = 0, ;
Left = 10, ;
Top = 30, ;
Width = 351, ;
Name = "Line1"
ADD OBJECT line2 AS line WITH ;
Height = 0, ;
Left = 11, ;
Top = 31, ;
Width = 351, ;
BorderColor = RGB(255,255,255), ;
Name = "Line2"
ADD OBJECT cmdcloseview AS commandbutton WITH ;
AutoSize = .T., ;
Top = 40, ;
Left = 10, ;
Height = 25, ;
Width = 66, ;
Caption = "closeview", ;
Enabled = .F., ;
Name = "cmdcloseview"
ADD OBJECT cmdsave AS commandbutton WITH ;
Top = 70, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "save", ;
Enabled = .F., ;
Name = "cmdsave"
ADD OBJECT cmdrec AS commandbutton WITH ;
Top = 100, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "record", ;
Enabled = .F., ;
Name = "cmdrec"
ADD OBJECT cmdstp AS commandbutton WITH ;
Top = 130, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "stop", ;
Enabled = .F., ;
Name = "cmdstp"
ADD OBJECT cmdview AS commandbutton WITH ;
Top = 160, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "View", ;
Name = "cmdview"
ADD OBJECT cmdquit AS commandbutton WITH ;
Top = 190, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "quit", ;
Name = "cmdquit"
PROCEDURE Load
*--定义:一般放到主程序或表单(集)的Load事件中
Public WM_CAP_DRIVER_DISCONNECT
Public hwndc,WM_CAP_SAVEDIB,WM_CAP_FILE_SET_CAPTURE_FILEA,WM_CAP_SEQUENCE,WM_CAP_STOP
Declare Integer capCreateCaptureWindowA In "AVICAP32.DLL" String lpszWindowName ,Integer dwStyle ,;
Integer x, Integer Y, Integer nWidth ,Integer nHeight,Integer ParentWin,Integer nId
Declare Integer SendMessage In "user32" Integer HWnd, Integer wmsg,Integer wpar1, Integer wpar2
Declare Integer SendMessage In "user32" As SendMessageA Integer HWnd, Integer wmsg,Integer wpar1, String wpar2
ENDPROC
PROCEDURE Unload
thisformset.Release
CLEAR EVENTS
ENDPROC
PROCEDURE cmdcloseview.Click
SendMessage(hWndC,WM_CAP_DRIVER_DISCONNECT, 0, 0)
hWndC=0
thisform.cmdview.Enabled=.t.
ENDPROC
PROCEDURE cmdsave.Click
*--保存图像:
*--无法控制生成的文件尺寸,因为是由摄像头本身默认的,不过可用Image控件显示时进行等比缩小的。
ss=Getfile("bmp;Jpg")
If !Empty(ss)
SendMessageA(hWndC,WM_CAP_SAVEDIB,0,SS)
Endif
ENDPROC
PROCEDURE cmdrec.Click
*--录像:
ss = Getfile("avi")
If !Empty(ss)
This.Enabled=.F.
Thisform.MousePointer= 0
Thisform.cmdstp.Enabled=.T.
thisform.cmdstp.setfocus
SendMessageA(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0,ss)
SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0)
ENDIF
ENDPROC
PROCEDURE cmdstp.Click
*--停止录像:
SendMessage(hWndC, WM_CAP_STOP, 0, 0)
Thisform.cmdrec.Enabled=.T.
This.Enabled=.F.
ENDPROC
PROCEDURE cmdview.Click
WM_USER = 1024
WM_CAP_START = WM_USER
_CAP_STOP = WM_CAP_START + 68
WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11
WM_CAP_SAVEDIB = WM_CAP_START + 25
WM_CAP_GRAB_FRAME = WM_CAP_START + 60
WM_CAP_SEQUENCE = WM_CAP_START + 62
WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20
WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63
WM_CAP_SET_OVERLAY =WM_CAP_START+ 51
WM_CAP_SET_PREVIEW =WM_CAP_START+ 50
WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6
WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2
WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3
WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5
WM_CAP_SET_SCALE=WM_CAP_START+ 53
WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52
hWndC = capCreateCaptureWindowA('My Own Capture Window',0x50000000,0,0,640,480,thisformset.frmctrl.HWnd ,0) &&1342177280=0x50000000
If hWndC <> 0
SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0)
SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0)
SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0)
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)
SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0)
SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0)
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0)
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0)
* THISFORM.ACTIVATE
ENDIF
this.Enabled=.f.
thisform.setall("enabled",.t.,"commandbutton")
ENDPROC
PROCEDURE cmdquit.Click
thisform.Release
ENDPROC
ENDDEFINE
*
*-- EndDefine: formset
**************************************************
loformset.frmmain.show()
loformset.frmctrl.show()
**************************************************
*-- Formset: formset (d:\documents\visual foxpro 项目\usecamera.scx)
*-- ParentClass: formset
*-- BaseClass: formset
*-- Time Stamp: 10/27/21 03:01:04 PM
*
DEFINE CLASS oformset AS formset
DataSession = 1
AutoRelease = .T.
Name = "Formset"
ADD OBJECT ofrmmain AS frmmain WITH ;
DoCreate = .T., ;
AutoCenter = .T., ;
Caption = "frmmain", ;
Name = "frmmain"
ADD OBJECT frmctrl AS form WITH ;
Top = 0, ;
Left = 0, ;
Height = 480, ;
Width = 680, ;
DoCreate = .T., ;
Caption = "viewindow", ;
Name = "frmctrl"
PROCEDURE frmctrl.activate
READ EVENTS
ENDPROC
ENDDEFINE
DEFINE class frmmain as form
ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
Caption = "摄像头控制实例", ;
Height = 16, ;
Left = 10, ;
Top = 10, ;
Width = 86, ;
Name = "Label1"
ADD OBJECT line1 AS line WITH ;
Height = 0, ;
Left = 10, ;
Top = 30, ;
Width = 351, ;
Name = "Line1"
ADD OBJECT line2 AS line WITH ;
Height = 0, ;
Left = 11, ;
Top = 31, ;
Width = 351, ;
BorderColor = RGB(255,255,255), ;
Name = "Line2"
ADD OBJECT cmdcloseview AS commandbutton WITH ;
AutoSize = .T., ;
Top = 40, ;
Left = 10, ;
Height = 25, ;
Width = 66, ;
Caption = "closeview", ;
Enabled = .F., ;
Name = "cmdcloseview"
ADD OBJECT cmdsave AS commandbutton WITH ;
Top = 70, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "save", ;
Enabled = .F., ;
Name = "cmdsave"
ADD OBJECT cmdrec AS commandbutton WITH ;
Top = 100, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "record", ;
Enabled = .F., ;
Name = "cmdrec"
ADD OBJECT cmdstp AS commandbutton WITH ;
Top = 130, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "stop", ;
Enabled = .F., ;
Name = "cmdstp"
ADD OBJECT cmdview AS commandbutton WITH ;
Top = 160, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "View", ;
Name = "cmdview"
ADD OBJECT cmdquit AS commandbutton WITH ;
Top = 190, ;
Left = 10, ;
Height = 25, ;
Width = 60, ;
Caption = "quit", ;
Name = "cmdquit"
PROCEDURE Load
*--定义:一般放到主程序或表单(集)的Load事件中
Public WM_CAP_DRIVER_DISCONNECT
Public hwndc,WM_CAP_SAVEDIB,WM_CAP_FILE_SET_CAPTURE_FILEA,WM_CAP_SEQUENCE,WM_CAP_STOP
Declare Integer capCreateCaptureWindowA In "AVICAP32.DLL" String lpszWindowName ,Integer dwStyle ,;
Integer x, Integer Y, Integer nWidth ,Integer nHeight,Integer ParentWin,Integer nId
Declare Integer SendMessage In "user32" Integer HWnd, Integer wmsg,Integer wpar1, Integer wpar2
Declare Integer SendMessage In "user32" As SendMessageA Integer HWnd, Integer wmsg,Integer wpar1, String wpar2
ENDPROC
PROCEDURE Unload
thisformset.Release
CLEAR EVENTS
ENDPROC
PROCEDURE cmdcloseview.Click
SendMessage(hWndC,WM_CAP_DRIVER_DISCONNECT, 0, 0)
hWndC=0
thisform.cmdview.Enabled=.t.
ENDPROC
PROCEDURE cmdsave.Click
*--保存图像:
*--无法控制生成的文件尺寸,因为是由摄像头本身默认的,不过可用Image控件显示时进行等比缩小的。
ss=Getfile("bmp;Jpg")
If !Empty(ss)
SendMessageA(hWndC,WM_CAP_SAVEDIB,0,SS)
Endif
ENDPROC
PROCEDURE cmdrec.Click
*--录像:
ss = Getfile("avi")
If !Empty(ss)
This.Enabled=.F.
Thisform.MousePointer= 0
Thisform.cmdstp.Enabled=.T.
thisform.cmdstp.setfocus
SendMessageA(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0,ss)
SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0)
ENDIF
ENDPROC
PROCEDURE cmdstp.Click
*--停止录像:
SendMessage(hWndC, WM_CAP_STOP, 0, 0)
Thisform.cmdrec.Enabled=.T.
This.Enabled=.F.
ENDPROC
PROCEDURE cmdview.Click
WM_USER = 1024
WM_CAP_START = WM_USER
_CAP_STOP = WM_CAP_START + 68
WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11
WM_CAP_SAVEDIB = WM_CAP_START + 25
WM_CAP_GRAB_FRAME = WM_CAP_START + 60
WM_CAP_SEQUENCE = WM_CAP_START + 62
WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20
WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63
WM_CAP_SET_OVERLAY =WM_CAP_START+ 51
WM_CAP_SET_PREVIEW =WM_CAP_START+ 50
WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6
WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2
WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3
WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5
WM_CAP_SET_SCALE=WM_CAP_START+ 53
WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52
hWndC = capCreateCaptureWindowA('My Own Capture Window',0x50000000,0,0,640,480,thisformset.frmctrl.HWnd ,0) &&1342177280=0x50000000
If hWndC <> 0
SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0)
SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0)
SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0)
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)
SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0)
SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0)
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0)
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0)
* THISFORM.ACTIVATE
ENDIF
this.Enabled=.f.
thisform.setall("enabled",.t.,"commandbutton")
ENDPROC
PROCEDURE cmdquit.Click
thisform.Release
ENDPROC
ENDDEFINE
*
*-- EndDefine: formset
**************************************************
只有本站会员才能查看附件,请 登录