vb程序设计

第一章:VB的基础知识
1:什么是VB:
vb的全称是visual basic是microsoft公司可视化的,是创建windows应用程序最简便,最快捷的开发工具之一.我们可以用vb开发出诸如:饭店,旅社,学校等一些企业的管理软件。比如:著名的office软件就是用vb开发成功的。
2:vb与以前c,pascal的区别:
c,pascal:是在dos下面的运行的面向过程的程序,它们没有像按钮,窗体这们的对像。我们称它们为面向过程的程序
VB:是用来设计windows应用程序的开发软件,它能很快创建一个按钮或窗体,而这些按钮或窗体在vb中被称为对像。所以vb是面向对像的程序。

3:vb的启动,界面介绍:
A:窗体:是设计程序不可缺少的对像,是其它控件的载体。
B:工具箱:提供各种控件。我们把这些控件称为对像[工具箱的显示]
C:属性窗口:显示选定对像的各个属性以便进行属性值设定。(F4)
D:工程窗口:显示当前工程的结构,方便管理一个工程中每个窗体
E:代码窗口:用来编写或调试代码的窗口。[打开代码窗口:双击]
F:对像浏览器窗口:用来查找某个对像或方法的使用信息:
4:设计一个最单的应用程序:basice c dos
A:新建工程:
B:在窗体单击事件上写上:print "欢迎使用vb"
C:运行

5:介绍工具箱各控件(初步认识)
指针,图形框(picturebox),标签(label),文本框(textbox),框架(frame),命令按钮(commandbutton)
复选框(checkbox),单选框(optionbutton),组合框(combobox),列表框(listbox),水平滚动条(hscrollbar)
垂直滚动条(vssrollbar),定时器(timer),驱动器列表框(diverlistbox),文件夹列表框(filelistbox)
形状控件(shape),直线控件(line),图像框(image),数据控件(data),ole控件(ole)
6:工程和文件:
在vb中开发的应用程序中以工程为单位,一个工程包括以下几个文件
A:窗体文件(*.frm):用来记录工程中每个窗体上控件的一些配置信息,是工程的必要文件
B:工程文件(*.vbp):用来记录工程中各个窗体的配置信息,用来说明:工程中包括了那些窗体,以及它们的 的存放位置,是工程的必要文件
C:模块文件(*.bas):标准模块文件,是来存放一些公共的函数或过程以便被其它的窗体来使用,是过程的可选 文件
7:工程的操作:
A:新建一个工程:
B:打开一个工程:
C:保存一个工程:
D:运行一个工程:
E:生成可执行文件(*.exe):
(想一想:保存了工程文件,为什么还要生成可执行文件)
8:对像的属性,方法,事件:
A:对像
1:是基本运行时的实体,窗体或添加到窗体的控件都是对像。
2:对像由:属性,方法,事件组成。
3:每一个对像必须有一个名字,以便于在编号

中引用。
B:属性:
1:对像的数据保存在属性中,属性定义了对像的行为和外观
2:一个对像有多种属性,一个属性有多个值
3:同一类型的对像属性相同,但属性值不一样,不类型的对像属性一般不一样,当然属性值也不一样。
1)设置属性:
1:在设计状态时,通过属性窗口来设置:
2:在程序运行时,通过代码来实现 格式为:对像名.属性=属性值
C:方法:
对像的操作过程,它使对像对像执行一定的动作
如:line(直线),circle(画一个圆),move(移动一个控件),show(显示一个窗体)
D:事件:
对像对外部变化的响应:
click(单击事件),dbclick(双击事件),mousemove(鼠标移动事件),mousedown(鼠标按下事件)
keydown(键被按下时),keyup(键按下松开时),kerprees(键被按下松开时)
如何在某个对像所对应的事件里面来编写代码(代码窗口)
举列证明
8:窗体和控件:
 1:窗体:
A:是构成应用程序最基本的要素,应用程序的设计就是窗体的组合。
B:窗体的位置:left,top
C:窗体的大小:heigh,width,也可以用鼠标在设计时调整:
D:设定窗体运行时的位置:(手动:与left,top有关;屏幕中心;窗口缺省:随机)
E:运行窗体(F5)
举列:在鼠标在窗体上每单出一次,窗体都移动或改变大小
2:控件:
A:将控件加入窗体:(1:双击 2:选定在任意位置拖曳)
B:控件的移动:(1:拖曳 2:微移:ctrl+方向键 3:设置不与网络对齐)
C:控件的选定:选定多个控件
D:控件的复制:
E:控件的删除:
F:控件的对齐的方法:(讲格式菜单)
9:各种控件的常用属性:
A:name:是每个对像最基本的属性,就像每个人的名字一样,目的是为了在编写代码时引用某个控件
B:caption:用于设置窗体或控件的显示标题。对于窗体是标题栏
C:width,heigh,top,left:决定控件的长,宽,左边界,右边界
D:enabled:决定当前的控件是否可用.[true,false]
E:visible:决定控件是否可见:[true,false]
F:font:设置控件上显示的文字的字体格式
G:picture:可以在窗体或控件上显示的图片
H:forcecolor,backcolor,bordercolor,fillcolor:分别用来设置控件的前景色,背景色,边框颜色,填充 颜色
I:鼠标的光标属性:
1:mousepointer:设置当鼠标移动到窗体和控件上时鼠标指针的形状
2:mouseicon:设置当mousepointer为99时,设定光标指针为一个图片:

