frmMain.frm
上传用户:szlwled
上传日期:2022-06-30
资源大小:95k
文件大小:17k
源码类别:

视频捕捉/采集

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
  3. Begin VB.MDIForm frmMain 
  4.    BackColor       =   &H8000000C&
  5.    Caption         =   "摄像头监视系统"
  6.    ClientHeight    =   3390
  7.    ClientLeft      =   165
  8.    ClientTop       =   855
  9.    ClientWidth     =   5580
  10.    LinkTopic       =   "MDIForm1"
  11.    StartUpPosition =   3  '窗口缺省
  12.    Begin MSComctlLib.StatusBar sbStatusBar 
  13.       Align           =   2  'Align Bottom
  14.       Height          =   270
  15.       Left            =   0
  16.       TabIndex        =   0
  17.       Top             =   3120
  18.       Width           =   5580
  19.       _ExtentX        =   9843
  20.       _ExtentY        =   476
  21.       _Version        =   393216
  22.       BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} 
  23.          NumPanels       =   3
  24.          BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
  25.             AutoSize        =   1
  26.             Object.Width           =   4180
  27.             Text            =   "状态"
  28.             TextSave        =   "状态"
  29.          EndProperty
  30.          BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
  31.             Style           =   6
  32.             AutoSize        =   2
  33.             TextSave        =   "2009-1-3"
  34.          EndProperty
  35.          BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
  36.             Style           =   5
  37.             AutoSize        =   2
  38.             TextSave        =   "22:08"
  39.          EndProperty
  40.       EndProperty
  41.    End
  42.    Begin MSComctlLib.ImageList imlToolbarIcons 
  43.       Left            =   720
  44.       Top             =   1200
  45.       _ExtentX        =   1005
  46.       _ExtentY        =   1005
  47.       BackColor       =   -2147483643
  48.       ImageWidth      =   32
  49.       ImageHeight     =   32
  50.       MaskColor       =   12632256
  51.       _Version        =   393216
  52.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  53.          NumListImages   =   7
  54.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  55.             Picture         =   "frmMain.frx":0000
  56.             Key             =   "key"
  57.          EndProperty
  58.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  59.             Picture         =   "frmMain.frx":031A
  60.             Key             =   "rec"
  61.          EndProperty
  62.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  63.             Picture         =   "frmMain.frx":2A26
  64.             Key             =   "capt"
  65.          EndProperty
  66.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  67.             Picture         =   "frmMain.frx":5311
  68.             Key             =   "full"
  69.          EndProperty
  70.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  71.             Picture         =   "frmMain.frx":7932
  72.             Key             =   "set"
  73.          EndProperty
  74.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  75.             Picture         =   "frmMain.frx":9FB4
  76.             Key             =   "stop"
  77.          EndProperty
  78.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  79.             Picture         =   "frmMain.frx":C890
  80.             Key             =   "pre"
  81.          EndProperty
  82.       EndProperty
  83.    End
  84.    Begin MSComctlLib.Toolbar tbToolBar 
  85.       Align           =   1  'Align Top
  86.       Height          =   660
  87.       Left            =   0
  88.       TabIndex        =   1
  89.       Top             =   0
  90.       Width           =   5580
  91.       _ExtentX        =   9843
  92.       _ExtentY        =   1164
  93.       ButtonWidth     =   1032
  94.       ButtonHeight    =   1005
  95.       Appearance      =   1
  96.       ImageList       =   "imlToolbarIcons"
  97.       _Version        =   393216
  98.       BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  99.          NumButtons      =   8
  100.          BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  101.             Key             =   "预览"
  102.             Object.ToolTipText     =   "预览视频"
  103.             ImageKey        =   "pre"
  104.             Style           =   1
  105.          EndProperty
  106.          BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  107.             Key             =   "全屏"
  108.             Object.ToolTipText     =   "全屏显示"
  109.             ImageKey        =   "full"
  110.          EndProperty
  111.          BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  112.             Style           =   3
  113.          EndProperty
  114.          BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  115.             Key             =   "录制"
  116.             Object.ToolTipText     =   "录制视频"
  117.             ImageKey        =   "rec"
  118.          EndProperty
  119.          BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  120.             Key             =   "停止"
  121.             Object.ToolTipText     =   "停止录制视频"
  122.             ImageKey        =   "stop"
  123.          EndProperty
  124.          BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  125.             Style           =   3
  126.          EndProperty
  127.          BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  128.             Key             =   "拍照"
  129.             Object.ToolTipText     =   "抓拍单帧视频"
  130.             ImageKey        =   "capt"
  131.          EndProperty
  132.          BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  133.             Key             =   "设置"
  134.             Object.ToolTipText     =   "设置视频格式"
  135.             ImageKey        =   "set"
  136.          EndProperty
  137.       EndProperty
  138.    End
  139.    Begin VB.Menu mnuFile 
  140.       Caption         =   "文件(&F)"
  141.       Begin VB.Menu mnuFileAVI 
  142.          Caption         =   "视频文件(&A)"
  143.       End
  144.       Begin VB.Menu mnuFileBMP 
  145.          Caption         =   "图片文件(&B)"
  146.       End
  147.       Begin VB.Menu mnuBar0 
  148.          Caption         =   "-"
  149.       End
  150.       Begin VB.Menu mnuFileExit 
  151.          Caption         =   "退出(&X)"
  152.          Shortcut        =   ^X
  153.       End
  154.    End
  155.    Begin VB.Menu mnuView 
  156.       Caption         =   "视图(&V)"
  157.       Begin VB.Menu mnuViewToolbar 
  158.          Caption         =   "工具栏(&T)"
  159.          Checked         =   -1  'True
  160.       End
  161.       Begin VB.Menu mnuViewStatusBar 
  162.          Caption         =   "状态栏(&B)"
  163.          Checked         =   -1  'True
  164.       End
  165.    End
  166.    Begin VB.Menu mnuSet 
  167.       Caption         =   "设置(&S)"
  168.       Begin VB.Menu mnuSetVedio 
  169.          Caption         =   "视频格式(&A)"
  170.       End
  171.       Begin VB.Menu mnuSetDisp 
  172.          Caption         =   "视频设置(&S)"
  173.       End
  174.       Begin VB.Menu mnuSetCompress 
  175.          Caption         =   "视频压缩(&Z)"
  176.       End
  177.       Begin VB.Menu mnuSetRate 
  178.          Caption         =   "设置帧率(&F)"
  179.       End
  180.       Begin VB.Menu mnuSetAudio 
  181.          Caption         =   "音频格式(&U)"
  182.       End
  183.       Begin VB.Menu mnuSetSource 
  184.          Caption         =   "选择视频源(&C)"
  185.       End
  186.    End
  187.    Begin VB.Menu mnuPre 
  188.       Caption         =   "预览(&P)"
  189.       Begin VB.Menu mnuPre1 
  190.          Caption         =   "预览(&P)"
  191.          Shortcut        =   {F2}
  192.       End
  193.       Begin VB.Menu mnuPreFull 
  194.          Caption         =   "全屏(&F)"
  195.          Shortcut        =   {F3}
  196.       End
  197.    End
  198.    Begin VB.Menu mnuRec 
  199.       Caption         =   "录制(&R)"
  200.       Begin VB.Menu mnuRecStart 
  201.          Caption         =   "开始录制(&R)"
  202.          Shortcut        =   {F4}
  203.       End
  204.       Begin VB.Menu mnuRecAudio 
  205.          Caption         =   "允许录制声音(&A)"
  206.       End
  207.       Begin VB.Menu mnuRecSec 
  208.          Caption         =   "录制时长(&T)"
  209.       End
  210.       Begin VB.Menu mnuBar2 
  211.          Caption         =   "-"
  212.       End
  213.       Begin VB.Menu mnuRecCapt 
  214.          Caption         =   "拍照(&C)"
  215.          Shortcut        =   {F5}
  216.       End
  217.       Begin VB.Menu mnuBar3 
  218.          Caption         =   "-"
  219.       End
  220.       Begin VB.Menu mnuRecShow 
  221.          Caption         =   "回放录制(&S)"
  222.          Shortcut        =   {F6}
  223.       End
  224.    End
  225.    Begin VB.Menu mnuHelp 
  226.       Caption         =   "帮助(&H)"
  227.       Begin VB.Menu mnuHelpAbout 
  228.          Caption         =   "关于(&A) "
  229.          Shortcut        =   {F1}
  230.       End
  231.    End
  232. End
  233. Attribute VB_Name = "frmMain"
  234. Attribute VB_GlobalNameSpace = False
  235. Attribute VB_Creatable = False
  236. Attribute VB_PredeclaredId = True
  237. Attribute VB_Exposed = False
  238. Private Sub MDIForm_Load()
  239.     Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)   '设置窗体左边坐标
  240.     Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000) '设置窗体顶端坐标
  241.     Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500) '设置窗体宽度
  242.     Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)   '设置窗体高度
  243.     CreateFolder App.Path & "TEMP"    '调过函数创建临时文件夹
  244.     EnableMenu  '调用过程设置各菜单的可用状态
  245.     sngTime = 0 '设置录制时长为0(不限时长)
  246.     strFileBMP = App.Path & "TEMPTMP.BMP" '保存的图片文件名
  247.     strFileAVI = App.Path & "TEMPTMP.AVI"    '保存的视频文件名
  248.     Me.sbStatusBar.Panels(1).Text = "摄像头版本:" & _
  249.         frmCamera.ezVidCap1.GetDriverVersion()  '在状态栏显示摄像头型号
  250.     Load frmCamera  '载入摄像头窗体
  251.     frmCamera.ezVidCap1.TimeLimitEnabled = False    '禁止摄像头控件的录取时间限制
  252.     frmCamera.Hide  '隐藏摄像头窗体
  253.     Load frmVideo   '载入预览窗体
  254.     frmVideo.Show   '显示预览窗体
  255.     mnuPre1.Checked = True  '选中预览菜单
  256.     Me.tbToolBar.Buttons(1).Value = tbrPressed  '设置“预览”按钮为按下状态
  257. End Sub
  258. Private Sub MDIForm_Unload(Cancel As Integer)
  259.     If Me.WindowState <> vbMinimized Then
  260.         SaveSetting App.Title, "Settings", "MainLeft", Me.Left  '保存窗体左边坐标
  261.         SaveSetting App.Title, "Settings", "MainTop", Me.Top    '保存窗体顶端坐标
  262.         SaveSetting App.Title, "Settings", "MainWidth", Me.Width    '保存窗体宽度
  263.         SaveSetting App.Title, "Settings", "MainHeight", Me.Height  '保存窗体高度
  264.     End If
  265.     End '结束应用程序
  266. End Sub
  267. Private Sub mnuFileAVI_Click()  '视频文件
  268.     With frmFile    '设置显示窗体的属性
  269.         .Caption = "设置保存视频的文件名称" '窗体标题
  270.         .Label1.Caption = "视频文件名:"    '标签控件显示的内容
  271.         .strSaveType = "AVI"    '保存类型
  272.         .strFilter = "视频文件(*.avi)|*.avi"    '过滤字符串
  273.         .txtFile.Text = strFileAVI  '文本框的默认值
  274.         .Show vbModal   '显示窗体
  275.     End With
  276. End Sub
  277. Private Sub mnuFileBMP_Click()  '图片文件
  278.     With frmFile   '设置显示窗体的属性
  279.         .Caption = "设置图片的文件开始字符" '窗体标题
  280.         .Label1.Caption = "图片文件名:"  '标签控件显示的内容
  281.         .strSaveType = "BMP"  '保存类型
  282.         .strFilter = "位图文件(*.bmp,*.dib)|*.bmp"   '过滤字符串
  283.         .txtFile.Text = strFileBMP '文本框的默认值
  284.         .Show vbModal  '显示窗体
  285.     End With
  286. End Sub
  287. Private Sub mnuPre1_Click() '预览
  288.     mnuPre1.Checked = Not mnuPre1.Checked   '反选菜单项
  289.     If mnuPre1.Checked Then '若选中菜单
  290.         Me.tbToolBar.Buttons(1).Value = tbrPressed  '设置“预览”按钮为按下状态
  291.         frmVideo.Show   '显示预览窗体
  292.     Else    '若未选中菜单
  293.         Me.tbToolBar.Buttons(1).Value = tbrUnpressed    '设置“预览”按钮为未按下状态
  294.         frmVideo.Hide   '隐藏预览窗体
  295.     End If
  296. End Sub
  297. Private Sub mnuPreFull_Click()  '全屏
  298.     frmFull.Show
  299. End Sub
  300. Private Sub mnuRecAudio_Click() '录制声音
  301.     mnuRecAudio.Checked = Not mnuRecAudio.Checked   '反选项单项
  302.     If mnuRecAudio.Checked Then '若选中了录制声音菜单
  303.         frmCamera.ezVidCap1.CaptureAudio = True '设置控件捕获声音
  304.     Else
  305.         frmCamera.ezVidCap1.CaptureAudio = False    '设置控件不捕获声音
  306.     End If
  307. End Sub
  308. Private Sub mnuRecCapt_Click()  '拍照
  309.     Dim str1 As String, str2 As String, i As Integer
  310.     If frmCamera.ezVidCap1.Capturing Then Exit Sub  '若正在录制状态,则退出
  311.     If Trim(strFileBMP) = "" Then   '若未设置保存图片的文件
  312.         Call mnuFileBMP_Click   '调用设置图片文件名菜单的代码
  313.     End If
  314.     If strFileBMP = "" Then Exit Sub    '若文件名为空,则退出
  315.     str2 = Left(strFileBMP, Len(strFileBMP) - 4) '去掉扩展名
  316.     i = InStr(1, str2, "_") '查找下划线
  317.     If i > 0 Then   '若有下划线
  318.         str2 = Left(str2, InStr(1, str2, "_") - 1)  '获取下划线左侧的字符
  319.     End If
  320.     str1 = Format(Now, "yyyymmddhhmmss")    '生成日期时间序列
  321.     strFileBMP = str2 & "_" & str1 & ".bmp" '生新保存图片文件的名称
  322.     On Error Resume Next    '错误处理
  323.     Call frmCamera.ezVidCap1.SaveDIB(strFileBMP)    '保存图片
  324.     Beep    '响铃提示
  325.     If Err Then '若有错误
  326.         MsgBox Err.Description, vbInformation, App.Title    '显示错误信息
  327.     End If
  328. End Sub
  329. Private Sub mnuRecSec_Click()   '录制时长
  330.     frmTime.Show
  331. End Sub
  332. Private Sub mnuRecShow_Click()
  333.     frmShow.Show
  334. End Sub
  335. Private Sub mnuRecStart_Click() '开始录制
  336.     Dim str1 As String, str2 As String, i As Integer
  337.     If mnuRecStart.Caption = "开始录制" And frmCamera.ezVidCap1.Capturing = False Then    '若菜单为“开始录制”状态
  338.         If Trim(strFileAVI) = "" Then   '若未设置保存视频的文件
  339.             Call mnuFileAVI_Click    '调用设置视频文件名菜单的代码
  340.         End If
  341.         If Trim(strFileAVI) = "" Then Exit Sub    '若文件名为空,则退出
  342.         str2 = Left(strFileAVI, Len(strFileAVI) - 4) '去掉扩展名
  343.         i = InStr(1, str2, "_") '查找下划线
  344.         If i > 0 Then   '若有下划线
  345.             str2 = Left(str2, InStr(1, str2, "_") - 1)  '获取下划线左侧的字符
  346.         End If
  347.         str1 = Format(Now, "yyyymmddhhmmss")    '生成日期时间序列
  348.         strFileAVI = str2 & "_" & str1 & ".AVI" '生新保存视频文件的名称
  349.         mnuRecStart.Caption = "停止录制"    '修改菜单标题
  350.         frmCamera.Show  '显示摄像头控件窗体
  351.         With frmVideo
  352.             .timer1.Enabled = False '禁止时钟控件
  353.             .Hide   '隐藏预览窗体
  354.         End With
  355.         With frmCamera.ezVidCap1    '设置摄像头控件属性
  356.             .CaptureFile = strFileAVI   '捕获视频文件名
  357.             .Preview = True '打开预览
  358.             .PreviewRate = 15   '预览速率
  359.             .CaptureVideo   '开始录制视频
  360.         End With
  361.     Else    '若菜单为“停止录制”状态
  362.         mnuRecStart.Caption = "开始录制"    '修改菜单标题
  363.         frmCamera.ezVidCap1.CaptureEnd  '结束录制
  364.         frmCamera.Hide  '隐藏摄像头窗体
  365.         With frmVideo
  366.             .Show   '显示预览窗体
  367.             .timer1.Enabled = True  '允许时钟控件
  368.         End With
  369.     End If
  370. End Sub
  371. Private Sub mnuSetAudio_Click() '音频格式
  372.     frmCamera.ezVidCap1.ShowDlgAudioFormat    '显示声音格式对话框
  373. End Sub
  374. Private Sub mnuSetCompress_Click()
  375.     frmCamera.ezVidCap1.ShowDlgCompressionOptions '显示“视频压缩”对话框
  376. End Sub
  377. Private Sub mnuSetDisp_Click()
  378.     frmCamera.ezVidCap1.ShowDlgVideoDisplay   '显示视频设置对话框
  379. End Sub
  380. Private Sub mnuSetRate_Click()  '设置帧率
  381.     frmCaptureRate.Show '显示设置帧率的窗体
  382. End Sub
  383. Private Sub mnuSetSource_Click()    '选择视频源
  384.     frmCamera.ezVidCap1.ShowDlgVideoSource
  385. End Sub
  386. Private Sub mnuSetVedio_Click() '视频格式
  387.     frmCamera.ezVidCap1.ShowDlgVideoFormat  '显示视频格式对话框
  388.     If mnuPre1.Checked Then '若选中了预览菜单
  389.         Unload frmVideo '卸载预览窗体
  390.         frmVideo.Show   '显示预览窗体
  391.         mnuPre1.Checked = True  '选中预览菜单
  392.         Me.tbToolBar.Buttons(1).Value = tbrPressed  '按下“预览”按钮
  393.     End If
  394. End Sub
  395. Private Sub tbToolBar_ButtonClick(ByVal Button As MSComCtlLib.Button)   '处理工具按钮
  396.     On Error Resume Next
  397.     Select Case Button.Key
  398.         Case "预览"
  399.             Call mnuPre1_Click  '调用预览菜单的单击事件代码
  400.         Case "全屏"
  401.             Call mnuPreFull_Click   '调用全屏菜单的单击事件代码
  402.         Case "录制"
  403.             Call mnuRecStart_Click  '调用录制菜单的单击事件代码
  404.         Case "停止"
  405.             Call mnuRecStart_Click  '调用录制菜单的单击事件代码
  406.         Case "拍照"
  407.             Call mnuRecCapt_Click   '调用拍照菜单的单击事件代码
  408.         Case "设置"
  409.             Call mnuSetVedio_Click  '调用视频格式菜单的单击事件代码
  410.     End Select
  411. End Sub
  412. Private Sub mnuHelpAbout_Click()    '关于
  413.     frmAbout.Show vbModal, Me   '显示关于窗体
  414. End Sub
  415. Private Sub mnuViewStatusBar_Click()    '状态栏
  416.     mnuViewStatusBar.Checked = Not mnuViewStatusBar.Checked '反选状态栏菜单项
  417.     sbStatusBar.Visible = mnuViewStatusBar.Checked  '设置状态栏的显示状态
  418. End Sub
  419. Private Sub mnuViewToolbar_Click()  '工具栏
  420.     mnuViewToolbar.Checked = Not mnuViewToolbar.Checked '反选工具栏菜单项
  421.     tbToolBar.Visible = mnuViewToolbar.Checked  '设置工具栏的显示状态
  422. End Sub
  423. Private Sub mnuFileExit_Click() '退出
  424.     Unload Me    '卸载窗体
  425. End Sub
  426. Private Sub EnableMenu() '检查菜单可用状态
  427.     mnuSetAudio.Enabled = False '禁止音频设置菜单项
  428.     mnuSetVedio.Enabled = False    '禁止视频格式菜单项
  429.     mnuSetDisp.Enabled = False  '禁止视频设置菜单项
  430.     mnuSetSource.Enabled = False    '禁止选择视频源菜单项
  431.     mnuSetCompress.Enabled = False  '禁止视频压缩菜单项
  432.     With frmCamera.ezVidCap1    '设置摄像头控件属性
  433.         .Preview = True '打开预览
  434.         .PreviewRate = 15   '设置预览速率
  435.         If .NumCapDevs > 0 Then '若摄像头速度大于0
  436.             mnuSetCompress.Enabled = True   '允许视频压缩菜单项
  437.         End If
  438.         If .HasAudio Then mnuSetAudio.Enabled = True    '允许音频设置菜单项
  439.         If .HasDlgFormat Then mnuSetVedio.Enabled = True    '允许视频格式菜单项
  440.         If .HasDlgDisplay Then mnuSetDisp.Enabled = True    '允许视频设置菜单项
  441.         If .HasDlgSource Then mnuSetSource.Enabled = True   '允许选择视频源菜单项
  442.     End With
  443. End Sub