ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:211.45KB ,
资源ID:8395243      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8395243.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(从一个实例开始跟我学Visual Basic.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

从一个实例开始跟我学Visual Basic.docx

1、从一个实例开始跟我学Visual Basic从一个实例开始跟我学Visual Basic写在最前面:1. 这部教程是写给那些想要进入VB编程大门的新手的,所以大虾们就不必浪费时间了,我的目的是想让读者对编程有一定的认识(不仅仅是VB),让你知道要自己去学。一个实例并不重要,重要的是能根据自己的需要,去追求自己要的东西,不单单是程序设计,包括做人,做事(呵呵,把自己说的太伟大了),不过,一个真正厉害的人,不是教出来,也不是看书看出来的,而是靠自己琢磨出来的;2. 我是学数学的,只是学过C语言,没有接触过面向对象(OO)的编程,对于像VB这种“半对象”的程序设计语言,纯粹是无聊时自己摸索的,也是刚

2、刚起步,所以对于其中不对只处,请多多包涵,我们互相学习,同时,我也知道初学者可能在什么地方出现问题,到时我会强调的;3. 我们知道,世界上没有完美的语言,每种语言都有自己的不足之处。就象用C来设计图形化的程序,用一个字来形容“太难”了,呵呵。C+固然好(不像有些人说的那样,是C的扩展。严格的讲它不同于C,又是一种新的程序设计语言,就像树跟二叉树,大熊猫和小熊猫一样,差别的的了),可是我还是选了VB,原因在于它开发程序快速而且完全可以很好的完成自己的要求。所以,亲爱的读者,不要认为那种,那种程序没前途了,那种那种程序就好,就去追新,希望你能够稳下来,学好你需要的语言,掌握好你要用到的工具,脚踏实

3、地;4. 我想看这部教程的应该大部分都是学生,如果你想在这方面发展的话,希望你能够认真对待你的学习生活(开个玩笑,我计算过以现在的高校收费标准,一节100分钟的课平均是10元,所以),最起码你要学好: 大学数学:很多专业都不用学这个了,真的很可惜,现在的数学可能真的有点变味了,一味的去追求问题的结果,而不是解决问题的方法和步骤。举个例子:就像现在的考研数学一样,你敢说一个思维活跃的人一定能拿高分么!这不一定,应试是需要练习,不断的练习,以达到一种机械化的程度这就是对试题的极大的熟悉,这样,相信你也一定能在最后的分数上超过真的猛士的。此时此地,对你而言,你要去领悟数学的思维,数学的方法。算法说道

4、地跟“数学”是分不开的。 大学语文:很重要,我就没学过这门课,弄的我现在的语言表达能力是那个差啊! 大学英语、计算机体系结构和汇编语言、计算机操作系统原理、数据结构和算法、软件工程、Windows 程序设计etc.日后,你会觉的这些东西,真的很有用的,所以,请你不要浮躁,下文的叙述中,我们会不同程度上用到上面的知识的;5. 个人认为,无论是什么样的程序语言应该都不是很难,要不coder为何挣的也不是很多啊,所以你要有信心,一定要亲手去做,不要觉得自己会了,实践是检验真理的唯一标准。要用到的工具:1. Visual Basic 6.0 学习版sp6学习版就够了,当然其它的两种版本就更好了。Vis

5、ual Basic 学习版让编程人员很容易地创建功能强大的 Microsoft Windows 和 Windows NT(R) 应用程序。它包括了所有的内部控件,加上网格、选项卡、和数据绑定控件。与此版本一起提供的文档包括 Learn VB Now (这是一张多媒体 CD-ROM 的标题),加上包含了完整联机文档的 Microsoft Developer Network CD。2. MSDN Library Visual Studio当然如果你安装的不是精简版,这个基本上就不需要了,VB自带的帮助就可以的,要养成有问题自己解决,那么第一步就是查看帮助文件了。你还可以Google(v.)一下,或

6、是BBS(v.)一下,注意,不要使用以下经典的蠢问题:问题:我能在哪找到X程序? 问题:我的程序/配置/SQL申明没有用 问题:我的Windows有问题,你能帮我吗? 问题:我在安装Linux(或者X)时有问题,你能帮我吗? 问题:我怎么才能pjroot帐号/窃取OP特权/读别人的邮件呢? 为什么呢?For more click http:/www.tuxedo.org/esr/faqs/smart-questions.html 3. Windows API 函数 for Visual Basichttp:/202.103.176.81/erun/sealife/ ,这个就和DOS时代的int

7、一样的重要,Windows 给用户的是ring3,它不能让用户去动系统的核心ring0,而在很多时候是很必要的;我们知道系统给我操作接口的同时,也给了我们命令接口,用这些已经封装好的API(应用程序接口),可以降低我的的编程强度。进入正题我给教程取名为从一个实例开始,那么首先就让我来描述一下这个实例是用来完成什么的:需求分析: 软件名:光驱使者 功能描述:通过按设置好的某个键,以达到让光驱弹出,关闭的效果。(如果你的机箱是放在地上的,你会发现这会是非常有用的。)在开发一个项目时,需求分析是非常重要的,这一个环节出了问题将会导致后面的环节进行不下去,作为教学,为了方便起见我们做了以上的简化分析。

8、(注:我的格式很不规范,如果日后你要做软件工程的话,请你去找一下这些方面的文档应该如何规范的去写的文章。)程序设计及代码编写阶段:(如果你这是学VB的程序设计,从这里开始将会非常的重要了)第一节首先,看一下我们的快速原型,以后的开发就会在这个基础上展开: 以上就是我们的快速原型,呵呵。下面我们打开VB输入源码(别说你不会进啊!):文件新建工程标准,然后在查看代码中写入源代码并在窗体(通常所说的窗口)上画一个Command(按钮),你先不必知道这些代码是用来干什么的,先让自己有一点的成就感再说。源码见(001)Option ExplicitPrivate Declare Function CDD

9、oor Lib winmm.dll Alias mciSendStringA _( _ByVal lpstrCommand As String, _ByVal lpstrReturnString As String, _ByVal uReturnLength As Long, _ByVal hwndCallback As Long _) As Long CDdoor函数是安装WINDOWS时所自带的winmm.dll文件中包含的函数 Dim CDOpen As Boolean CDOpen用来标示光驱开与关的状态Private Sub Command1_Click()On Error Resu

10、me NextIf CDOpen = False Then 如果关闭则打开,并且按钮做相应变化 Call CDDoor(set CDAudio door open, 0, 0, 0) CDOpen = True Command1.Caption = 点击关闭光驱Else 否则关闭 Call CDDoor(set CDAudio door closed, 0, 0, 0) CDOpen = False Command1.Caption = 点击打开光驱End IfEnd SubPrivate Sub Form_Load()CDOpen = FalseCall CDDoor(set CDAudio

11、 door closed, 0, 0, 0)End Sub代码分析:1. Option ExplicitVB中的变量在使用前是可以不加声明的,而Option Explicit则要求变量必须显式声明,这一点可以然你在日后的程序调试时,程序执行时更容易的发现错误,而且可以让你的程序阅读时更加的清晰;2. “”后面的内容是注释在程序的解释执行时是不解释的,但它的存在是非常重要的,现代的程序要求的是“清晰第一,效率第二”,有了注释能够让程序的阅读者明白你的程序是在做一件什么样的事。注意:好的注解不是句句都要,句句都有注解相当于没有注解,要在关键的代码上加以注解;3. Private Declare F

12、unction CDDoor Lib winmm.dll Alias mciSendStringA _( _ByVal lpstrCommand As String, _ByVal lpstrReturnString As String, _ByVal uReturnLength As Long, _ByVal hwndCallback As Long _) As Long 看到上面的一大堆是不觉的很恐怖啊!其实这没什么,这只不过是微软的程序员事先写好的“函数”,(API应用程序接口,它屏蔽了操作系统底层的活动,而以一种简便的方法让使用者达到某种功能),可以在相关的文档中查到,比如(MSDN)

13、,只要COPY过了就行了。我们可以把它理解为C语言中,函数原型的声明罢了,使用时只要往里面添需要的参数就O.K.了。在上面这个API中,第一个参数“ByVal lpstrCommand As String”就决定了,光驱的弹出和关闭,如:“set CDAudio door open”的意思是光驱的弹出,那么在使用时用“Call CDDoor(set CDAudio door open, 0, 0, 0)”就可以打开光驱了。在输入时,会出现上面黄色的气球提示,黑体字的部分是提醒你当前要输入的是那部分的参数,这是很好的,要好好了利用(如果这里,你把CDDoor写成了Cdoor那么就不会出现后面的快

14、速信息,这时就要引起你的注意了)。API函数 CDdoor 来控制光驱门的开和关程序十分简单,由于 CDdoor 函数自身包含了对异常错误的处理机制,因此这个程序的通用性很高,你可以把这段代码移植到你的程序中,实现某些多媒体播放器所常用的开关光驱的功能。4. Private Sub Command1_Click()End Sub这个是当你按下(单击)Command1时,将会执行这其中的处的代码。聪明的你,你也一定知道Private Sub Form_Load()End Sub是在什么时候激活的了吧!这没什么说的了,要举一反三,学一知十。5. On Error Resume Next这个就一行的

15、代码其实没什么,但这里我们要同过它教给你使用帮助。这行代码是干什么的呢?我也不知道,那我该怎么办啊,对啊,请求帮助。具体方法帮助内容.,如果提示出错,十有八九是你没装MSDN。打开之后是这样的: 我们要查 “On Error Resume Next”,只要在“索引”中输入“On Error”,就会看到下面提示有“On Error”语句,从右边的文档中你一定可以找到“On Error Resume Next”,这里我就不说了。6. If CDOpen = False Then 如果关闭则打开,并且按钮做相应变化 Call CDDoor(set CDAudio door open, 0, 0, 0

16、) CDOpen = True Command1.Caption = 点击关闭光驱Else 否则关闭 Call CDDoor(set CDAudio door closed, 0, 0, 0) CDOpen = False Command1.Caption = 点击打开光驱End If这是程序的主要部分了,通过“IfThenElse块”达到了光驱状态的判断,以及根据“Flag”“CDOpen”保存光驱状态,并据此完成相应的功能。这里有一个很重要的问题缩进,合理的利用它,可以让你清楚的看到程序的流程,newbie要注意了!“Command1.Caption = 点击打开光驱”“对象.属性对应的新

17、的属性”这种格式是很重要的,通过它可以动态的改变对象的属性,以后要常用到的。7. CDOpen = FalseCall CDDoor(set CDAudio door closed, 0, 0, 0)这两行很容易被漏掉,它起到的作用是初始化,对于一个大些的程序,不初始化很可能导致后面的代码运行混乱的,所以,需要初始化的程序一定要初始化。第二节这个程序的基本功能就是这些了,可你觉的它实用么?不可能每回你要实用光驱时,把这个应用程序打开,然后用鼠标点按钮打开光驱吧,那我们就要对它进行改进!最好的方法可能就是设置快捷键了。下面我们就来实现这个功能:实现功能是很简单的,只要我们在相应的事件中,加入相应

18、的代码就可以了。我们看一下,窗体Form中有KeyDown事件,(Tip: 此事件当用户按下和松开一个 ANSI 键时发生)好了,我们在“Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) End Sub”中添加代码。002 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyF11 Then 键入F11 On Error Resume Next If CDOpen = False Then 如果关闭则打开,并且