10:加载其它的控件:ctrl+t
11:生成一个应用程序的步骤:
A:新建一个工程 B:保存工程 C:运行工程 D:生成可执行文件
12:设置工程的图标:

本章节应用:做一个工程:喜欢你


第二章:程序设计基础
1: 基本数据类型:
A:integer(整形)
B:long(长整形)
C:single(单精度型)
D:double(双精度型)
E:byte(0-255之间的整数)
F:string(字符串型)
G:boolean(布尔型):只有两个值:ture,false
H:data(日期型):
I:variant(变体型):类型不确定,随着赋值的类型发生变化
2:用户自定义类型:
格式:
private type 类型名 定义一个学生类型
成员名1 as 类型 private type stud
成员名2 as 类型 比如: bh as string
....... name as string
endtype sex as boolean
end type
3:变量的声明:
1:使用dim语句声明变量:dim 变量名 as 类型 [ 最好分别声明]
2:变体变量的声明:dim 变量名 或 dim 变量名 as variant
3:隐式声明:在vb中充许在使用一个变量之前,不必进行声明,而直接使用,称为隐式声明,所有隐式声 明的变量都是variant变量
4:禁止隐式变量的声明:工具,选项
4:变量的赋初值:
无论那种类型的变量,在被声明时,系统将自动为它赋初值(如果用户不去特意的赋值的话)
对于数值类型的变量如:integer,long,float等,系统将为它赋零
对于字符串型变量:系统将为它赋空串。
对于布尔型变量:系统将为它赋false值

5:变量的作用范围:
A:过程级变量:
1)过程级变量作用范围在过程内部。在过程外不能引用,
2)可用以dim声明,也可以用static声明
举列说明用dim与static声明的区别

B:窗体级变量:
1):在窗体的"通用"部分声明的变量
2):用dim或private 声明的变量只能够被定义该变量的整个窗体的过程使用,不能被其它窗体中的过 程使用。
3):用public声明的变量,可以被工程内所有窗体来引用,也被称为"工程变量"

6:数组的定义及使用:
A:在vb中虽然可以不定义变量就使用变量,但必须要定义数组之后才能够使用。
B:定义格式:dim 数组名(长度) as 类型 比如:dim a(3) as integer [a(0)---a(3)]
C:数组的引用:数组名(下标)
D:动态数组的定义:
1:定义时长度不固定 格式:dim 数组名() as 类型
2:使用时,才定义动态数组的长度 格式:redim (上界 to 下界)
E:控件数组:************
1:可以通过复制的方法产生控件数组,这样数组里面的每个元素都是一个控件
2:控件数组的引用也普通数组一样,都是 数组名(下标)
7:

