vb__编程.doc
《vb__编程.doc》由会员分享,可在线阅读,更多相关《vb__编程.doc(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、从DOS转移到windows从DOS转移到wIndows visual basic是一个完整全面的程序设计语言,它确实能适应相当多的引用需要,但是用不了多就你就会碰到vIsual basIc不能直接支持的需要,例如:visual basic语言不包含语音支持、I/O端口访问,没有指针以及无法进行多位图操作等等。不过这些并不是visual basic的缺陷,没有任何语言能包含满足程序员所需要的全部命令函数。在DOS的世界里,这个问题是通过建立和扩展语言功能的函数功能来解决的,这些函数可以根据自己的需要连接到您的程序中去。在wIndows的世界里,事情稍微复杂一些。对于同一件事情,在wIndwos
2、 的操作系统中比在DOS里面要复杂,例如:即使是在屏幕上显示一样字这样简单的动作,也要用到wIndows处理、显示描述表及画笔等多个对象。另外,他们的外部函数连接 过程也是不相同的。wIndows应用的是动态链接技术,而不是DOS中通常使用的静态链接技术。如果您只使用visual basic的函数命令,这种复杂性您是看不见的。但是,如果你准备使用visual basic语言之外的特性,肯定回面对这样的问题。尤其在外挂制作方面。不过您不必惊慌。象任何重要的程序设计语言一样,visual basIc也是告度可扩展的。许多第三方控件都是扩展它的功能的,而wIndows本身就是一个很大的扩展VB的功能
3、的东东,只要你很好的利用了wIndows那么,你就可以完全制作出功能超强的外挂。很多人说wIndows程序设计非常复杂,其实,这只是针对用C 或者用 Pascal语言编写整个程序的人来说的,作为一个visual basic的程序员,你也许已经对wIndows怎样工作有了比较好的理解,因为VB的时间就相当于WINDOWS的消息,VB的属性常常就可以认为是WINDOWS的风格和属性了,从某中角度讲,VIsual Basic 就是wInDows的编程的外壳。下面介绍一下DOS与wIndows的主要差别首先,wIndows是多任务的,他可以在同一时间运行多个程序。其次,wInDows是时间驱动的。最后
4、,wIndows是设备无关的,编写程序可以不考虑设备硬件的问题。为了大家了解wIndows的运行机制,下面介绍wIndows 的基础。希望大家能仔细看,细心体会。只要您了解了系统在怎么做,我想怎么做,就知道我要让系统怎么做了,然后我们的外挂就是这么个东西:我不要它按照原来计划的方式去做,而是按我需要的样子去做,所以,了解wIndows的运行机理是非常必要的。 wIndows编程基础1.1、Windows的介绍WIndows是一种基于图形界面的多任务操作系统。为这个环境开发的程序有着相同的外观和命令结构。对用户 来说,这使得学习使用WIndowS应用程序变得容易了。为了帮助开发WIndows应用
5、程序,Windows提供了大量的内建 函数以方便地使用弹出菜单、滚动条、对话框、图标和其他一些友好的用户界面应该具有的特性。WIndows运行应用程序以硬件无关的方式来处理视频显示、键盘、鼠标、打印机、串行口以及系统时钟。最值 得注意的WIndows特性就是其标准化的图形用户界面。统一的界面使用图片或图标来代表磁盘驱动器、文件、子目 录以及其它操作系统的命令和动作。统一的用户界面也为程序员带来了好处。例如,你可以很方便地使用常见菜单和对话框的内建函数。所有的菜单都具有相同风格的键盘和鼠标接口,因为是WIndows而不是程序员在实现它。WIndows的多任务环境允许用户在同一时刻运行多个应用程序
6、或同一个应用程序的多个实例。一个应用程序可 能处于激活状态。激活的应用程序是指它正接收用户的输入。因为每一个瞬间仅有一个程序能够被处理,因此同一时间也只能有一个应用程序处于激活状态。但是,可以有任意个数的并行运行的任务。 1.2、WIndows的简要历史Windows最初由Microsoft公司在1983年11月宣布,1985年11月推出了第一公开发行版本,即1.01版。此后两年,1.01版进行了几次修改以满足国际市场的需求,并增减了一些显示器和打印机的驱动程序。1987年11月发行的Windows 2.0版在用户界面上做了些改进。例如:重叠式窗口的引入,还增强了键盘和鼠标接口,特别是增强了选
7、单和对话框的功能(略) 1.3、用户界面的构件1.3.1 窗口窗口是屏幕上与一个应用程序相关的矩形区域,它是用户与产生该窗口的应用程序之间的可视界面。对应用程序来说,窗口是应用程序控制下的屏幕上的一个矩形区域,应用程序创建并控制窗口的所有方面。当用户启动一个应用程序时,一个窗口就被创建。每当用户操作窗口中的对象时,程序就有所响应。1.3.2 边框绝大多数窗口都有一个环绕着它的边框,边框不仅作为窗口的边界,它也用来指明窗口的状态,即窗口是否是一个活动窗口。当我们将鼠标指针放在边框上按下鼠标键并移动鼠标时,就可以改变窗口的大小。1.3.3 标题栏标题栏位于窗口的顶部,其中显示的文本信息用于标注程序
8、,一般是应用程序的名字,这便于用户知道哪个应用程序正在运行。标题栏的颜色反映一个窗口是否是一个活动窗口。1.3.4 控制框控制框是每个窗口左上方的小图片,每个应用程序都使用它。在控制图标上单击鼠标键会使WInDows显示系统菜单。系统菜单它提供了诸如还原、移动、大小、最小化、最大化以及关闭这样的标准操作。1.3.5 最小化图标每个Windows 98及Windows NT应用程序都在窗口的右上角显示三个图标。最左边的图标是一段短下划线,这就是最小化图标。它可以使用程序被最小化。1.3.6 最大化图标最大化图标是三个图标中中间的那一个,看起来象两个小窗口。使用最大化图标可以使用应用程序占满整个屏
9、幕。如果选择了这个图标,其它应用程序窗口都会被盖住。1.3.7 垂直滚动条如果有必要,应用程序可以显示一个垂直滚动条。垂直流动条显示在应用程序窗口的右边,在两端有两个方向相反的箭头。它还有一个着色的棒和一个透明的窗口块。后者被用于显示当前显示内容与整个文档的关系。你可以用滚动条来选择显示哪一页。一般在任何一个箭头上单击一下会使显示内容移动一行。单击向上箭头下方的窗口块并拖动它会使屏幕输出快速更新到应用程序屏幕输出的任意位置。1.3.8 水平滚动条也可以显示一个水平滚动条 。水平滚动条显示在窗口的底部,具有与垂直滚动条类似的功能。你用它来选择 要显示哪些列。一般在任何一个箭头上单击一个会使显示内
10、容移动一列。单击向左箭头右边的窗口块并拖动它会使屏幕输出快速更新到应用程序屏幕输出的任意位置。1.3.9 选单栏一个可选择的菜单条可以显示在标题条的下方。通过菜单条来选择菜单和子菜单。这种选择可以通过用鼠标单击,也可以用热键组合来实现。热键组合经常是ALT与命令中带下划线的字母的组合,比如FIlE命令中的 “F”。1.3.10 用户区通常用户区占据了窗口最大的部分。这是应用程序的基本输出区域。应当由应用程序来复杂管理用户区。另外,应用程序可以输出到用户区。 1.4、面向对象的思维方法对于程序员来说,面向对象意味着非常熟悉的事物:将世界看成是一组彼此相关并相互通信的实体即对象组成,每个对象有一个
11、名字来标识,这是人们通常看待世界的方式。例如,当看见一辆汽车时,所见到的是一辆汽车,而不是一大堆原子。人们可以将汽车分解为车轮、发动机、车门、油箱等,它们都是具体的实体即对象。对象之间的通信被称为发送消息,即一个对象请求另一个对象执行某种方式的操作。例如,交叉路口的红灯“请求”驾驶员停车,驾驶员在接受到消息之后,他所执行的动作是踏下制动踏板,这有向汽车发送了一条消息,汽车在接受到此消息之后,又将该消息分解之后发送到相关的对象上:制动器作用于车轮上,将动能转变成为势能,使车速降下来;尾灯又向它后面的其它车辆的驾驶员发送消息;各种仪表盘向驾驶员反馈出所发送的消息的动作结果。从程序员角度而言,对象是
12、内存中一块有名的存储单元。我们通常所谓的变量就是一种数据对象,但对象的概念比变量的含义更广义,通常将对象定义成为包含有数据和代码的内存区域,数据表征对象的特征,而代码用于响应消息,使对象进行某些动作。从屏幕上显示的一个可视的窗口对象为例,我们可以对比分析一下用户心目中的对象和程序员心目中的对象的关系。窗口对象的特征,例如颜色、长度、其中显示的信息等,在程序中被表示为数据,用户对窗口对所做的操作,例如移动窗口、改变窗口的大小等,使得用户向窗口发送了消息,这些消息引起了计算机(内存中的)对象执行相应的代码,代码执行的结果改变了对象中的数据,使对应的可以视对象 的位置和大小发生了变化。对象为响应消息
13、所执行的代码被称为方法,对象中保存的数据构成对象的属性,对象的抽象定义就是执行某些动作,否则,没有其它途径可以使一个对象动作起来。向一个对象发送消息在程序中表示为: functIonName(id, arg1, arg2, .);其中,消息是functIonName,id是标识对象的一个对象名,或称其为对象的标识符,WIndows使用某种类型的 数据来作为对象的标识符,这个标识符号常被称为对象的句柄。arg1等为消息所带的参数。虽然发消息类似于标准的函数调用,但消息也有函数调用中没有的特性,例如,消息始终在执行一选择机制,其参数与其它消息区别开来,从而告诉该对象完成什么样的操作。一个函数名始终
14、指向内存中该函数的代码所位于的确定地址,消息并不指向内存中的某地址,但却告诉接受消息的对象要引用的内存地址是什么。函数不仅说明操作,而且还要执行如何完成该操作的方法。消息只说明该操作,在对象中定义的方法说明如何完成该操作。当向不同的对象发送相同的消息时,所执行的方法是不同的。在面向对象的程序设计中,每个对象由一个类来定义,类是对一组性质相同的对象的程序描述,它是由概括了一组对象共同性质的方法和数据组成。从一组对象中抽象出公共的方法与数据,将它们保存在一个类中是面向对象程序设计的核心。在日常生活中,我们也以类这种方式来定义客观对象。通过对客观对象进行抽象,我们将性质相同的对象归为一类,形成概念,
15、例如,人类、苹果类、食品类等。通过对客观对象分类,我们也可以更好地认识客观对象,例如,当知道张三是一个人时,不用对张三进行更多的描述,我们已知道张三作为一个人所具有的特征和行为,因为它们已经在“人”类中进行了描述。在面向对象的程序中,类被用作样板来生产具有相同行为方式的对象。类就像是生产对象的一个工厂,在生产对象时,对象具有类中所描述的同样的数据结构和方法,同时,对象的每个数据在创立之初取得一个初始值,形成对象的初始状态。对象通过发送消息相互作用,对象的状态从一种状态过渡到另一种状态,当所有的有关对象到达某种特定的状态时就得程序的运行结果。使用类产生对象的过程也称为生成该类的一个实例。因此,对
16、象也可以定义为对象是类的一个实例。定义类也意味着将该类的对象公用代码放在内存的公共区域中,而不必对每个对象都将它们的代码和数据重新进行一次描述,这减轻了程序员的劳动强度。我们可以将一些常用对象定义放在一个公用库中,而在程序中需要该类的一个对象时,就创建该类的一个实例。WIndows已为程序员预定义了许多像按钮、滚动杠和对话框等对象的类,当程序员需要这些类的对象时,仅需创立该类的实例即可。对于同一个类的不同对象,在建立对象时其初始状态不同,因而这些对象在屏幕上显示的位置、大小等属性也不相同,但同类的对象的操作是相同的(因为它们共用相同的方法)。这也就是为什么不同的WIndows应用程序对用户表现
17、出一致的操作特性的原因之一。1.5、句柄WIndows应用程序中存在许多对象,例如选单、窗口、图标、内存对象、位图、刷子、设备对象和程序实例等,在WIndows中,对象使用句柄进行标识,这样,通过使用一个句柄,应用程序可以访问一个对象。在WIndows软件开发工具中,句柄被定义为一种新的数据类型。在应用程序中,对句柄的使用一般只有赋值(句柄可以被赋以初始值、被改变为用于标识同类对象中的另一个对象和被用作函数的参数)、与NULL进行相等比较(判定一个句柄是否为一个有效的句柄)和与标识同类对象的另一个句柄进行相等比较(判定两个句柄是否标识同一个对象),没有其它的运算。虽然在有的书中介绍说句柄是一个
18、十六位的整数,但实际情况并不这样简单,它的长度将会随着不同的计算机平台和WIndows的发展而有所变化,例如,在32位WIndows中,句柄将是一个32位的数据,并且不是整数类型。一种通用句柄类型为HANDLE,在WIndows 3.1以前的版本中,它可被用于标识所有种类的对象,在WIndows 3.1中,部分地保留了这一特点,在本教程的程序中也有所反映。在WIndows 3.1中,从HANDLE类型又派生出了一些新的句柄数据类型,每种类型的句柄用于标识一种类型的对象,下面是一些常见的句柄类型: 类型 说明 HANDLE 通用句柄类型 HWND 标识一个窗口对象 HDC 标识一个设备对象 HM
19、ENU 标识一个选单对象 HICON 标识一个图标对象 HCURSOR 标识一个光标对象 HBRUSH 标识一个刷子对象 HPEN 标识一个笔对象 HFONT 标识一个字体对象 HINSTANCE 标识一个应用程序模块的一个实例 HLOCAL 标识一个局部内存对象 HGLOBAL 标识一个全局内存对象 1.6、数据类型及常量为便于开发WIndows应用程序,Windows的开发者新定义了一些数据类型。这些数据类型或是与C/C+中已有的数据类型同义,或是一些新的结构数据类型。引入这些类型的主要目的是为便于程序员开发WIndows应用程序,同时也是为了增强程序的可读性;另一个目的是为了便于程序将来
20、能被移植到其它种类的计算机平台上或适应WIndows将来的新版本的变化。例如,本教程目前使用16位API(Application Program Interface),现在Windows的版本使用32位aPI,只要将HANDLE等句柄类型定义为32位长,然后重新编译程序,就可以很方便地将一个使用16位API的WIndows应用程序改为使用32位API的程序,使其能运行在32位API WIndows上。大部分的数据类型在WIndows.h中定义,下面是在这个文件中定义的部分类型:#definePASCALpascal#defIneNEARnear#defIneFAR fartypedefunsi
21、gned char BYTEtypedefunsigned shortWORDtypedefunsigned long DWORDtypedeflongLONGtypedefchar *PSTRtypedef char neAR *NPSTRtypedefchar FaR*LPSTRtypedefvoidVOIDtypedefInt *LPINTtypedefLonG(PASCAL FAR * FARPROC)();在WIndows.h中,使用typedef还定义了一些新的结构类型。这些结构类型的名字也使用大写形式的标识符:类型 说明 MSG 消息结构 WNDCLASS 窗口的类的结构 PAI
22、NTSTRUCT 绘图结构 POINT 点的坐标的结构 RECT 矩形结构 我们在这里以类型MSG为例来说明类型的定义方法,对于其它类型,在以后用到时再作详细地说明。类型MSG是一个消息结构,它的定义方式及其各域的含义如下:typedef struct tagMSG HWNDhWnd;/ 窗口对象的标识符,该条消息传递到它所标识的窗口上 UINT message;/ 消息标识符,标识某个特定的消息 WPARAMwParam;/ 随同消息传递的16位参数 LPARAMlParam;/ 随同消息传递的32位参数 DWORD time;/ 消息产生的时间 POINT pt;/ 产生消息时光标在屏幕上
23、的坐标 MSG;typedefMSGFAR*LPMSG;其中的POINT类型的定义是:typedefstructtagPOINT Int x; /* X坐标 */Int y;/* Y坐标 */ POINT; typedefPOintFaR*LPPOINT;WIndows.h在定义大部分类型的同时,还定义了该类型的指针类型。例如,上例中的LPPOINT和LPMSG等,其中字母前缀LP表示远指针类型;若使用NP作为一个类型的前缀,则表示近指针类型;若使用P作为一个类型的前缀时,则表示一般的指针类型,这时由编译程序时所使用的内存模块决定这种指针是远指针或是近指针。在WIndows.h中说明的大部分指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb_ 编程
限制150内