19、按钮做相应变化 Call CDDoor(set CDAudio door open, 0, 0, 0) CDOpen = True Command1.Caption = 点击关闭光驱 Else 否则关闭 Call CDDoor(set CDAudio door closed, 0, 0, 0) CDOpen = False Command1.Caption = 点击打开光驱 End If End IfEnd Sub1. 上面的代码中“If KeyCode = vbKeyF11 Then ” 是用来判断按键的,如果按的是F11则条件成立,执行相应的代码。快捷键是由“KeyCode”决定的,它的值

20、可以在帮助中找,前面已经说过如何用帮助了,这就不赘述了。我们这里用的是F11,当然你也可以用其它的。“KeyDown”事件还有一个参数Shift As Integer,它可以根据不同的Shift值来产生不同的组合键,如Ctrl。,这里我们忽略了这个参数;2. 按F5运行,然后按F11,程序怎么没反应啊?why?看看我们的界面:原来Command1上有一个虚线框,事件F11由按钮接收了,当然不会响应响应的事件了,不信你把“Command1”删去,再运行,程序一定有反应了。可如果我们不删“Command”该如何让程序响应这一事件呢?看看我的做法:原来,“Form1”的“KeyPreview”默认的

21、是“False”,则程序优先响应控件的键盘事件,只要把它改为“True”,你在运行一下,是不就可以了!(呵呵,下面“KeyPreview”的帮助都有了,你还费什么话啊!)第三节 为了实现新的功能,使程序更加的清晰,我重写了这个小程序。显而易见,清晰的程序可为日后的开发扫清不少的障碍。从这里我们第一次引入了“模块”,可以提高程序的可重利用性,也可使程序更具有结构性,易于程序的修改。 像上一节那样,我们的程序就实用了么?!其实还是很麻烦的,起码你要把窗体激活,它要是在后台,快捷键就根本不会起作用!而对于这类的程序要是每回都要激活窗口,还不如亲手去按光驱上的键,让光驱弹出舱门了!所以,我们得让程序能