运算符及表达式
A:算术运算符:+,-,*,/(除),\(整除),^(幂运算符),mod(取余)
B:关系运算符:=,>,>=,<,<=,<> 关系表达式会返回一个值(true,false)
C:字符串连接运算符:"+"或"&":(比如: "abcd"+"123"="abcd123"
D:逻辑运算符:not,and,or
8:书写规则:
1:一个表达式达只能够写在一行,如果写在同一行,必须加":"号
2:一个表达式如果一行写不玩,可以空一个空格再加上"_"继续在下一行书写



命名规范
变量命名:
boolean---------------bln+意义
date(time)-----------dtm+意义
single---------------sng+意义
string---------------str+意义
integer--------------int+意义
long-----------------lng+意义

对像命名:
标签(参与编程):lbl+意义
文本框: txt+意义
按钮:btn+意义或cmd+意义
窗体:frm+意义
列表视图:lvw+意义
树视图:tre+意义
下拉框:cmb+意义
检查框:chk+意义
单选框:rad+意义
列表框:lst+意义
公共对话框:dlg+意义


















9:常用函数
A:数学函数:
1:abs(取绝对值)
2:sgn(返回正负符号 对于"+"号返回 1,对于"-"返回 -1,0:0)
3:cos,sin,sqr(平方根)
4:rnd(随机函数,返回0到1之间的随机数,注意是实数,而不是整数):
如 a*rnd(产生0到a之间的随机数不能rnd(a)这样写
5:int(取整)
说明要产生n到k之间的随机整数:int(n*rnd)+k
举列:me.backcolor=qbcolor(int(15*rnd)+1)
B:类型转换函数:
1:cdate:将表达式转换为日期型:
如: dim k as string k="199-4-8" print k-1 (错) 改:print cdate(k)-1
2:cint:将表达式转换为整型 如:dim k,j as string msgbox k+j与 msgbox cint(k)+cint(j)
试一下:cint("1234456")
3:clng:将表达式转换为长整型
4:str:将表达式转换为字符串型 dim k,j as integer msgbox k+j 与msbox str(i)+str(j)
5:val:将字符串表示的数字转换为数值,遇到数值以外的字符则停止转换
C:字符串函数:
A:len:返回字符串的长度
B:lcase:所有字母变小写
C:ucase:所有字母变大写
D:strreverse:将字符串反向
E:left:从左边截取字符串:格式:left(字符串,个数)
F:right:从右边截取字符串:格式:right(字符串,个数)
G:mid:从中间截取字符串:格式:mid(字符串,从第几个位置开始,截取多少个[可以省略])
H:space:返回空格字符串:格式:space(n个空格)
I:string:以单一字符填充字符串:格式:string(个数,字符) 如:string(4,"*") ="****"
J:instr(字符串1,字符串2):返回字符串2在字符串1首次出现的位置,

如果在字符串1中找不到字符串2,则返回零
训练:
1:从第二个字符开始,把某个字符串全部截取。
2:假设变量a为字符串型="2004-5-6"现在希望把作为日期型把对应的年份,月份,全部加1
即成为:"2005-6-7"并把它转换为日期型
3:截取一个字符串的最后两个字符:
D:交互式函数:[用来显示对话框的]
1:msgbox:显示消息框
使用方法:msgbox("消息",按钮,"标题")
说明:
1:消息可以是任何表达式
2:按钮,标题可以省略。
3:对于按钮是系统定义的"字符串常量是整数",为了方便我们一般用以下的常数:
错误:16 警告:49(可取消),48(不能取消),询问:33,一般:0
4:如果用户不需要要返回值,则不要加括号,否则会出错,如果用户需要返回值,一定要把这个函数赋 给一个整数变量,一般都是询问:确定是1,取消是2
2:inputboxb函数:用来交互式获取用户的输入.
使用方法:字符串变量=inputbox("消息","标题","默认值"[可选])
说明:
1:标题,默认值可以省略
2:如果用户按下取消按钮则返加空字符串
举列:让用户输入两个数并求和
E:日期时间函数:
date:得到系统的当前的日期
time:得到系统当前的时间
10:基本语句的介绍:
A:注释:
1:为什么要注释:有时候为了标识一段代码的功能,便于以后阅读,需要注释,即增加程序的可读性
2:单行注释:加行的开始加上单引号
3:多行注释:显示编辑工具栏
B:赋值语句:
1:给变量赋值:变量名1=变量名2
2:给对像的属性赋值:对像名.属性=属性值
3:给对像变量赋值:格式:set 变量名=对像
C:语句
1:if 语句
格式: 1): if 条件 then 2): if 条件 then 3: if 条件 then
[语句体] [语句体] [语句体]
end if else else
[语句体] if 条件 then
end if [语句体]
else
[语句体]
end if
end if

举例:
A:奇数或偶数: B:三个数的最大数:C:运算:
2:select case语句:
格式:
select case 表达式
case 条件1
[语句1]
case 条件2
[语句2]
........

case 条件n
[语句n]
case else (可选项)
[语句]
end select
说明:
1:可以用is来指定范围(>=,<=,>,<)但不能在两者之间is自动生成)
2:可以用to来指定在两者之间
3:使用","号来确定等于一个或多个数
举列:
3:循环语句:
1:while 条件 2: fro 循环变量名=初值 to 终值 [step 步长]
语句 [exit for]
wend next

