精华内容
下载资源
问答
  • 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...
  • 所以界面程序需要全屏/自由大小 在这里我先做一个可接受大小的窗体 这样就可以安排布局了 改个名字显得更专业一点 VB里面承载绘图的控件主要有窗体和picturebox 它们两个可以用line函数画直线/方块,Circle...

    (本文适合VB初学者)

    打开VB——新建标准EXE项目

     

     

     

    完成这些最基本的之后点确定

    我是打算写一个双人五子棋软件

    所以界面程序需要全屏/自由大小

    在这里我先做一个可接受大小的窗体

    这样就可以安排布局了

    改个名字显得更专业一点

    VB里面承载绘图的控件主要有窗体和picturebox

    它们两个可以用line函数画直线/方块,Circle函数画圆

    对于一个五子棋软件已经够用了

    而我们一般不选用窗体作为画板是因为窗体会被其它控件遮挡,且灵活性低。

    所以这里最佳用作棋盘的控件是picturebox

    这里我们修改一下棋盘的大小成正方形,顺便修改一下棋盘控件的名字

    在我所想的双人五子棋软件中,要实现非死控制形式的黑白棋落子交替,因此需要实现一个类似棋盒的需求,程序通过判断上次触碰的棋盒颜色来判断落子颜色


    简单来说就是需要两个棋盒

    棋盒需要有哪些功能呢?
    1、要有能力让使用者区分黑白两类棋子
    2、要可以接受点击事件
    3、要可以改变位置

    能实现这些功能的控件蛮多的,例如按钮控件(commandButton)、picturebox、label、text……

    这里我们选取picturebox,因为这个控件可以加载图片

    也就说我们可以从网上下载棋盒的图片并用它表现出来

    同理,它也可以表现棋盘的图片

    但是这里我们就都暂时不找了

    为了开发速度

    但是我们如果有需求,就可以立马鸟枪换炮。这就是编程中一个很重要的远见意识

    可以看到,我将其命名为了棋盒

    但是细心的同学可能发现

    棋盒后面为啥多了个"(0)"?

    这是因为这两个棋盒本质上是一类东西

    也就意味着它们很多方法是共通的
    那不如干脆把它们当成一个控件的两个分身来看待

    index属性是将控件当做一个数组来看待

    很多同学可能还不知道数组是啥

    VB里面数组的声明是:
    dim a(10)

    使用数组前必须申明,否则会编译错误

    dim a(10)
    这样定义之后
    相当于同时定义了如下变量:
    a(0)
    a(1)
    ...
    a(10)

    双击棋盒控件,在代码编辑界面可看到棋盒的点击事件后面包含了一个叫index的参数

    棋盒的鼠标移动事件也包含index参数

    index参数是啥?
    聪明的同学应该联想到了什么……没错,它就是控件Index属性的数字,及该控件在数组中的编号

    也就是说,我可以写一个事件的处理方法,就可以处理所有具有相同性质的控件操作

    而区分这些控件的关键就是index参数

    这里,黑棋盒Index=0,白棋盒index=1.这是因为数组默认从0起算

    界面弄得差不多了,接下来就是逻辑部分了

    五子棋五子棋,肯定要有棋盘才能下棋对吧

    所以第一件事就是绘制一个棋盘出来

    那我们什么时候需要绘制棋盘呢?

    下一局棋的时候就需要对吧

    所以程序一打开就应当有一个绘制好的棋盘了

    因此我们在程序启动事件内写绘制棋盘的代码逻辑

    双击窗体空白处

    我们将获得程序的窗体创建事件

    这个事件内写的代码将在窗体加载时执行

    绘制棋盘,我能想到的算法如下:
    1、直线与直线相交
    2、一个个方块相叠
    3、用图片

    这里我们选取算法1,因为最简单,只需要画15+15根线就可以绘制好五子棋棋盘了

    而方块需要绘制15*15个

    图片的话网上没有合适的(我反正是信了)

    在画画之前还有一个重要工作,就是建立直角坐标系

    为啥不建立(0,0)-(14,14)这刚好15+15根线啊

    因为上下左右各空一点出来可以使棋盘更美观的同时,有地方后面让程序显示棋盘的坐标

    坐标系建立了接下来就要画线了

    这里我们使用for结构来构建15+15线的绘制

    这样我们需要的棋盘应该就会在程序运行时画好了

    F5运行程序,咦为什么图像没有出现呢?

    (运行前我已经把棋盘背景色修改成屎黄色了)

    这是因为autoredraw属性为false的缘故

    所有带有绘制函数的控件基本上都带有这个属性

    它的作用简单来说就是保持绘制内容,不让它消失。

    所以这里我们要设置成true

    再次运行程序

    嗯,一个棋盘就画好了

    是不是很简单- -

    接下来就是完成落子的功能了

    棋子有哪些属性?颜色、大小、位置

    颜色无非黑白,大小肯定是比一格略小,就直径0.8吧

    位置的话肯定是由鼠标点击的棋盘位置来确定的

    click事件只能感知是否点击控件而无法告诉我们点击位置

    因此我们放弃它,而选用mousedown(鼠标点击)事件

    接下来我们就在我们点击的位置生成一颗黑棋好了

    运行程序点击棋盘任意位置

    获得了一个空心黑圆

    那如何画出一个实心圆呢?别急,控件有专门的属性来控制

    再画个圆就ok了

    回到我们的需求

    根据我们选择的棋盒颜色来判断落子的颜色对吧

    所以我们要用一个变量来储存我们现在到底是选择的哪个棋盒

    还记得棋盒的本质区别吗?

    index属性!

    首先,我们申明一个窗体级变量来存颜色。颜色的本质聪明的同学通过rgb函数的本质应该想到是数值了

    可以看到,棋盒的click事件我也准备好了,万事具备只差东风:触发点击棋盒事件时将被点击的棋盒的标识记忆下来

    记忆下来之后,我们只需要在落子前做一个棋盒判断选择相应落子色的逻辑,就可以实现我们根据点击的棋盒来确定落子颜色的需求了

    这里有一点比较妙的是

    我们把棋盒的颜色设置成了黑白两色,那我们可以直接用我们记下的棋盒标识直接把棋盒的颜色取给落子呀!

    这样就不要做判断逻辑了!

    我先写一个用判断逻辑来做的实现:

    效果如下:

    第二种逻辑:

    可以看到,语句更简洁高效

    而且本质上根据棋盒颜色决定棋子颜色的性质也更适合扩展:例如粉色的棋盒就可以下出粉色的棋子

    第二种逻辑的表现也是满足需求的

    现在我们的软件已经满足了可以展现一场对局的棋子布局了

    那我要悔棋怎么办啊?

    那我要再开一局怎么办啊?

    我要棋子落得更整齐应该怎么办啊?

    我想让程序告诉我哪方胜利该怎么办啊?

    我想双方交换棋盒颜色该怎么办啊?

    且看下回分解

     

     

     

     

     

    展开全文
  • 内容索引:VB源码,系统相关,托盘 VB程序最小化到系统托盘处并显示图标,一些核心的代码定义这里首要说明下:  cbSize As Long 该数据结构的大小  hwnd As Long 处理任务栏中图标的窗口句柄  uID As Long 定义的...
  • 内容索引:VB源码,字符处理,全角,点阵 VB编写完成一个汉字、全角字符点阵提取程序,附上源代码,仅供研究参考。程序有效地利用一个API函数Shell_NotifyIcon和NOTIFYICONDATA数据结构就能达到这一目的,这个程序运行...
  • 切换新选项,以禁用还原项目层次结构状态和工具窗口状态。 常规调试 在调试时搜索Watch、Autos和Locals窗口中的关键字,以提高查找对象或值的能力。 在检查数据时,在Watch、Autos和Locals窗口中...

    如约而至,微软已于今天推出 Visual Studio 2019 正式版,一同发布的还有 Visual Studio 2019 for Mac。
      Visual Studio 2019 下载地址:https://visualstudio.microsoft.com/downloads/
      Visual Studio 2019 for Mac 下载地址:https://visualstudio.microsoft.com/zh-hans/vs/mac/

    1、Visual Studio 2019

    正如官方宣称的“Code faster. Work smarter. Create the future”那样,Visual Studio 2019 引入了很多新功能和改进以实现这一目标。 VS 2019 新的启动窗口
    如上图所示,新版本的改进包括简化克隆 Git repo 的操作步骤、打开项目或解决方案、打开本地文件夹或创建新项目。

    此外在模板功能方面也有所改进,开发者可使用新列出的按受欢迎度排序的模板新建改进了搜索体验和筛选器的项目,还可基于标签进行搜索,轻松访问"最近使用的项目模板"列表。

    除了在启动项目时的改进,Visual Studio 2019 也为开发者在编写代码时提供了不少新功能。例如代码导航、重构功能的改进、文档运行状况指示器以及一键代码清除功能以应用多个重构规则。

    尤其值得一提的是 Live Share 功能,Visual Studio Live Share 是一项开发者服务,可让开发者与团队成员共享代码库及其上下文,并直接从 Visual Studio 内获得即时双向协作。利用 Live Share 功能,团队成员可以无缝且安全地读取、导航、编辑和调试已与他们共享的项目。Visual Studio 2019 中已默认安装此服务,并支持 C++ 和 Python 这两门呼声甚高的编程语言。   Live Share 运行截图
     Live Share 支持在 Visual Studio 2019 和 Visual Studio Code 中使用。  左侧是 Visual Studio 2019,右侧是 Visual Studio Code

    有关详细信息,请参见博客文章 Visual Studio Live Share for real-time code reviews and interactive education(用于实时代码评审和交互式教育的 Visual Studio Live Share)。

    下面的Visual Studio 2019中的一些新功能:

    IDE

    • 集成了Visual Studio Live Share实时与其他人协作功能,并默认安装开启。支持C++、VB.NET和Razor等附加语言,为客户提供了解决方案视图和源控件差异共享。

    • 打开你最近处理过的代码,或者通过新的启动窗口,比如克隆、打开或新建项目等最常用的流程之一开始。

    • 按受欢迎程度排序使用新模板列表,创建具有改进的搜索体验和过滤器的新项目。

    • 通过Shell中的一系列新视觉变化,为你的代码提供更多垂直空间,并提供现代化的外观和感觉。

    • 无论你的显示器配置和/或扩展如何,都可以查看更清晰的IDE版本,微软表示已经改进支持对每个监视器的感知。

    • 在Visual Studio中使用改进的搜索功能来处理菜单、命令、选项和可安装组件。

    • 使用文档指示器快速了解代码文件的“运行状况”。通过指标中的一键式代码清理运行和配置。

    • 使用“选项”对话框中的新“预览功能”页面,轻松管理你选择的预览功能。

    • 默认情况下,MSBuild和Visual Studio现在以.NET Framework 4.7.2为目标构建。

    性能

    • 通过使用Visual Studio的新性能改进,来控制解决方案的负载,这些改进会影响步进速度,分支切换速度等。

    • 请参阅任务状态中心中的解决方案加载进度。

    • 选择打开解决方案过滤器文件,看加载哪些项目。

    • 通过限制辅助组件影响来提高你的输入性能。

    • 切换新选项,以禁用还原项目层次结构状态和工具窗口状态。

    常规调试

    • 在调试时搜索Watch、Autos和Locals窗口中的关键字,以提高查找对象或值的能力。

    • 在检查数据时,在Watch、Autos和Locals窗口中查看格式说明符的下拉列表。

    • 使用自定义可视化工具,现在与.NET Core兼容。

    • 使用大量模块和PDB调试大型应用程序。

    源控制和Team管理器

    • 暂时存储更改,以便你可以使用Team explorer对支持Git存储的Git工具来处理其他任务。

    • 查看Visual Studio Market Place上的可选扩展,即Visual Studio的Pull Requests,已将Pull Request评论集成到Visual Studio中。

    • 使用专注于开发人员工作流的新Azure DevOps工作项体验,包括用户特定的工作项视图,从工作项创建分支,使用#mentions搜索工作项以及内联编辑。

    编程语言

    • 使用Visual Studio IntelliCode编写C++和XAML代码时可以节省时间,Visual Studio IntelliCode是可选扩展,为你的代码提供AI辅助编码建议。

    • 了解已合并的F#语言和工具开源贡献。这些更改已添加到现有的F#功能集中。

    • 使用Python Add Environment对话框轻松添加Python虚拟环境和conda环境。

    Web技术

    使用Xamarin进行移动开发

    • 体验Xamarin.Android初始和增量构建性能的改进。

    • 利用Xamarin Android Designer提高工作效率。

    • 查看Xamarin.Forms控件的新属性面板。

    • 通过缩短Xamarin的工作负载大小并改进Android模拟器来提高性能。

    • 将Intellicode与Xamarin.Forms XAML一起使用。

    通用Windows平台(UWP)

    • 在微软添加的支持的帮助下,将IntelliCode扩展到与XAML配合使用。

    2、Visual Studio 2019 for Mac

    该版本最值得关注的更新莫过于引入了新的 C# 编辑器、新的启动窗口、支持启动多个实例、支持 Unity 调试器。
    ▲Visual Studio 2019 for Mac 新的启动窗口

    • 下面是Visual Studio 2019 for Mac版本中包含的新功能。
    • 此版本包含Visual Studio for Mac的下一代文本编辑器的预览。
    • 此版本引入了新的入门体验。
    • 微软已经添加了对运行IDE的多个实例的支持。
    • 微软添加了一种新方法来设置多个启动项目,从而可以更轻松地创建解决方案Run Configuration,它将在调试时启动多个项目。
    • Visual Studio for Mac现在可以检测到Azure Functions模板的更新可用,并将为你提供升级它们的对话框。
    • 微软用Windows上的相同核心Unity调试器替换了Mac上的Unity调试器。
    • 微软已经添加了对Git和Azure DevOps / Team Foundation Server的Microsoft帐户身份验证的支持。
    • Visual Studio for Mac 8.0 Preview与Visual Studio 7.7并行支持。由于Mono和Xamarin SDK在两个版本的Visual Studio for Mac之间共享,为了获得最佳体验,微软建议你至少使用Mono 5.18版本。可供选择项,则为Xamarin.iOS 12.2.1,Xamarin.Android 9.1.0和Xamarin.Mac 5.2.1。

    3、Visual Studio 2019 使用 Live Share

    Live Share 使用它可以进行更好的协作开发。主要功能:

     Live Share 功能

    3.1、Visual Studio Code 注意事项

    Live Share 可以在 Visual Studio 2019 和 Visual Studio Code 上使用。
      在 Visual Studio Code 中使用需要安装扩展:

    在 Visual Studio Code 中使用需要安装扩展

    安装完成以后在此处进行会话管理:

    进行会话管理

    3.2、如何使用

    1.创建和加入会话

    (1)Visual Studio 2019

    Visual Studio 2019 可以直接点击右上角的 Live Share 来创建会话,创建完成会自动将会话链接(其他人通过链接加入)复制到剪贴板。
    创建和加入会话
      也可以通过 File -> Start Live Share Session 创建会话

    Visual Studio 2019 通过 File -> Join Live Share Session 来加入会话

    (2)Visual Studio Code
    打开 Live Share 界面。通过 “开始协作会话” 来创建会话,通过 “Join collaboration session” 来加入会话

    通过 "Join collaboration session" 来加入会话

    2.Visual Studio 2019 和 Visual Studio Code 协作演示

    本演示使用 Visual Studio 2019 来创建会话,Visual Studio Code 加入会话。

    1. 使用 Visual Studio 2019 创建项目
      使用 Visual Studio 2019 创建项目

    2. 点击右上角 ”Live Share“ 创建会话
      点击右上角 ”Live Share“ 创建会话

    创建完成会提示你,邀请链接已复制到剪贴板
    创建完成提示

    1. 打开 Visual Studio Code 输入会话链接
      打开 Visual Studio Code 输入会话链接

    2. 连接成功后测试一下编辑代码
      连接成功后测试一下编辑代码

    新建文件:
    新建文件

    还有调试、IISExpress等都会共享,更多功能大家去探索吧。

    4、相关链接##

    Visual Studio 2019 下载地址:https://visualstudio.microsoft.com/downloads/

    Visual Studio 2019 for Mac 下载地址:https://visualstudio.microsoft.com/zh-hans/vs/mac/

    Visual Studio 2019 .NET productivity

    Visual Studio 2019 for Mac is now available

    Visual Studio 实时共享

    什么是Visual Studio Live Share?

    展开全文
  • 1、面向对象的程序设计语言 2、事件驱动的编程机制 3、可视化的集成开发环境 4、强大的数据库访问功能 5、网络功能 6、联机帮助功能 1.1.2 Visual Basic 版本介绍 1、学习版 (Express Edition)...

    第1章 基本概念

    1.1 Visual Basic 简介

    1.1.1 Visual Basic 的特点

    1、面向对象的程序设计语言

    2、事件驱动的编程机制

    3、可视化的集成开发环境

    4、强大的数据库访问功能

    5、网络功能

    6、联机帮助功能

    1.1.2 Visual Basic 版本介绍

    1、学习版 (Express Edition)

    2、专业版 (Professional Edition)

    3、企业版 (Enterprise Edition)

    1.2 Visual Basic 集成开发环境

    1.2.1 窗口介绍

    1、主窗口

    2、工具箱窗口

    3、窗体设计窗口

    4、工程资源管理器窗口

    5、属性窗口

    6、代码窗口

    7、窗体布局窗口

    8、对象浏览器窗口

    1.2.2 工作模式

    1、设计模式

    2、运行模式

    3、中断模式

    1.3 窗体和基本控件

    1.3.1 窗体(Form)

    1、主要属性

        (1) Name
        (2) Caption、Font
        (3) Enable
        (4) Visual
        (5) Top、Left
        (6) Heigh、Width
        (7) BackColor、ForeColor
    

    2、主要事件

        (1) Click、DblClick
        (2) Activate、Load、UnLoad
    

    3、主要方法

        (1) Print、Cls
        (2) Show、Hide
        (3) Move
    

    1.3.2 标签(Label)

    1、基本属性

    2、其它属性

        (1) Alignment
        (2) Autosize
        (3) BackStyle
    

    3、常用事件

         Click、DblClick
    

    4、常用方法

         Move
    

    1.3.3 命令按钮(Command)

    1、基本属性

    2、其它属性

        (1) Default、Cancel
        (2) Picture
        (3) Value
        (4) Style
    

    3、常用事件

         Click
    

    4、常用方法

        (1) Move
        (2) SetFocus
    

    1.3.4 文本框(TestBox)

    1、基本属性

    2、其它属性

        (1) Text
        (2) MultiLine、ScrollBars
        (3) PassWordChar
        (4) Locked
    

    3、常用事件

        (1) Change
        (2) KeyPress
        (3) GotFocus、LostFocus
    

    4、常用方法

         SetFocus
    
    展开全文
  • 程序是“ 实现USB摄像头视频图像的监控,截图,录像 ”的改进。可实现对摄像头视频的监控,截图,录像,可以分别保存为图片文件和视频(压缩)文件。保存的视频文件可以用媒体播放机(Windows媒体播放器),暴风...
    本程序是“ 
    实现USB摄像头视频图像的监控,截图,录像
     ”的改进。可实现对摄像头视频的监控,截图,录像,可以分别保存为图片文件和视频(压缩)文件。保存的视频文件可以用媒体播放机(Windows媒体播放器),暴风影音等软件进行播放,轻松实现家庭录像制作。
    
       利用电脑配备的USB摄像头进行视频控制,要用到两个API函数:capCreateCaptureWindow和SendMessage函数其中,capCreateCaptureWindow的作用是创建一个视频窗口,摄像头捕捉到的视频图像在此窗口内显示,函数返回值就是代表此窗口的句柄。视频窗口创建后,剩下的事情就是用SendMessage函数向该窗口发送各种消息,实现对摄像头的控制。
    【转】VB程序VB代码:摄像头视频图像的监控,截图,录像(改进)  

      本程序特点主要有:
      1,实现对摄像头视频图像的监控,截图,视频录像并保存为磁盘文件
      。2.可控制多个视频摄像头例如,如果一台电脑配置了两个摄像头,启动本程序两次,单击按钮“源”,在弹出的“视频源”对话框中选择不同的捕获源,两个窗口就能同时显示不同摄像头获得的图像如下图所示
    【转】VB程序VB代码:摄像头视频图像的监控,截图,录像(改进)  

      3,在“视频源”对话框中,还可以设置视频的亮度,对比度等许多参数:
    【转】VB程序VB代码:摄像头视频图像的监控,截图,录像(改进)  

      4.录像时,如果采用默认的AVI文件格式,得到的视频文件会很大单击按钮“压”,在弹出的“视频压缩”对话框中选择压缩方式的“MPEG-4”,这样得到的视频文件会比默认方式小10倍以上。
    【转】VB程序VB代码:摄像头视频图像的监控,截图,录像(改进)  


      5.本程序的视频窗口有自动大小和全屏功能。在全屏状态时,工具栏会自动隐藏。将鼠标移动到屏幕顶部,工具栏又会自动显示出来。

       遗憾的是,由于水平有限,本程序无法判断是否使用了压缩记录方式,压缩后的文件其扩展名仍然是AVI 。当然,这并不影响播放,录像完成后也可以手动将扩展名修改为英里。其次,录像状态下改变视频窗口大小,有时会出现莫名其妙的错误。这个错误时有时无,毫无规律,因此本程序不得不关闭了录像状态下视频窗口自动大小的功能

    “”以下是窗体   Form1中的完整代码,在VB6和WindowsXP的下调试通过:
    “在窗体放置4个控件:
    '         COMMAND1:在属性窗口将索引属性设置为0 
    '         检查1:     在属性窗口将索引属性设置为0,将样式属性设置为1 
    '         图片1:不必设置任何属性
    '         定时器1:     不必设置任何属性
    '程序调试时要注意:终止程序要用运行中的Form1的窗口关闭。不要使用VB主窗口的菜单命令或VB工具栏上的关闭按钮,这样无法关闭打开的视频窗口,导致VB无响应。如果VB无响应,只有用系统任务管理器才能终止VB进程,调试过程中所做的修改将丢失。
    “本人原创,转载请注明来源: http://hi.baidu.com/100bd/blog/item/525292c3a37f210d0ff47724 的.html
    公共ctCapWin长,ctRec由于布尔,ctDir作为字符串,周大福作为字符串,ctAutoSize作为布尔
    点心ctRefresh为布尔,ctConnect为布尔,ctAutoHide为布尔,IsFillScreen由于布尔

    私人声明函数GetCursorPos库“USER32”(LPPOINT作为POINTAPI),只要
    私人类型POINTAPI 
              ×如龙: Ÿ只要
    结束类型
    私人声明函数SetWindowPos库“USER32”(BYVAL HWND长,BYVAL hWndInsertAfter长,BYVAL×如龙,BYVALÿ长,BYVAL CX长,BYVAL CY长,BYVAL wFlags长)作为龙
    常量HWND_TOP = 0                 'hWndInsertAfter参数:Z序列的顶部
    常量HWND_TOPMOST = -1         '最前
    常量HWND_NOTOPMOST = -2     '不在最前
    常量HWND_Bottom = 1             '位于底层
    常量SWP_NOSIZE =&H1           'wFlags参数
    常量SWP_NOMOVE = H2 
    常量SWP_NOZORDER = H4 
    常量SWP_NOACTIVATE =&H10 
    常量SWP_SHOWWINDOW =&H40 
    常量SWP_HIDEWINDOW =&H80 

    私人声明函数SendMessage函数库“USER32”别名“SendMessageA”(BYVAL HWND长,BYVAL WMSG长,BYVAL的wParam长,lParam中任何的),只要
    私人声明函数SendMessageLong库“USER32”别名“SendMessageA”(BYVAL HWND长,BYVAL WMSG长,BYVAL的wParam长,lParam的长),只要
    私人声明函数PostMessage的库“USER32”别名“PostMessageA”(BYVAL HWND长,BYVAL WMSG长,BYVAL的wParam长,BYVAL lParam的长),只要
    常量WM_CLOSE =&H10 

    私人声明函数capGetDriverDescriptionA  库“avicap32.dll”(BYVAL wDriver整数,BYVAL lpszName作为字符串,BYVAL cbName长,BYVAL lpszVer作为字符串, BYVAL cbVer长)为布尔
    私人声明函数库capCreateCaptureWindow“avicap32.dll”别名“capCreateCaptureWindowW”(BYVAL lpszWindowName作为字符串,BYVAL dwStyle长,BYVAL×如龙,BYVALÿ长,BYVAL nWidth长,BYVAL nHeight参数作为龙BYVAL hwndParent长,BYVAL的NID长),只要
    常量WS_CHILD =&H40000000 
    常量WS_VISIBLE =&H10000000 
    常量WS_CAPTION = HC00000 
    常量WS_THICKFRAME =&H40000 

    常量GET_Frame = 1084 

    常量WM_USER =&H400                 '用户消息开始号,偏移地址:1024 
    CONST WM_CAP_GET_CAPSTREAMPTR = WM_USER + 1                  
    常量WM_CAP_SET_CALLBACK_ERROR = WM_USER + 2               '当出错回调函数
    常量WM_CAP_SET_CALLBACK_STATUS = WM_USER + 3             '当状态(状态)改变的时回调函数
    常量WM_CAP_SET_CALLBACK_YIELD = WM_USER + 4               '在流捕获期间的回调函数
    常量WM_CAP_SET_CALLBACK_FRAME = WM_USER + 5               '帧预览回调函数
    常量WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_USER + 6'在流捕获期间,当一个新的视频缓存区可用的时候就调用它
    常量WM_CAP_SET_CALLBACK_WAVESTREAM = WM_USER + 7     “在流捕获期间,当一个新的音频缓存区可用的时候就调用它

    常量WM_CAP_GET_USER_DATA = WM_USER + 8'获取:数据关联到一个捕捉窗口
    常量WM_CAP_SET_USER_DATA = WM_USER + 9'设置:数据关联到一个捕捉窗口

    常量WM_CAP_DLG_VideoFormat = WM_USER + 41             '对话框:视频格式
    常量WM_CAP_DLG_VideoSource = WM_USER + 42             '对话框:视频源,枚举视频源,控制颜色,对比度,饱和度的改变需视频驱动程序支技
    常量WM_CAP_DLG_VideoDisplay = WM_USER + 43           “对话框:视频显示控制视频捕捉过程中视频在显示器上的显示对捕捉数据无影响,但会影响数了信号表达式。
    常量WM_CAP_DLG_VideoCompression = WM_USER + 46'对话框:视频压缩

    私人枚举enWinSet 
    '     en_Copy = -1 
          es_Show = 0 
          es_Hide 
          es_Close 
          es_Move 
          es_Size 
    结束枚举

    “捕捉文件和缓存
    常量WM_Cap_File_Set_File = WM_USER + 20”设置当前的捕捉文件
    常量WM_Cap_File_Get_File = WM_USER + 21'得到当前的捕捉文件
    常量WM_CAP_FILE_ALLOCATE = WM_USER + 22“为捕捉文件预分配空间,从而可以减少被漏掉的帧
    常量WM_CAP_FILE_SaveAs = WM_USER + 23“将捕捉文件保存为另一个用户指定的文件。这个消息不会改变捕捉文件的名字和内容
                                                                                    ”由于捕捉文件保留它最初的文件名,因此必须指定个新的文件的文件名来保存
    常量WM_CAP_FILE_SET_INFOCHUNK = WM_USER + 24'可以把信息块例如文本或者自定义数据插入AVI文件。同样用这个消息也可以清除AVI文件中的信息块
    常量WM_CAP_FILE_SaveDIB = WM_USER + 25'把从帧缓存中复制出图像存为设备无关位图书馆(DIB),应用程序也可以使用这两个单帧捕捉消息来编辑帧序列
                                                                                      '或者创建一个慢速摄影序列

    常量WM_CAP_Edit_Copy = WM_USER + 30' 1054:把缓存中图像复制到剪贴板中

    常量WM_CAP_SET_AUDIOFORMAT = WM_USER + 35“。设置音频格式设置时传入一个WAVEFORMAT,WAVEFORMATEX,或PCMWAVEOFMAT结构的指针
    常量WM_CAP_GET_AUDIOFORMAT = WM_USER + 36'来得到音频数据的格式和该格式结构体的大小。默认的捕捉音频格式是单声道,8位和11KHZ PCM 

    常量WM_CAP_Get_VideoFormat = WM_USER + 44'给捕捉窗口来得到视频格式的结构和该结构的大小
    常量WM_CAP_SET_VideoFormat = WM_USER + 45'用来设置视频格式

    常量WM_CAP_SET_PreView = WM_USER + 50“发送给捕捉窗口来使预览模式有效或者失效
    常量WM_CAP_SET_Overlay = WM_USER + 51”使窗口处于叠加模式。使叠加模式有效也会自动地使预览模式失效
    常量WM_CAP_SET_PreViewRate = WM_USER + 52“发送给捕捉窗口来设置在预览模式下帧的显示频率
    常量WM_CAP_SET_Scale = WM_USER + 53”来使预览模式的缩放有效或者无效

    常量WM_CAP_SET_SCROLL = WM_USER + 55'如果是在预览模式或者叠加模式,还可以通过本消息发送给窗口,
                                                                                  “在窗口里的用户区域设置视频帧的滚动条的位置
    专用类型BITMAPINFOHEADER”tagBitMapInfoHeader结构
              biSize只要                
              biWidth只要
              biHeight只要             “LONG DWORD 
              双翼飞机作为整数       'WORD 
              biBitCount作为整数
              biCompression只要
              biSizeImage只要
              biXPelsPerMeter只要
              biYPelsPerMeter只要
              biClrUsed只要
              biClrImportant只要
    结束类型
    专用类型BITMAPINFO 
            bmiHeader由于BITMAPINFOHEADER“ 
            bmiColors为字节       'RGBQUAD 
    结束类型


    '基本视频捕获消息--------- ----------------------------- 
    常量WM_CAP_Connect = WM_USER + 10         '连接一个视频驱动,成功返回真(1)。连接驱动后,不一定就能显示视频,还要保证摄像头硬件连接良好,未被其他程序使用。
    常量WM_CAP_DisConnect = WM_USER + 11'断开视频窗口与驱动的连接


    “       的wParam:视频设备序号,从0到9 
    常量WM_CAP_Sequence = WM_USER + 62“开始录像
    常量WM_CAP_Stop = WM_USER + 68           '终止视频捕获
    常量WM_CAP_Abort = WM_USER + 69         '暂停录像捕获?,成功返回真
    常量WM_CAP_Set_Sequence_Setup = WM_USER + 64 
    常量WM_CAP_Get_Sequence_Setup = WM_USER + 65 

    ”录像参数设置和获取
    “暗淡nParms作为CaptureParms 
    'SendMessage函数ctCapWin,WM_CAP_Get_Sequence_Setup,莱恩(nParms),nParms'获取参数的设置
    'nParms.fAbortLeftMouse =假'关闭:单击鼠标停止录像的功能
    ”SendMessage函数ctCapWin,WM_CAP_Set_Sequence_Setup,莱恩(nParms) ,nParms“重新设置参数
    专用类型CaptureParms” 
            dwRequestMicroSecPerFram  Ë只要     “DWORD 
            fMakeUserHitOKToCapture由于布尔”开始录像时,是否显示确认对话框,默认为假
            wPercentDropForError只要“每毫秒捕捉帧率,默认66667,即每秒15帧
            fYield由于布尔                         “布尔:如果为真,将产生一个后台线程来进行视频捕捉
            dwIndexSize只要                     ”DWORD:视频文件最大的索引入口数
            wChunkGranularity只要         'UINT:以字节为单位表示AVI文件的大小
            fUsingDOSMemory由于布尔       'BOOL:未使用
            wNumVideoRequested只要       'UINT:分配视频缓冲区的最大数量
            fCaptureAudio布尔           “是否捕获音频流,默认值由具体的硬件设置
            wNumAudioRequested只要       ”分配的音频缓冲区的最大数量
            vKeyAbort作为龙                         “结束录像的按键,默认为VK_ESCAPE(ESC键)
            fAbortLeftMouse由于布尔       ”单击鼠标左键停止录像,默认为真
            fAbortRightMouse由于布尔     “单击鼠标右键停止录像,默认为假
            fLimitEnabled由于布尔           '是否开启捕获时间限制,默认为真
            wTimeLimit只要                       '捕获时间限制(秒),fLimitEnabled为真时有效
            fMCIControl由于布尔               'BOOL:为TRUE,控制MCI(媒体设备接口)兼容的视频源
            fStepMCIDevice由于布尔         'BOOL 
            dwMCIStartTime只要               “DWORD:以毫秒为单位标识MCI设备视频捕捉序列的起始位置,如果fMCIControl成员为FALSE,该成员被忽略
            dwMCIStopTime只要                 ”DWORD:以毫秒为单位标识MCI设备视频捕捉序列的停止位置,如果fMCIControl成员为FALSE,该成员被忽略
            fStepCaptureAt2x由于布尔     'BOOL:为TRUE,捕捉的视频帧使用两个分辨率
            wStepCaptureAverageFrame  一样久“:在捕捉时每帧图像使用的时间大小
            dwAudioBufferSize只要           ”音频缓冲大小,默认0 
            fDisableWriteCache由于布尔'的Win32系统未使用
            AVStreamMaster只要                 “确定在写入AVI文件时,音频流是否控制时钟
    端类型

    ”视频窗口消息----------------- --------------------- 
    “私人声明函数capGetDriverDescriptionA  库”avicap32.dll“(_ 
    'BYVAL wDriver整数,BYVAL lpszName作为字符串,BYVAL cbName长, BYVAL lpszVer作为字符串,BYVAL cbVer长)为布尔
          '可利用此API获取所有驱动程序名称和版本信息例子
    “       点心一样久
    ”       昏暗lpszName作为字符串* 128 
    '       昏暗lpszVer作为字符串* 128 

    '      
    “             如果不capGetDriverDescriptionA  (S,lpszName,128,lpszVer,128),然后退出做'获得驱动程序名称和版本信息
    ”             S = S + 1 
    “       循环
    常量WM_CAP_Get_Status = WM_USER + 54'获取捕捉窗口的当前状态
    专用类型CapStatus “■■?
            uiImageWidth只要                         ”图像宽度,像素
            uiImageHeight只要                       “图像高度,像素
            fLiveWindow由于布尔                     ”视频显示是否使用预览
            fOverlayWindow由于布尔               “视频显示是否使用硬件
            FSCALE由于布尔                               ”图像是否随窗口大小自动缩放
            ptScroll由于POINTAPI                         'POINT?
            fUsingDefaultPalette由于布尔'是否使用默认调色板
            fAudioHardware由于布尔               “是否安装了音频波形硬件
            fCapFileExists由于布尔               '是否生成了正确的捕获文件
            dwCurrentVideoFrame只要
            dwCurrentVideoFramesDrop  PED只要
            dwCurrentWaveSamples只要
            dwCurrentTimeElapsedMS只要       ”视频流已录像时间(毫秒)
            hPalCurrent只要                             'HPALETTE当前调色板句柄
            fCapturingNow由于布尔                   “是否正在进行捕获
            dwReturn只要                                   '错误返回值,根据这个数值可以调用一个错误回调函数
            wNumVideoAllocated只要               ”视频缓冲
            wNumAudioAllocated只要               “音频缓冲
    结束类型

    私人小组CloseMouse()
        昏暗nParms作为CaptureParms 
        SendMessage函数ctCapWin,WM_CAP_Get_Sequence_Setup,莱恩(nParms),nParms     '获取参数的设置
        'nParms.fMakeUserHitOKToCapture = TRUE'开始录像时,是否显示确认对话框
        nParms。 fYield = TRUE'用一个后台线程来进行视频捕捉
        nParms.fAbortLeftMouse =假     '关闭:单击鼠标左键停止录像的功能。
        nParms.fAbortRightMouse =假'关闭:单击鼠标右键停止录像的功能
        SendMessage函数ctCapWin,WM_CAP_Set_Sequence_Setup ,LEN(nParms),nParms“重新设置参数
         
    'FF = SendMessageLong(ctCapWin,WM_CAP_SET_CALLBACK_STATUS,0,AddressOf CallBackStatus)”状态回调函数
    'FF = SendMessageLong(ctCapWin,WM_CAP_SET_CALLBACK_FRAME,0,AddressOf MyFrameCallback)“帧回调函数
    'FF = SendMessageLong(ctCapWin,WM_CAP_SET_CALLBACK_YIELD,0,AddressOf CallbackYield)
    结束小组

    私人小组NoRecord()
          SendMessage函数ctCapWin,WM_CAP_Stop,0,0'停止录像
          ctRec =假:调用SetCaption(“”)
    结束小组

    私人小组startRecord用于()
          昏暗f,按字符串,NDIR作为字符串,nF的作为字符串

            '如果路径不存在,用默认文件名C:\ CAPTURE.AVI 
            NDIR =修剪(ctDir)
            如果NDIR =“”或者NDIR =“<>”或NDIR =“<默认>”然后NDIR = App.Path&“\影片” 
            如果右(NDIR,1)<>“”那NDIR NDIR =&“” 
            如果不MakePath(NDIR)然后
                  MSGBOX“在指定的位置无法建立目录:”&vbCrLf& n路径,vbInformation,“保存视频文件” 
                  退出小组
            结束如果
           
            NF =修剪(CTF)
            若NF =“”或者NF =“<>”或NF =“<默认>”那么NF =格式(现在,“年月日- HHMMSS “)&”.AVI“ 
            如果INSTR(NF,”“)= 0,那么NF = nF的&”.AVI“ 
            F = NDIR与nF的
               如果CheckDirFile(F)= 1,则
                 如果vbNo = MSGBOX(”文件已存在,覆盖此文件吗?“&vbCrLf&F,vbInformation + vbYesNo,”开始录像“),然后退出小组
                 对错误转到挫
                 SETATTR楼0 
                 杀˚F 
                 对错误转到0 
          结束如果
           
            ctRec =假
            SetWin ctCapWin,es_Size,,,, 1 
            ctRec =真
            呼叫SetCaption(“正在录像:”&NF)
            呼叫KjEnabled(真)
           
            的DoEvents 
            呼叫CloseMouse 
            SendMessage函数ctCapWin,WM_Cap_File_Set_File,0,BYVAL F'设置录像保存的文件
            PostMessage的ctCapWin,WM_CAP_Sequence,0,0                        '开始录像
            。如果ctAutoHide然后Me.Visible =假
          退出小组
    挫:
          MSGBOX“无法写文件:”&vbvrlf&vbCrLf&F,vbInformation,“录像-错误” 
    结束子
    “”一篇文章放不下全部代码,这是仅是第一页,转到: 第二页  '本人原创,转载请注明来源:http://hi.baidu.com/100bd/blog/item/525292c3a37f210d0ff47724 的.htmlnF的如果CheckDirFile(F)= 1,则如果vbNo = MSGBOX(“文件已存在,覆盖此文件吗?”&vbCrLf&F,vbInformation + vbYesNo,“开始录像”),然后退出小组对错误转到挫SETATTR楼0 杀˚F 对错误转到0 结束如果ctRec =假SetWin ctCapWin,es_Size,,,,1 ctRec =真呼叫SetCaption(“正在录像:”&NF)呼叫KjEnabled(真)的DoEvents 呼叫CloseMouse SendMessage函数ctCapWin,WM_Cap_File_Set_File,0,BYVAL F'设置录像保存的文件PostMessage的ctCapWin,WM_CAP_Sequence,0,0 '开始录像如果ctAutoHide然后Me.Visible =假退出小组挫:MSGBOX“无法写文件:”&vbvrlf&vbCrLf&F,vbInformation,“录像-错误“ 结束子”“一篇文章放不下全部代码,这是仅是第一页,转到:第二页 '本人原创,转载请注明来源:http://hi.baidu.com/100bd/blog /项目/ 525292c3a37f210d0ff47724 的.htmlnF的如果CheckDirFile(F)= 1,则如果vbNo = MSGBOX(“文件已存在,覆盖此文件吗?”&vbCrLf&F,vbInformation + vbYesNo,“开始录像”),然后退出小组对错误转到挫SETATTR楼0 杀˚F 对错误转到0 结束如果ctRec =假SetWin ctCapWin,es_Size,,,,1 ctRec =真呼叫SetCaption(“正在录像:”&NF)呼叫KjEnabled(真)的DoEvents 呼叫CloseMouse SendMessage函数ctCapWin,WM_Cap_File_Set_File,0,BYVAL F'设置录像保存的文件PostMessage的ctCapWin,WM_CAP_Sequence,0,0  '开始录像如果ctAutoHide然后Me.Visible =假退出小组挫:MSGBOX“无法写文件:”&vbvrlf&vbCrLf&F,vbInformation,“录像-错误“ 结束子”“一篇文章放不下全部代码,这是仅是第一页,转到:第二页 '本人原创,转载请注明来源: http://hi.baidu.com/100bd/blog /项目/ 525292c3a37f210d0ff47724 的.html

    第二页

    ''一篇文章放不下全部代码,这仅是第二页,转到:第一页

      本程序是“ 实现USB摄像头视频图像的监控,截图,录像 ”的改进。可实现对摄像头视频的监控,截图,录像,可以分别保存为图片文件和视频(压缩)文件。保存的视频文件可以用媒体播放机(Windows媒体播放器),暴风影音等软件进行播放,轻松实现家庭录像制作。

    【转】VB程序VB代码:摄像头视频图像的监控,截图,录像(改进)

     

    【转】VB程序VB代码:摄像头视频图像的监控,截图,录像(改进)

     

    【转】VB程序VB代码:摄像头视频图像的监控,截图,录像(改进)


    ''一篇文章放不下全部代码,这仅是第二页,转到:第一页

    私人小组SetDir()
        昏暗的NSTR作为字符串
        如果修剪(ctDir)=“”然后ctDir = App.Path&“\视频”'如果路径不存在,用默认文件名C:\ CAPTURE.AVI 
        NSTR =“设置录像保存的文件夹“&vbCrLf&”输入“<>”表示使用默认文件夹:“&vbCrLf&App.Path&”\影片“ 
        NSTR =修剪(输入框(NSTR,”录像保存的文件夹“,ctDir) )
        如果NSTR =“”然后退出小组
        ctDir = NSTR 
        如果ctDir =“<>”或ctDir =“<默认>”然后ctDir =“” 
    结束小组

    私人小组SetFile()
        昏暗的NSTR作为字符串,nF的作为字符串
        
        NF =字符串(255,“”)
        SendMessage函数ctCapWin,WM_Cap_File_Get_File,莱恩(NF),BYVAL nF的
        NF = GetStrLeft(NF,vbNullChar)
       
        如果修剪(CTF)=“”然后CTF =“<默认>”'如果路径不存在,用默认文件名C:\ CAPTURE.AVI 
        NSTR =“设置录像保存的文件名(不带路径)。”&vbCrLf&“输入”<>“表示使用默认文件名:日期-时间扩展名” 
        NSTR =修剪(输入框(NSTR,“录像保存的文件名”,CTF))
        如果NSTR =“”然后退出小组
        CTF = NSTR 
        如果CTF =“<>”或CTF =“<默认>”然后CTF =“” 
        
        SendMessage函数ctCapWin,WM_Cap_File_Set_File ,0,BYVAL周大福
    端子

    专用功能GetStrLeft(NSTR作为字符串,富作为字符串)作为字符串
       '去掉富及后面的字符
       昏暗一样久
       S = INSTR(NSTR,富)
       若S> 0,则GetStrLeft =左(NSTR ,S - 1)否则GetStrLeft = NSTR 
    端功能

    专用功能CheckDirFile(nDirFile)只要
       '检查目录或文件夹,返回值:0不存在,1是文件,2是目录
       昏暗NSTR作为字符串,ND为布尔
       NSTR =迪尔(nDirFile,23)
       如果NSTR =“”然后退出功能
       ND = GETATTR(nDirFile)和16 
       如果ND然后CheckDirFile = 2否则CheckDirFile = 1 
    结束函数

    私人小组的Form_Load()
        昏暗W¯¯长,H只要
        呼叫SetCaption( “”)
      
        Me.ScaleMode = 3:Picture1.ScaleMode = 3 
        Picture1.BorderStyle = 0 
        设置的Command(0)= .Container图片1 
        组检查1(0)= .Container图片1 

        呼叫ReadSaveSet“读取用户设置
        ”装载数组控件
        AddKj COMMAND1 “连”,“连接”,“连接摄像头” 
        AddKj COMMAND1,“断”,“断开”,“断开与摄像头的连接” 
        AddKj COMMAND1,“ - ” 
        AddKj COMMAND1,“源”,“VideoSource”,“选择:视频源“ 
        AddKj COMMAND1,”格“,”VideoFormat“,”设置:视频格式,分辨率“ 
        AddKj COMMAND1,”显“,”的VideoDisplay“,”视频显示对话框某些显卡不支持此功能。 “ 
        AddKj COMMAND1,” - “ 
        。AddKj COMMAND1,”夹“,”SetDir“,”设置录像文件保存的文件夹默认为主程序所在目录下的“视频”文件夹“ 
        AddKj COMMAND1,”文“,”SetFile “,”录像保存的文件名,默认为:时间-编号扩展名“。
        AddKj COMMAND1,”压“,”VideoCompression“,”设置:视频录像文件的压缩方式“ 
        AddKj COMMAND1,” - “ 
        AddKj COMMAND1,”录“,”记录“,”开始录像“ 
        AddKj COMMAND1,”停“,”NoRecord“,”停止录像“ 
        AddKj COMMAND1,”图“,”CopyImg“,”将当前图像复制到剪贴板“ 
        AddKj COMMAND1” - “ 
        AddKj COMMAND1,”全“,”FillScreen“,”切换:全屏/窗口“ 
        AddKj COMMAND1,”关“,”退出“,”关闭:退出程序“ 
        
        如果ctAutoSize那么W = 1否则W = 0 
        AddKj(检查1 “自”,“自动调整大小”,“视频窗口是否随主窗口自动改变大小”).value的= W 
        如果ctAutoHide则W = 1否则W = 0 
        AddKj(检查1,“隐”,“自动隐藏”,“录像时自动隐藏主窗口“).value的= W 
        
      '   ctAutoSize = TRUE'预览图像随窗口自动缩放
        ListKj COMMAND1,COMMAND1(0).Height * 0.1'排列数组控件
        W = Command1.UBound:W =指令(W)。左+ COMMAND1(W)* .WIDTH 2 
        ListKj检查1,W'排列数组控件
        Picture1.Height =指令(0).Height * 1.2 
                  
        呼叫WinCenter“窗口居中
        ctRefresh =真
        呼叫CreateCapWin”创建视频窗口
        调用KjEnabled(真)
        定时器。启用=真:Timer1.Interval = 500 
    结束小组

    私人小组Form_Resize()
       Picture1.Move 0,0,Me.ScaleWidth,COMMAND1(0).Height * 1.3 
       如果ctAutoSize然后SetWin ctCapWin,es_Size   “视频子窗口随主窗口自动改变大小
    结束小组

    私人小组Timer1_Timer()
       昏暗的NP作为POINTAPI,X长,Y长,H只要
       昏暗n状态作为CapStatus,NREC为布尔
       
    '    '我读取窗口的当前状态n状态总是失败,忘高手赐教
    “    X = SendMessageLong(ctCapWin,WM_CAP_Get_Status,莱恩(n状态),BYVAL VarPtr(n状态))
    '    X = SendMessage函数(ctCapWin,WM_CAP_Get_Status,莱恩(n状态),n状态)
    '    NREC = nStatus.fCapturingNow”是否正在进行捕获
    '    S = nStatus.uiImageWidth      “图像宽度,像素
    '    Me.Caption = X 
       
       GetCursorPos NP 
       X = nP.X - Me.Left / Screen.TwipsPerPixelX 
       Y = nP.Y - Me.Top / Screen.TwipsPerPixelY 
       
       如果没有IsFillScreen然后退出小组
       H = Me.Height / Screen.TwipsPerPixelY - Me.ScaleHeight“窗口标题栏高度
       如果Y> -1和Y <H + Picture1.Height然后
          如果Picture1.Visible然后退出小组
          Picture1.Visible = TRUE,
       否则
          如果没有Picture1.Visible然后退出子
          Picture1.Visible =假
       结束如果
       SetWin ctCapWin,es_Size 
    结束小组

    私人小组SetCaption(可选NCAP作为字符串)
       如果NCAP <>“”那Me.Tag =修剪(NCAP)
       如果IsFillScreen然后'全屏方式
          Me.Caption =“” 
       否则'窗口方式
          如果Me.Tag =“”那Me.Caption =“摄像头控制”其他Me.Caption =“摄像头控制- ”&Me.Tag 
       结束如果
    结束小组

    私人小组Check1_Click(指数为整数)
       昏暗nTag作为字符串,TF作为布尔
       
       如果没有ctRefresh然后退出小组
       nTag =检查1(指数).TAG:TF =检查1(指数).value的= 1 
       选择案例LCASE(nTag)
       案例LCASE(“自动调整大小”)
           ctAutoSize = TF 
           SendMessage函数ctCapWin,WM_CAP_SET_Scale, ctAutoSize,0'预览图像随窗口自动缩放
           调用SetWin(ctCapWin,es_Size)
       案例LCASE(“自动隐藏”)
           ctAutoHide = TF 
       最终选择
    结束小组

    私人小组Command1_Click(指数为整数)
       Cmd的COMMAND1(指数).TAG 
    结束小组

    私人小组CMD(NCMD作为字符串)
       选择案例LCASE(NCMD)
       案例LCASE(“连接”):           呼叫CapConnect“连接摄像头
       案例LCASE(”断开“):        ctConnect =假:SendMessage函数ctCapWin,WM_CAP_DisConnect,0,0       '断开摄像头连接
       
       案例LCASE(“VideoSource”):       SendMessage函数ctCapWin,WM_CAP_DLG_VideoSource,0,0   '对话框:视频源
       的情况下LCASE(“VideoFormat”):       SendMessage函数ctCapWin,WM_CAP_DLG_VideoFormat,0,0:通话SetWin(ctCapWin,es_Size)“显示对话框:视频格式,分辨率
       案例LCASE(“的VideoDisplay”):      SendMessage函数ctCapWin,WM_CAP_DLG_VideoDisplay,0,0'对话框:视频显示某些显卡不支持?
       
       案例LCASE(“SetDir”):            呼叫SetDir 
       案例LCASE(“SetFile “):           呼叫SetFile 
       案例LCASE(”VideoCompression“):SendMessage函数ctCapWin,WM_CAP_DLG_VideoCompression,0,0'对话框:视频压缩
       案例LCASE(”记录“):            呼叫startRecord用于
       案例LCASE(”NoRecord“):          呼叫NoRecord 
       
       案例LCASE( “CopyImg”):Clipboard.Clear:SendMessage函数ctCapWin,WM_CAP_Edit_Copy,0,0'将当前图像复制到剪贴板
       案例LCASE(“FillScreen”):        呼叫FillScreen 
       案例LCASE(“”)
       案LCASE(“”)
       案LCASE( “”)
       案LCASE(“退出”):              卸载我:退出小组
       结束选择
       呼叫KjEnabled(真)
    结束次

    公用Sub FillScreen() 
       “ 全屏切换
       IsFillScreen =不IsFillScreen 
       Picture1.Visible =不IsFillScreen 
       如果IsFillScreen然后Me.BorderStyle = 0否则Me.BorderStyle = 2 
       呼叫SetCaption 
       
       如果IsFillScreen然后'全屏方式
          Me.WindowState = 2 
          检查1(KjIndex(检查1,“自动调整大小”))值= 1'切换到:视频窗口随主窗口自动改变大小
       别人的窗口方式
          Me.WindowState = 0 
          呼叫WinCenter“窗口居中
       结束如果
       检查1(KjIndex(检查1,”自动调整大小“))。启用=不IsFillScreen 
    结束小组

    私人小组WinCenter()
       '窗口居中
       昏暗W¯¯长,H只要
       W = 650 * Screen.TwipsPerPixelX:H = 560 * Screen.TwipsPerPixelY 
       Me.Move(Screen.Width - W)* 0.5(Screen.Height - H)* 0.5,W,H'窗口居中
    结束小组

    私人小组VideoSize(W只要,H只要)
       “获取视频的大小尺寸
       昏暗nInf作为BITMAPINFO 
       SendMessage函数ctCapWin,WM_CAP_Get_VideoFormat,莱恩(nInf),nInf 
       W = nInf.bmiHeader.biWidth:H = nInf.bmiHeader.biHeight 
    端子

    专用功能AddKj(KJ为对象,NCAP作为字符串,可选nTag作为字符串,可选n注意作为字符串)作为控制
       '装载一个数组控件
       昏暗我只要
       
       我= Kj.UBound 
       如果KJ(我).TAG <>“”那我= I + 1:负载KJ(I)
       上的错误继续下一步
       KJ(我).Caption = NCAP 
       如果nTag =“”那KJ(I)= .TAG KJ(I).Name点&“ - ”&我KJ否则(I)= .TAG nTag 
       KJ(我).ToolTipText = n注意
       设置AddKj = KJ(我)
    结束函数

    私人小组ListKj(KJ为对象,L长)
      “排列数组控件
      昏暗我一样长,H1长,T长,W只要
      
      H1 = Picture1.TextHeight(“A”):T = H1 * 0.25:W = H1 * 2 
      对于I = Kj.lBound要Kj.UBound 
         如果KJ(我).Caption =“ - ”然后
            L = L + H1:KJ (I)。可见=假
         否则
            KJ(我).Move L,T,W,W:KJ(我)。可见=真
            L = + W 
         结束如果
      下一页
    尾子

    专用功能KjIndex(KJ为对象,nTag作为字符串),只要
       昏暗我只要
       对我= Kj.lBound要Kj.UBound 
          如果LCASE(KJ(我).TAG)= LCASE(nTag)然后KjIndex = I:退出功能
       下一步
       KjIndex = -1 
    结束函数

    私人小组KjEnabled (可选nEnabled由于布尔)
      昏暗的KJ,TF作为布尔值,n类型为String 
      上的错误继续下一步
      对于每个KJ在Me.Controls 
         n类型= LCASE(类型名(KJ))
         如果n类型=“命令”或n类型=“复选框”然后
            KJ .Enabled = nEnabled 
         结束如果
      下一步

      COMMAND1(KjIndex按钮(Command,“FillScreen”))。启用=真
      COMMAND1(KjIndex按钮(Command,“退出”))。启用=真
      检查1(KjIndex(检查1,“自动调整大小”))。启用=不IsFillScreen 
      如果没有nEnabled然后退出小组
      
      TF = ctConnect 
      如果ctRec然后TF =假
      
      COMMAND1(KjIndex按钮(Command,“连接”))。启用=未TF 
      COMMAND1(KjIndex按钮(Command,“断开”))。启用= TF'按钮在摄像头连接状态才可用
      
      COMMAND1(KjIndex按钮(Command,“VideoSource”))。启用= TF 
      COMMAND1(KjIndex按钮(Command,“VideoFormat”))。启用= TF 
      COMMAND1(KjIndex按钮(Command“的VideoDisplay”))。启用= TF 

      COMMAND1(KjIndex按钮(Command,“VideoCompression”))。启用= TF 
      COMMAND1(KjIndex按钮(Command,“记录”))。启用= TF 
      COMMAND1(KjIndex按钮(Command,“NoRecord”))。启用= TF 
      COMMAND1(KjIndex按钮(Command,“CopyImg”))。启用= TF 
      
      如果没有ctRec然后退出小组
      COMMAND1(KjIndex按钮(Command,“记录”))。启用=假
      COMMAND1(KjIndex按钮(Command,“NoRecord”))。启用=真
      COMMAND1( KjIndex按钮(Command,“SetFile”))。启用=假
      COMMAND1(KjIndex按钮(Command,“SetDir”))。启用=假
    结束小组

    私人小组CreateCapWin()
       '创建视频窗口
       昏暗n型式长,S只要
       昏暗lpszName作为字符串* 128 
       昏暗lpszVer作为字符串* 128 
       
       
          如果不capGetDriverDescriptionA (S,lpszName,128,lpszVer,128),然后退出做'获得驱动程序名称和版本信息
          S = S + 1 
       循环
       n型式= WS_CHILD + WS_VISIBLE'+ WS_CAPTION + WS_THICKFRAME“子窗口+可见+标题栏+边框
       如果ctCapWin <> 0,则退出子
       ctCapWin = capCreateCaptureWindow(”我创建的视频窗口“,n型式,0,0,640,480,Me.hwnd,0)
       如果ctCapWin = 0然后退出小组
       SetWin ctCapWin,es_Move,0,命令1(0).TOP + COMMAND1(0).Height * 1.2,640,480 
    结束子

    私人小组CapConnect()
       昏暗ð只要
       “打开摄像头
       D = SendMessage函数(ctCapWin, WM_CAP_Connect,0,0)         '连接一个视频驱动,成功返回真(1)
       
       的SendMessage ctCapWin,WM_CAP_SET_Scale,ctAutoSize,0   '预览图像随窗口自动缩放
       的SendMessage ctCapWin,WM_CAP_SET_PreViewRate,30,0     '设置预览显示频率
       的SendMessage ctCapWin,WM_CAP_SET_PreView ,1,0          '第三个参数:1预览模式有效,0〜预览模式无效
       ctConnect = TRUE 
       呼叫SetWin(ctCapWin,es_Size)“调整视频窗口为正确的大小
    结束小组

    私人小组SetWin(hWnds长,n设置作为enWinSet,可选BYVAL L,以龙,可选BYVAL T作为长,可选BYVALW¯¯长,可选BYVAL H作为龙)
       昏暗hWndZOrder长,wFlags只要
      
       如果hWnds = 0,则退出子
       选择案例n设置
       案例es_Close:SendMessage函数hWnds ,WM_CLOSE,0,0:退出小组
       案例es_Hide:wFlags = SWP_NOMOVE + SWP_NOSIZE + SWP_NOZORDER + SWP_HIDEWINDOW'隐藏
       案例es_Show:hWndZOrder = HWND_TOP:wFlags = SWP_NOSIZE + SWP_SHOWWINDOW       “显示
       案例es_Move 
          hWndZOrder = HWND_TOP:wFlags = SWP_NOACTIVATE + SWP_NOSIZE 
       案例es_Size 
          hWndZOrder = HWND_TOP:wFlags = SWP_NOACTIVATE 
          “录像状态下改变视频窗口大小,有时会出现莫名其妙的错误
          。如果ctRec然后wFlags = wFlags + SWP_NOSIZE 
          L = 0 
          如果Picture1.Visible然后T = Picture1.Height 
          如果ctAutoSize然后
             W =我。 ScaleWidth L - 
             如果H = 1则H = Me.ScaleHeight否则H = Me.ScaleHeight - T的
          否则
             呼叫VideoSize(W,H)'获取视频的实际大小
          结束如果
          当w <20或H <20然后退出小组
       结束选择
      
       SetWindowPos hWnds,hWndZOrder,L,T,W,H,wFlags 
    结束小组

    私人小组ReadSaveSet(可选IsSave正如布尔)
       暗淡n路径作为字符串,NSUB作为字符串
       n路径=“摄像头控制”:NSUB =“USERSET” 
       如果IsSave然后
          SaveSetting n路径,NSUB,“自动调整大小”,ctAutoSize 
          SaveSetting n路径,NSUB,“自动隐藏”,ctAutoHide 
          SaveSetting n路径,NSUB,“路径”,ctDir 
          SaveSetting n路径,NSUB,“文件”,周大福
       否则
          ctAutoSize = GetSetting(n路径,NSUB,“自动调整大小” “假”)
          ctAutoHide = GetSetting(n路径,NSUB,“自动隐藏”,“假”)
          ctDir = GetSetting(n路径,NSUB,“路径”,“”)
          CTF = GetSetting(n路径,NSUB,“文件”,“” )
       结束如果
    结束小组

    私人小组Form_Unload(取消作为整数)
       “停止摄像头。一般情况,如果母窗体关闭,子窗体就会自动释放。下面两句代码是否可省?
       如果ctRec然后调用NoRecord 
       CMD”断开连接“'断开摄像头连接
       SetWin ctCapWin,es_Close 
       呼叫ReadSaveSet(真)”保存用户设置
    完子

    专用功能CutPathFile(NSTR作为字符串,n路径作为字符串,n文件作为字符串)
       “分解出文件和目录
       暗淡我作为龙,S作为龙
       
       对于i = 1到莱恩(NSTR)
          如果MID(NSTR,I,1)=“”则S = I   '查找最后一个目录分隔符
       接下来
       若S> 0,则
          n路径=左(NSTR,S):n文件= MID(NSTR,S + 1)
       否则
          n路径=“”:n文件= NSTR 
       结束如果
    端功能

    专用功能MakePath(BYVAL n路径作为字符串)作为布尔
       “逐级建立目录,成功返回牛逼
       昏暗我一样长,路径1作为字符串, IsPath由于布尔
       n路径=修剪(n路径)
       如果右(n路径,1)<>“”那n路径= n路径&“” 
       对错误转到退出1 
       对于i = 1到莱恩(n路径)
         如果MID(n路径,I,1)= “”那么
            路径1 =左(n路径,我- 1)
            如果目录(路径1,23)=“”然后
               MKDIR路径1 
            否则
              IsPath = GETATTR(路径1)和16 
              如果没有IsPath然后退出功能   “有一个同名的文件
            结束如果
         结束如果
       接下来
       MakePath = TRUE:退出功能
    退出1:
    端功能

     

    ''一篇文章放不下全部代码,这仅是第二页,转到:第一页

    展开全文
  • VB扫雷游戏完整教程及代码

    千次阅读 2020-09-07 18:12:40
    扫雷游戏完整教程及代码 ** 扫雷是一个非常经典的windows游戏,相信每个人都玩过。我做的这个扫雷基本上继承了windows中扫雷的玩法。通过菜单栏中的新游戏,选择一个游戏难度,即可进入扫雷界面。单击任意一个按钮,...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实世界模型  基于EJB的真实世界...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握C#语言是不可能的,如需进一步学习C#语言...
  • VB经典代码

    千次阅读 热门讨论 2020-01-22 15:57:11
     是实现循环结构的一种形式,属于计数型循环,通常用于循环次数已知的程序结构中。   语法格式: For<循环变量>=<初值>To<终值>[Step<步长>]  [<循环体>] Next[<循环变量>]  本段代码用变量i 作...
  • 该系统 用vb开发的系统,具有很好的稳定性,功能强大。适合期末考试的系统文档以及专业人才的参考文档。
  • vb.net 教程 2-12 程序的调试

    千次阅读 2017-04-12 12:49:17
    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处...本篇谈谈vb.net中程序的简单调试 以如下代码为例: Sub main() Dim a(100) As Integer Dim s As Integer For i As Integer = 0 To 100 ...
  • VB实现向窗口发送按键消息

    千次阅读 2009-12-09 16:46:00
    模拟键盘http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/621c35c45b7a2fae8226ac2a.html http://www.winu.cn/ask/response.php?aid=19336 待解决问题 vb WM_KEYDOWN 参数设置???? (离问题结束还有0天0...
  • VB讲课笔记07:控制结构

    千次阅读 2018-03-11 23:03:34
    VB讲课笔记07:控制结构学习目标:掌握顺序结构,选择结构和循环结构,以及与三种基本结构相关的 VB 语句的用法,掌握结构程序设计与面向对象程序设计中,程序的组织和控制方式,掌握 VB 编程的方法和步骤。...
  • 很多播放器都有播放时处于最顶端的功能,这个功能在VB中通过两段代码可以实现  直接双击主窗体,复制下面两端代码进去即可实现  Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long,...
  • VB程序设计及应用

    热门讨论 2012-11-26 14:07:12
    1.3.5 代码窗口 1.3.6 调色板窗口 1.3.7 窗体布局窗口 1.3.8 立即窗口 1.3.9 对象浏览器窗口 习题9 第2章 VB基本概念与操作 2.1 可视化编程基础 2.2 VB应用程序的开发步骤 2.2.1 创建或打开新工程...
  • 实验一 一 DDBAB,CC(D)DDC,ADDCA 二 windows 中断 工具箱 代码 分类 form2.show 有语法错误 错误 事件 结构化 文件名和结构 工程 代码 双击任意控件或右健快捷菜单选代码窗口 vb 的安装文件夹 属性 方法 font load ...
  • 内容索引:VB源码,系统相关,进程 QQ进程复活测试,VB源码实现,复活进程在启动进程被KIll后使用,启动程序的路径一定要绝对路径。  说明:PROCESS_INFORMATION结构由CreateProcess函数将关于新建立的进程和;  ...
  • clsWindow是VB6环境下使用的一个操作外部程序窗口的类,比如得到窗口句柄,得到窗口里某个文本框的内容。非常方便,使用它可以让您脱身于一堆api函数,功能强大使用简单! 这个类楼主很早就开始封装了,原本打算做...
  • VB程序设计教程(第四版) 龚沛曾

    万次阅读 多人点赞 2019-03-27 13:59:46
    VB程序设计教程(第四版) 龚沛曾 课后习题答案 目录 第一章课后答案 第二章课后答案 第三章课后答案 第四章课后答案 第五章课后答案 第六章课后答案 第七章课后答案 第八章课后答案 .... 第一章课后答案...
  • c语言开发窗口应用程序

    万次阅读 多人点赞 2016-04-28 09:48:01
    1.学会制作带窗口界面的程序。 2.学会软件开发中常用的各种技术,如网络编程,多线程编程,数据库编程。 3.项目实战,让您知道软件是怎么一步一步制作的。可以学会c语言的模块化编程以及一些编程习惯和思路。
  • VB程序破解

    千次阅读 2012-02-27 21:10:50
     现在不少程序是用 VB 写的,你通过反汇编或跟踪调试时很容易鉴别某个程序是否为 VB 程序VB 的 EXE 文件并不是真正的编译可执行文件,它们需其动态链接库才能正常运行,各版本的链接库如下: VB3 链接库为 vbrun...
  • VB程序逆向反汇编常见的函数(修改版)VB程序逆向常用的函数1) 数据类型转换:a) __vbaI2Str 将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)...
  • 小甲鱼视频:... VB程序逆向反汇编常见的函数:https://www.cnblogs.com/bbdxf/p/3780187.html 程序下载地址:链接:https://pan.baidu.com/s/18igiL-YWn9wnIrJfKT8gBA 提取码:wygg PEiD 查壳工具:...
  • 不但详细介绍了VB 2008各种领域的应用开发技术,而且提供了相关理论知识、设计思路与实现方案,侧重于程序设计思路和过程的介绍,并对实例的所有程序代码做了详细注释,有利于读者理解和巩固知识点,快速提高与应用...
  • VB.NET 教程_01_基础语法

    万次阅读 多人点赞 2018-08-08 00:48:58
    VB.Net是一种简单,现代,面向对象的计算机编程语言,由微软开发,将.NET Framework和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合。 Visual Basic .NET(VB.NET)是在.NET Framework上...
  • VB程序的优化

    千次阅读 2014-09-07 00:50:20
    这篇文章汇集了作者在使用VB进行软件开发时积累下来的一些经验,通过一些简单的例子来向你展示如何写出高效的VB代码。其中包含了一些可能对VB程序员非常有帮助的技术。在开始之前,先让我陈清几个概念。 让...
  • VB反编译工具(免注册)

    2017-09-06 22:43:51
    VB Decompiler Pro是一款VB反编译工具,它可以将使用VB编程软件开发的程序反编辑为伪代码代码,反编译出程序代码。如果你想学习参考别人的编程内容,那么这个工具正好派上用场。能反编译程序中所有的控件及窗口,...
  • VB 6.0 可以使用MQTT

    千次阅读 2021-02-25 17:25:19
    后来用户提出要把数据传输到他们的MQTT服务器上进行分发,就用VB 6.0的代码又扣了个几天,弄出来个能和MQTT Broker 进行通信的 VB 6.0 的程序。 为了支持其他人快速开发使用。就做成了个带 Socket 通信端口的程序。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,700
精华内容 5,480
关键字:

vb代码窗口程序结构内容