22、在后台工作。这样,我们就得给程序注册热键了。这一点我不知道该如何去做(请高手指点),后来就用了一个比较麻烦的方法,写了好多的代码。下面就看一下我的拙见。003 RegHotKey.bas 是用来实现热键的。Option ExplicitDeclare Function RegisterHotKey Lib user32 _( _ ByVal hwnd As Long, _ ByVal Id As Long, _ ByVal fsModifiers As Long, _ ByVal vk As Long _) _As Long 注册热键Declare Function UnregisterHot

23、Key Lib user32 _( _ ByVal hwnd As Long, _ ByVal Id As Long _) _As Long 取消注册的热键Declare Function CallWindowProc Lib user32 Alias CallWindowProcA _( _ ByVal lpPrevWndFunc As Long, _ ByVal hwnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long _) _ As Long 在特别的Window进程中传递消息Pub

24、lic Const WM_HOTKEY = &H312Public Const MOD_ALT = &H1Public Const MOD_CONTROL = &H2Public Const MOD_SHIFT = &H4Public Modifiers As Long, _ uVirtKey As Long, _ idHotKey As LongPrivate Type taLong ll As LongEnd TypePrivate Type t2Int lWord As Integer hword As IntegerEnd Type Public Function wndproc(By

25、Val hwnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_HOTKEY Then If wParam = idHotKey Then Dim lp As taLong, i2 As t2Int lp.ll = lParam LSet i2 = lp If (i2.lWord = Modifiers) And i2.hword = uVirtKey Then 按下Modifiers和uVirtKey触发事件 MyDoor End If End IfE

26、nd Ifwndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)End Function 定义热键的行为1. 这里面包括相应的函数,常量及变量定义.Public说明是全局的,不仅仅是只能在这个模块中,它的作用范围更广。Public FunctionEnd Function是自定义的过程,确定热键的作用。这是从网上找的,不过原来好像不是这样写的,为方便理解做了一些修改。2 这里用到的很多的API,你可能会说这么多的字,一个一个的打上去也太累了吧,而且还很容易错,这的确是个问题啊!微软早就为我们想好了。有一个叫“API 文本浏