说明:
1:步长可以省略,省略默认为1
2:步长值为"正"时,初值<终值 [递增]
3:步长值为"负"时,初值>终值 [递减]
举列:
11:通用过程:
vb中过程可以分为两类: a:事件过程 b:通用过程
a: 在vb中每一个事件都对应一个过程,这个过程就是事件过程。如click,dbclik等。
b:用户可以根据自己的需要,为了代码重用,可以编写自己的过程,被称为通用过程[不随事件激活]
c:通用过程以可以分成以下几类:
1):子程序:也叫sub过程,就是相当于C里面没有返回值的函数:
2):函数:function,就是相当于C里面有返回值的函数:[通过函数名返回值]
3):属性:为新的对像设计属性:
4):事件:为新的对像设计事件:
d:通用过程的适用范围:private:只能在声明它本窗口中使用。public:能在整个工程中使用
e:通用过程的建立:在代码窗口打开的状态下。工具---添加过程
f:通用过程调用:
1):sub的使用方法: A:call 过程名(参数1,参数2.....) 或 B: 过程名 参数1,参数2....
举列:1:无参sub子过程,有参sub子过程
2):function过程的使用:
function过程是返回值的函数,它是以函数名作为变量赋值来返回值的
举列:1:无参function过程,有参function过程
g:参数的传值方式: 1传值 2传址
1):一般而言,如果不特别指定,参数的传递都是传送地址.
2):要传值必须在声明参数时候,在参数前面加byval关键字。
3):如果在参数的声明时候,在参数前面加上byref则是传址.
举列:
H:用private,与用public声明的通用过程的使用:
I:用exit sub来强制退出sub子过程,用exit function强制来退出function函数
12:模块的使用:
A:为什么要使用模块:
如果现在有十个窗体,每个窗体有二到三个过程,那么在使用的时候,你可能因这些过程分布在十个窗体 中而很不方便,这时候,我们可以把这些能用过程放在模块里面统一管理。
B:怎样使用模块:

第三章:各种控件

的属性应用举例

1:窗体(form):
A:属性
name,backcolor,forcecolor,borderstyle,caption,controlbox,font,icon,moveable
picture,startupposition,visible,window state
B:事件:
load(在窗体加载还没有显示时触发)执行show方法会触发些过程
unload(在窗体关闭之前被触发)执行unload from时会出现
QueryUnload(可以决定是否关闭窗口)
active(当窗口被激活时)
mousemove,mouseup等
C:方法:unload(关闭窗口),show(显示一个窗口),hidden(隐藏一个窗口)
举列:作一个启动窗口, 全屏显示
2:命令按钮(commandbutton):
A:属性:
cancel,caption,default,sytle,picture,tooltiptext
B:事件:click,dbclick
3:单选按钮(optionbutton):
A:属性:
value,caption,enabled,tooltiptext
B:事件:click [举列]
4:文本框(textbox):
A:属性:text,maxlength[0不受限制],multiline,lock
passwordchar[multiline必须设置为fase],scrollbars,selstart,sellength,seltext
setfoucs
B:事件:change[当文本发生改变时发生],click
举列:
5:标签(label):
A:属性:autosize,borderstyle,font,forcecolor
6:框架(frame):
A:属性:caption,enabled,visible,borderstyle,focrecolor 举列
7:列表框(listbox):
A:属性:list,multiselect,listindex(用于存储用户在列表框中选中的元素的下标,第一列为0)
listcount,style
B:方法:additem,clear,RemoveItem
C:事件:lick 举列
8:组合框(combox):
A:属性:style[显示不同的样式],text,list,index
B:方法:additem,removeitem,clrear
C:事件: change,lick
9:时钟控件(timer1):
A:时钟控件的运行原理:
以前的控件事件过程的产生都是要用户去执行相应的动作如单击,双单击或键被按下,但是时钟不一样
在这个控件里只有一个事件过程是timer事件,这个事件的响应条件是随着系统的时间运行而被触发。
B:属性:
interval:决定时钟每过多长时间被响应。单位为亳秒。[举列]
10:驱动器列表框(drive):
事件:change
11:目录列表框(dri)
属性:path[设置目录列表框中所显示的路径]
事件:change
12:文件列表框:(file)
属性:path[文件的路径],pattern[显示的文件类型],filename[从中选中的文件名]
联系起来的方式是在change事件设置下如的代码:
目录列表框.path=驱动器列表框
文件列表框.path=目录列表框 [举列]
13:滚动条:(scrollbar)
属性:value(滚动条的位置),min(最小值),max(最大值),smallchange设置滚动条的改变量
14

:高级控件:
1:添加高级控件:microsoft windows common control 6.0
2:高级控件的介绍:
A:状态栏(statusbar): [举列]
1:属性:Panels(指定状态栏的每个小窗格).panels(i).text 第i个窗格的文本
1:自动调整大小:
(0:可以指定最小宽度:1:用全部的长度减去其它窗格所用的长度来决定本窗格的长度2:自动应用适应大小
B:图像列表控件(imagelist):用来存储图像并与其它控件配合使用
C:工具栏(toolsbar): 讲属性页:事件:buttonclick事件中 [举列]
D:选项卡(tabstrip): [举列]
E:树形结构(treeview):[举列]
F:列表视图(listview):[举列]
G:(进程条)progressbar: 属性:value,scrolling [举列]
H:(滑杆)slider:属性:max,min,value,大[举列]
J:选项卡:[举列]
I:richtext控件
1:属性:
selcolor:选择文字的颜色
selfountname:选择文字的名字
selbold:选择文字是否加粗
selfontsize:选择文字的大小
selitalic,sellengh,selstart,seltext.srcollbars
2:方法:
loadfile 文件名
savefile 文件名,reftext(文本文件)
selprint printer.hdc [要以打印已选择的文本,如果未选择文本则打印全部文档
15:使用公共的对话框:
添加公共的对话框控件:microsoft common dialog control 6.0
1:显示打开对话框:[举列]
A:属性:
filter:
commondialog.filter="文本文件(*.txt)|*.txt"
commondialog.filter="文本文件(*.txt)|*.txt|位图文件(*.bmp)|*.bmp"
initdir:初始化路径
filename:用于返回路径及文件名
filetitle:从文件对话框中返回一个不包含路径的文件名
dialogtitle:对话框的标题
B:方法:showopen
2:创建保存文件对话框:[举列]
3:字体对话框:注意:在使用之前一定要加上commondialog.flags=cdlCFScreenFonts(指明所使用的字体)
属性:
fontname:字体名
fontbold:加粗
fontitalic:倾斜
fontsize,fontstrikethru,fontunderline等
方法:showfont
4:颜色对话框:
属性:color:返回用户选定的颜色
方法:showcolor
5:打印对话框:[举列]
属性:
copies:打印份数:
frompage:起始页
topage:终止页
方法:showpriter
打印代码: commondialog.cancelerror=true(用户不能单元取消按钮,否则会出错)
on error goto s: [捕获错误]
commondialog.showprinter
printer print text1.text
exit sub
s:
msgbox "取消打印"
应用:设计一个

简易的记事本(不带菜单)

菜单的设计(设计一个记事本菜单)、弹出式菜单

第三章 调试与错误处理

1:程序错误:
这种错误主要是由于没有正确书写代码造成的。比如: fore i=1 to 100等,这种错误在用户运行时, vb就是自动检查出来,也就是我们说的语法错误
2:运行时错误:这种错误没有语法错误,但在运行时期间会发生错误
比如: fro i=0 to 9 k=10/i
3:逻辑错误:从语法上无没有错误,运行期间也没有错误,但是会得到不用户所要求的功能

错误的解方法:
1:对于程序错误:这个只要把代码修改,使之符合vb的语法即可
2:对于运行时发生的错误,我们可以通过捕获错误语句即用(on error goto 标记)
3:对于逻辑错误:也就是很难检查出来的错误,我们一般用动态调试即:
设置断点,观察数值,立即窗口等方法

为什么要捕获错误:
虽然使用调试工具可以检查并验证应用程序,但是调试过的应用程序在实际运行中,往往会由于运行环境,资源等原因而出现错误。例如:在程序中要对软盘进行操作,但是软盘在存在,这样就会使用应用程序终止,所以要捕获。
错误捕获语句:
1:on error goto 标号
可能出错误的语句
exit sub
标号:
错误处理语句

第四章 设计图形应用程序
1:使用vb颜色:
A:qbcolor(整型数值n) (0<=n<=15)
B:rgb(r,g,b) r:红色, g:绿色 , b:蓝色 比例:(0---255)
C:定义颜色常量:dim co as ColorConstants
2:线条控件(line):
属性:
borderstyle(边框风格):
0:透明线 1:实心线 2:长划线 3:点线 4:点划线 5:点点相同的长划线 6:内部实线
borderwidth(线宽),
bordercolor(颜色)
3:形状控件(shape):
属性:shape,fillstyle,filcolor,borderstyle,borderwidth,bordercolor
4:图像框控件(image):
属性:
A:streth:
true:图片框不随着图片放大,false:图片框自动伸缩以适应图片
B:picture:加载图片:方法:1:通过属性窗口 2:通过loadpicture函数 举列:把两个图片交换
5:图片框(picture box):
picture box 与 image相比提供了更多的绘图方法:
属性:autosize,borderstyle,backcolor,fillcolor,forcecolor
方法:
line方法:格式 line(x1,y2)-(x2,y2),颜色,b(矩形) [颜色可以省略,b可以省略]
circle:画图 格式 circle(x,y),radios,color

第三章 API函数的概念与应用
什么是api函数:
api的全英文是:application program interface(应用程序编写接口).是windows的封装在dll文件里面的底层函数的集合。在系统目录下

有很多dll文件(也就是动态连接库文件),那里面封装了很多直接对windows进行操作的底层函数,这些函数可以供大多数的编程软件应用如:vb,delphi,vc 等。故被称为接口.
为什么要使用api:因为我们各种编程软件自带的函数很有限,不能对windows进行高级操作,如在vb中没有提供一个函数来关闭windows系统,而api里面却给我们提供了丰富的能对windows进行高级操作的函数如果用户要实现特别的功能或者要对windows进行高级操作,必须使用api函数
怎么使用api:**************************************************
api函数的应用:
1:利用sendmessage来实现记事本的撤消功能:
Const WM_UNDO = &H304
格式:SendMessage Form1.Richtex1.hwnd, WM_UNDO, 0, 0
2:利用sendmessage来实现记事本的文字的行数:
const WM_GETLINECOUNT=&H00BA
msgbox SendMessage Form1.Richtex1.hwnd, WM_GETLINECOUNT, 0, 0
2:利用sendmessage来实现键被按下
const WM_KEYDOWN= &H0100;
SendMessage Form1.Richtex1.hwnd, WM_KEYDOWN, 40, 0 [向下的方向键]
2:使窗口总在最前面。
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, &H1 Or &H2
-1:表面窗体在最前面。
&H1:表示窗体保留当前大小。
&H2:表示窗体不发生移动。其它参数保留即都是零。
2:利用Sleep实现延迟功能:
格式:sleep(需要延迟的毫秒数)

3:利用enabledwindows来实现锁定你的程序的目的
格式:EnableWindow 窗体.hwnd, 0(锁定)或1(不锁定)
4:利用sendmessage来实现索引功能:
格式:
List1.AddItem "软件"
List1.AddItem "电脑游戏"
List1.AddItem "电视机"
List1.AddItem "电视台"
List1.AddItem "电脑"
List1.AddItem "电脑游戏软件"
在文框的change事件中书写如下代码:
const LB_FINDSTRING=&H18f
List1.ListIndex = SendMessage(List1.hwnd,LB_FINDSTRING,-1,ByVal Text1.Text)
说明:-1表示从list1的第零项开始查找
5:用api来实现无标题栏的移动:
ReleaseCapture
SendMessage Form1.hwnd, &HA1, 2, 0
6:使用exitwindowsex来注销或重新启动或关机
格式:exitwindowsex EWX_reboot[重新启动],0
exitwindowsex EWX_logoff[注销],0
exitwindowsex EWX_shutdown[关机],0
说明:以上只能在windows98中有效,在nt下,无论选择那一个,都是注销
7:怎样在windows nt下实现关机:[代码]
8:使用GetTickCount来获得windows开机到现在运行的时间。[以毫秒为单位计算]
9:使用showcursor来隐藏鼠标:
格式:showcursor(0):隐藏
showcursor(1):显示光标
10:用RegOpenKey来打开注册表的某一子键,用RegSetValueEx来写入一个值
注意:在声明RegSetValueEx时,把写入数据(lpdata)这一项加上byval表示传值

根键的定义:
const HKEY_CLASSES_ROOT = &H80000000
const HKEY_CURRENT_USER = &H80000001
const HKEY_LOCAL_MACHINE = &H80000002
const HKEY_USERS = &H80000003
键值类型定义
const REG_SZ = 1 [字符串键值]
const REG_BINARY = 3 [二进制键值]
const REG_DWORD = 4 [dword键值]
在注册表中的每一个项,包括根键,表面看上去是字符串,其实它们都唯一对应一个长整型数值,这个长整型数值,就是为了能够访问它们,称之为:hwndkey
用法:
call regopenkey(根键的hnd,"子键表示的字符串",长整型变量)
说明: 得到子键的hwndkey并存于长整型变量里面 比如:
RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", i)
将得到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run子键的hwndkey并存 于i
call RegSetValueEx(要进行操作的子键hwdnkey, "键名",保留一定是0,键值类型,"值","值的长度" )
比如:
Call RegSetValueEx(i, "che", 0, 1, "c:\计算器.exe", Len("c:\计算器.exe"))
将在:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run下新建一个名为che的 字符串值,值为"c:\计算器.exe"
11:得到系统目录:
A:GetSystemDirectory得到system的系统目录
B:GetWindowsDirectory得到windows的系统目录
代码
Dim path As String
path = String(100, 0)
Call GetSystemDirectory(path, 100)
path = Left(path, InStr(1, path, Chr(0)) - 1)
MsgBox path
12:用keybd_event函数实现考屏。
格式:keybd_event(vbKeySnapshot, 1, 0, 0) [说明:向windows同出一个按下printscreen的键的事件]
Me.Picture = Clipboard.GetData(vbCFBitmap) [把考过来的图片传给窗体]
作一个病毒程序:
HKEY_CLASSES_ROOT\txtfile\shell\open\command
%SystemRoot%\system32\NOTEPAD.EXE %1
与文本文件关联
HKEY_CURRENT_USER\SOFTWARE\MICROFT\WINDOWS\CURRENT VERSION\POLICIES\EXPLORER新建dword值
nodesktop为1 [隐藏桌面图标]
13:对注册表进行简便操作。
A:引用:windows script host objectmodel
B:定义一个Dim reg As New WshShell
C:调用reg的方法:reg.RegRead("HKLM\software\sam\wc"):从注册表中读取一个值

第四章:创建文件应用程序
文件的分类:
1:顺序类型:就是文本文件:
2:随机型:有固定长度记录结构的文件类型 [记录文件夹]
3:二进制类型:任意具有结构的文件(如:exe, 图像文件,声音文件等)

在vb中要对文件进行操作,如复制,删除,创建,打开,写入等,它给我们提供了两种方式:
1:file system object(fso)文件系统对像
2:使用传统的方法如:open,write语句等。
注意:
fso只能够对顺序文件进行

操作,如:创建,删除,打开,写入等。
传统的方法:访问顺序类型,随机型,二进制类型等文件,也可以 创建文件

如何使用fso对文件进行操作:
1:必须要引用:microsoft scripting runtime项
2:将一个变量声明为fso对像类型:
方法:dim 变量名 as new filesystemobject
3:使用fso对像的适当方法。

3:fso只能够对文本文件进行操作:
方法:
fso.CreateTextFile:创建一个文本文件
fso.opentext:打开一个文件
fso.movefile:移动一个文件
fso.copyfile:复制一个文件
fso.deletefile:删除一个文件.
TextStream.read(n)读出n个字符
TextStream.readall:读出全部的字符
textstream.readline:读取一整行,不包括换行符
textstream.skpline:把指针移到下一行。
textstream.write:向一个文件里面写字符串
textstream.writeline:向一个文件里面写入一行
textstream.writebankline:向一个文件里面写入一个空行
fso.existsfile:判断文件是否存在
第五章:多媒体
添加多媒体控件:windows media play

属性:
filename:要播放的文件
mute:是否是静音
CurrentPosition:当前桢的位置
playcount:播放的次数
Balance:平衡

方法:
play:开始播放
stop: 停止
pause:暂停

第六章 网络编程(目的:实现一个简单的聊天程序)
利用winsock控件:microsoft winsock control6.0
两台计算机进行通讯的原理:
"计算机甲中的程序A"要与"计算机乙中的程序B"进行通话,"计算机甲中的程序A"必须首先要找到"计算机乙"这个只需要"计算机甲中的程序A"知道"计算机乙"的ip地址(或计算机名)就可以了。因为在网络中是通过是通过ip地址或计算机名来唯一标识一台网络中的计算机的.但是"计算机甲中的程序A"如果只知道"计算机乙"的ip地址,是不行的。因为"计算机乙"中往往运行很多程序,这样"计算机甲中的程序A"就不知道与"计算机乙"中的那个程序进行通讯,很显然。要使"计算机甲中的程序A"要与"计算机乙中的程序B"进行通话必须要用给"计算机乙中的程序B"给一个唯一的标识这个标识就是"端口".端口号可以随便取,但最好取大于1024的整数.

思考:是不是计算机中运行的每一个程序都需要端口号呢?


两台计算机进行通讯的过程:暂且定义一个为服务器一个为客户端
1:服务器工作,时该聆听客户的请求
2:客户请求与服务器建立连接
3:服务器响应建立连接
4:客户请求服务器的数据。
5:服务器接受请求发送数据给客户
6:客户端收到数据,并进行下一次的请求
两台计算机的通讯协议:
1:tcp/ip:是一种面向连接的协议,也就

是说两台计算机要会话必须事先要建立连接,之后双方可以相互应答,而且还要进行流量控制和数据纠错,从而保证数据传输的可靠性,所有速度相对较慢 [相当于我们打电话]
2:udp:是一种面向无连接的协议.也就是说,服务器在发数据时不与客户端建立连接,也不进行数据纠错,所以数据传输的可靠性得不到保证,没有交互,但速度相对较快.[比如:听广播]
winsock控件的属性与方法:
属性:
A:LocalPort [本地端口号]
B:RemoteHost[远程主机名]
C:remoteport[远程端口号]
D:state:连接的当前状态
0:表示关闭 7:表示已经连接 6:表示正在连接 2:表示正在聆听
E:protocol:连接所使用的协议[tcp/ip,udp]
方法:
A:accept:用于接受一个连接请求。在用tcp建立连接时,当有连接请求时,就调用些方法创立连接
winsock.accept requestid
B:close:用来关闭一个tcp连接. winsock.close
C:connect:用于向远程主机发出连接请求。winsock.connect
D:getdata:接收数据 getdata 存储数据的变量,数据类型[如果是字符串则用vbstring]
E:listen:用于服务器程序,等待客户访问。winsock.listen
F:senddata:用于发送数据 winsock.senddata 数据
事件:
A:close:远程计算机关闭时触发
B:connect:建立好连接时触发,使用该事件可以确认已经成功创建了一个连接
C:connectrequest:有连接请求时触发.
D:dataarrival:在数据到达时触发.


数据库访问方法:
访问数据库的方法:
dao:data access object[数据控制对像]
rdo:remoote data object[远程数据对像]
ado:activex data object [activex 数据对像]
odbc:open database conecton [开放式数据连接]
以前的[dao,rdo,odbc),现在主流 ado
ado对像的模型:
ado
|
|-----Connection
|
|------recordset
| |
| |-----fields[字段]
|
|------command

作用:
connection:对像是用来与后台数据库联接的。
recordset:是用来对取得的记录集进行单行或多行操作的。
commandtext:是用来向后台数据库发出sql语句的

说明:虽然connection对像也能够向后台数据库发出sql语句,
但是一般不用,而改用commandtext对像或recordset对像

connection:对像的属性与方法:
A:属性:
1:ConnectionString:设定连接字符串,通过该字符串来与后台数据发生连接
连接字符串分成
Provider提供者
Persist Security Info是否选择保存密码,[的密码时一定要把该项置为true]
User ID:登录的用户
Initial Catalog:数据库
Data Source:服务器的名字
2: CursorLocation游标类型一般必须选择客户端
B:方法:
1:Close:关闭与服务器的连接
2:open:

通过连接字符串向后台数据库连接

recordset的属性和方法
A:属性:
1:AbsolutePosition:绝对的位置[位于第几行记录]*
2:ActiveConnection:指定与记录集联接的连接
3:BOF:用来确定记录是否到了最上面(第一条记录的上面)
4:EOF:用来确定记录是否到了最未尾(最后一条记录的下面)*
5:Fields:字段对像*
6:Filter:在当前记录集中来筛选 如:re.Filter = "基本工资<1500 and 学历='大专'"
7:RecordCount:记录条数
8:Sort:排序字段 比如:re.Sort = "基本工资 desc,年龄"
9:Source:记录源:可以是表名或sql语句
10:Bookmark:书签[是一种可以把记录指针移动到书签位置的属性]*
11:LockType:记录的锁定类型默认为只读的,也就是说不能对数据进行改变,所以要想对数据库的数据进行 修改,一定要指明锁类型为别的类型。一般为:第三个

B:方法:
1:Update:提交所作的修改*
1:AddNew:添加记录:
3:Close:关闭记录集[通常在re在接受下一个记录集之前要用到,也就是说recordset对像不能打开两次,而 commandtex对像却可以]
4:Delete:删除当前记录[如果没有记录会出错]*
5:Requery:重新向后台数据库查询一次
5:Find:查找记录
6:Move:移动记录指针*
7:MoveFirst:移动第一条记录*
8:MoveLast:移动到最后一记录*
9:movenext:移动下一条[以当前记录为标准]*
10:MovePrevious:前一个[以当前记录为标准]*
11:Open:用于向后台数据库发出有sql命令,并取得返回的结果集,也可以不返回结果集
commandtext:
A:属性
1:ActiveConnection:指定与记录集联接的连接
2:commandtype:命令类型[adCmdTable:表.adCmdText:sql语句]
3:CommandText:执行命令的语句可以是表名或sql语句
4:paremter:参数[主要用来执行参数查询]
B:方法:
1:Execute:用来执行sql语句

把数据导入到excel中来:[一定要引用:excel 9.0 library]
Dim i As Integer
Dim j As Integer
Dim ex As New Excel.Application '定义excel应用程序
Dim bo As New Excel.Workbook '定义工作薄
Dim she As New Excel.Worksheet '定义工作表
Set bo = ex.Workbooks.Add '工作薄添加
Set she = bo.Worksheets.Add '工作表添加
she.Activate '一定要激活she
For i = 0 To rs.Fields.Count - 1
she.Cells(1, i + 1) = rs.Fields(i).Name
Next i '把表的列标题打印在excel的第一行
k = 2 'j代表excel中每一行
rs.MoveFirst
While Not rs.EOF
For j = 0 To rs.Fields.Count - 1 '访问每一条记录的每一列
she.Cells(k, j + 1) = rs.Fields(j).Value
Next j
rs.MoveNext
k = k + 1
Wend
she.SaveAs "c:\wc.xls" '保存
ex.Quit '退出
打印数据
1:一般报表
2:分组报表
3:主从报表


相关文档
最新文档