27、览器”的程序可以在开始里找到。从这里面可以很方便的将上面的很长的一串复制到IDE(集成开发环境VB)中。它的用法是 文件加载文本文件,选Win32api。只要在为本框中输入相应的API函数的开头就可以找到了。如输入“RegisterHotKey”,在下面对应的条目上双击,选复制就道剪贴板了,只要粘贴到IDE相应的位置就O.K.了。为日后使用提高查找速度,可以把它转化为mdb数据库文件,文件转换文本为数据库,以后加载数据库文件就好了。 Door.bas 是实现程序的最基本的功能,判断舱门的状态,以及做出是否做出相应的动作,里面的内容这里就不讲了,和前面讲的基本一样,只不过是从窗体里搬到了模块中。

28、 Declare.Bas是程序中用到的一些公用函数和变量的声明,里面有注释,自己看了。这下的程序可以说基本上差不多了,按下Scroll Lock就能在后台实现光驱的进出了,不过,作为一个“软件”光有功能是不够的,还得友好的界面,方便用户的操作。这些辅助的东西我们下一节讲。第四节 考研结束了,成绩不好,要找工作了,工作实在是难找啊,所以心情一直都不好。几天,好不容易才把这个程序写完,希望大家能提出宝贵的建议。004 这个小程序没有什么大的改进,请大家看源程序,里面有注解。这个版本只是加了一些功能: 程序随Windows而启动(注册表实现) 程序启动到托盘(API实现,开始用OCX实现,可推出时内存出错,不明白) 美化程序,增加帮助这是我们最后的一课了,此时的程序基本可以用了,可是还是不完善,这里,我提出几个问题,等带你的解决,也当成你的练习吧: 自定义快捷键 判断光驱盘符 对于多光驱用户,不同快捷键,对应不同光驱 程序的启动可选 我们的课程就到这里了,希望对你有所帮助。Email:waxiga

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1