我有一些c语言栈的实现才能实现的功能代码 想加入到vb6.0的代码中间去 请问这有可能吗 以前听说过vb中

VB6.0图文实例教程90_vb实例教程-牛bb文章网
VB6.0图文实例教程90_vb实例教程
话题:,,
VB教程:序言-不再游戏 我们需要什么我们需要什么?当我们在一个精彩的游戏世界中游历了一番之后,或是惊叹于某一工具软件的小巧精致之余,多少总会产生些许编程的冲动。编程吗,在以前如果你对电脑还是一个门外汉,那实在是一件可望而不可及的事情。如果运用基于DOS下的编程语言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。编程是需要天赋的,你必须在大脑中对整个程序有一个清晰的轮廓,一个高效的流程,这并不是每个人都能做到的,你必须思之慎之,这也使编程变成一件最枯燥无味的事情。但在第四代计算机语言(可视化编程)出现后,可以确切的说它开发了人们的更多天赋,并不局限于那些头脑异常清晰的人,每一个人都可以发现自己也可以编出一些从前不敢问津的程序,想象力的充分发挥才是第四代语言的精粹。 Visual Basic(以下简称VB)可以说是可视化语言的先驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它已经经历了五个版本,而且现在微软正在紧张的进行着VB6.0的研制、测试,这么高的更新率,不外乎说明两个问题:用户对VB的热衷,微软对VB的重视。不可否认微软对市场的预测能力是极为高明的,而它强大的技术、财力支持也使它在许多以前未进入的领域,在不长的时间内有成为最有力的竞争对手,如IE之于浏览器领域,《帝国时代》之于游戏都是最好的例证。对于VB现在也有一个很强的竞争对手DDDelphi,有人把它称作VB杀手,这显然有偏激之处,VB的确有它的不足之处,但Delphi又何尝不是呢,而且以微软对VB的倾心,VB的功能必然会越来越强大。VB的诞生VB的出现可以说是Microsoft Windows的日渐成熟的必然产物。Microsoft Windows为程序员和最终用户提供了一个共同的人机界面。对用户,Windows提供了一个图形鼠标的操作环境,该环境对所有的应用程序都一样;对于程序员,Windows提供了一组预定义工具----称之为Microsoft Windows 的软件开发工具箱(SDK),该工具能使程序员建立一个与Windows界面相同的应用程序,而且,程序员不必关心最终用户的硬件配Z情况。在这一开发环境中,程序员唯一困难的是Microsoft SDK提供了六百多个函数和与其一致的事件驱动(event-driven)编程技术。两种新方法的交叉使众多的程序员重新陷入困境,程序员不仅要掌握程序驱动编程技术和六百多个函数的功能,而且还得用C语言描述这些问题。因此一般情况下,程序员首先要掌握C程序设计技术,而后再开始学习SDK。这样的条件下就要求在Microsoft多任务环境下出现一种操作方便,使用简单的新工具----Visual Basic由此诞生。何为可视英文Visual的意思是?视觉的?,?可视的Baisc?这个名字可能抽象了点,但实际上它却是最直观的编程方法,之所以叫做?可视?,你只要看到VB的界面就会明白,实际上你无需编程,就可以完成许多步骤。在VB中引入了控件的概念,在Windows中控件的身影无处不在,各种各样的按钮、文本框、无线钮,都是控件的种类,VB把这些控件模式化,并且每个控件都有若干属性用来控制控件的外观,工作方法。这样你就可以象在画板上一样,随意点几下鼠标,一个按钮就完成了,这些在以前的编程语言下是要经过相当复杂的工作的。我的希望:我在学习VB的过程中也曾遇到了许多困难,而且用的参考书大都来自译文,毕竟美国人和中国人的表达方式有所不同。这也造成了理解上的困难,所以我想为什么我不能写一个给中国人看到VB教程呢,于是我这么做了。也曾经在杂志上发表过几篇用VB制作小程序的文章,但受杂志的限制(篇幅、内容等等)(我得听小编的),总没有一个机会系统的介绍一下VB,造成了小小的遗憾。不过,我自己的主页建好后,终于这个愿望可以实现了,利用HTML可以方便的把文字与图片结合起来,不失为一个教学良所,也希望能够得到大家的支持。 希望?VB教程?能给你我一个互相学习的机会,如果你能从中获益那将是我最大的快乐,那时你一定会发现编程比游戏有趣得多。:)VB教程:第一章-Hello World!VB6.0图文实例教程90_vb实例教程示图画,每一个控件建立的时候,系统都会给它设一个默认的名字(Name),这个PictureBox的名字就叫做Picture1,为了方便起见,我们以后的控件都使用缺省的名称。选定Picture1,在左边的属性窗口中找到Picture属性,单击会出现,点击为Picture1选一个图像文件,VB支持的图像文件有BitMap、WMF、ICO三种,微软为用户提供了一套图标文件,存放在VB目录的Icons目录下,选择Icons\misc\face01.ico文件,这样图标就被装入了Picture1。再选择Pictrue1的Autosize属性,设为1-True,则会发现Picture1以变成和图像一样大了;把BorderStyle定为0-None,去掉图片边框。用同样的方法再添加两个图片框:Picture2(Picture:face02.ico),Picture3(Picture:face03.ico)。图片框完成了,第二步,建立三个无线钮(Option Button),由于它象收音机的无线电按钮而得名),把它们的标签名属性(Caption)分别定为?悲哀?,?高兴?,?没治了?,放Z成图1_2的样子。最后我们还需要三个文本框(Text Box),分别把它们的Text属性设为??(空字符串),程序的最后界面如图1_3,这样按下菜单窗口的运行按钮,运行一下程序,还可以吧,不过现在程序还无法工作,就算是VB也不能免俗,还必须输入代码才能使程序运作。VB是一门典型的面向对象编程的语言,它的整个程序都是由事件驱动的。那么,什么是事件呢?其实,我们的生活中充满了各式各样的事件,比如说?闯红灯?这个事件的发生会导致被警察追杀、走路撞到电线杆时会痛。上面的例子虽然有些滑稽,但它可以清楚的解释事件的含义,就象你马上就能体会到的在什么地方单击鼠标时会发生什么,按下键盘时会发生什么,这就是事件,而事件就是这么容易。 要进入VB的代码设计区,只需在需要的控件或窗体上双击鼠标即可得到这样的窗口。如图1_4,每一个VB程序都由若干小程序组成,这使得用VB编程更加容易,这些小程序,分为?过程?(Procedure)和?函数?(Function),二者都可以传递参数,所不同的是函数有一个返回值,而过程没有,仅此而已。双击窗体的任何一个部分,将出现一个空的过程:?Form_Load()?,这是一个非常重要的过程,它所驱动的事件就是该窗体被加载的事件,打个比方,就象计算机启动时的批处理程序(Autoexec.bat)。 这个程序里我们要对控件进行一些设Z。我们刚才也曾对控件进行设Z,但那是在程序设Z中进行的,有时我们也需要在程序中改变某些控件的属性,通过程序代码。VB中规定,一个控件属性的访问方法:名称.属性,于是我们对本程序的控件进行如下设Z: Private Sub Form_Load()Picture1.Visible = FalsePicture2.Visible = FalsePicture3.Visible = FalseText1.Visible = FalseText2.Visible = FalseText3.Visible = FalseEnd SubPrivate表示此过程是局部的,Sub表示子过程的开始,与之相对的是End Sub表示过程的结束,Visible属性表示控件的可见性,这个属性的值有两个True和False。注意:VB里对大小写是不加区分的,而且,已定义的名称,以后再用到时,系统会自动把它变成相应的大写或小写。小知识:1.VB里的对变量及常量的规矩。变量一般为Abc的格式,常量为ABC,另外这些变量和常量名不得同VB内的关键字相同,也不可以使用一些特殊符号,这些我们将在以后介绍,注意在学习中养成好习惯,使程序便于自己和别人的浏览。2.程序书写的窍门:不要真的一句一句把程序打完,利用快捷键:拷贝Ctrl+C,剪切Ctrl+T,粘贴Ctrl+P。按下F5,运行一下程序,现在发现只剩下无线钮了。如图1_5。Private Sub Form_Load()Picture1.Visible = FalsePicture2.Visible = FalsePicture3.Visible = FalseText1.Visible = FalseText2.Visible = FalseText3.Visible = FalseOption4.Left = -2000Option4.Value = TrueEnd SubVB6.0图文实例教程90_vb实例教程Left属性表示控件离窗体左边框的距离,设Z为-2000,则在窗体内不会看到这个控件,并使之Value=True。再运行程序,一切如愿,如图1_6.注意:为什么不用Option4.Visible=False?因为,一旦设Z无线钮为不可见,那么再使它的Value为真是没有意义的,不信自己试试。下面我们可以继续进行了。在刚才的代码窗口里,将Object选择为Option1,Proc选择为Click,即得到一个Option1_Click的过程。代码如下:Private Sub Option1_Click()Picture2.Visible = FalsePicture3.Visible = FalseText1.Visible = TrueText2.Visible = FalseText3.Visible = FalseText1.Text = &再见,残酷的世界。&End Sub相同的建立Option2_Click和Option2_Click:Private Sub Option2_Click()Picture2.Visible = TruePicture1.Visible = FalsePicture3.Visible = FalseText2.Visible = TrueText1.Visible = FalseText3.Visible = FalseText2.Text = &今天心情不错。&End SubPrivate Sub Option3_Click()Picture2.Visible = FalsePicture1.Visible = FalseText3.Visible = TrueText2.Visible = FalseText1.Visible = FalseText3.Text = &Hello,World。&End Sub好,我们的开山之作完成了!按下F5,玩一下吧。这个程序虽然简单,但也用到了许多基本知识,你开始感兴趣了吗?^_^VB教程:第二章-事件、属性及数据类型VB6.0图文实例教程90_vb实例教程每个对象都有它的属性,并且?Name?属性是共有的,有了?Name?属性才可以在程序中进行调用。对于属性,可以在窗体的布局操作中完成,也可以在程序运行中改变,这取决你的需要,但有些属性是只读的,它只能在控件布局时改变。我将在以后的实例中具体介绍各个属性的作用。三、数据类型学过编程的人都知道大多数的计算机语言都规定了各自的数据类型,VB也不例外。其实,在一个最简单的程序中数据类型是可以不作规定的,也就是说,变量可以使用各种类型,但是在一个复杂的程序里,这样做就很危险,因为很可能给同一个变量赋予了不同的类型,而导致程序出错。所以,为了程序的严谨和便于查看,正确的定义数据类型是必要的。定义数据的另一个原因是,不同的数据占用不同的内存数量,譬如整型(Interger)数据占2字节,而长整型数据占4个字节,定义合适的数据类型,不管你相信不相信,它可以节省内存!1. VB常用的数据类型有:整型(Integer,表示-3之间的整数)、长整型(Long,表示-2,147,483,648至2,147,483,647之间的整数)、实型(Single,表示-3.37E+38至3.37E+38之间的实数)、双精度实型(Double,表示-1.67E+308至1.67E+308之间的实数),字符(String,每个字符占一字节,可以储存0~65,535个字符),布尔(Boolean,只有两个值True/-1,或False/0)。2. 数据类型的定义方法:定义变量最简单的方法是用?Dim?关键字,它的语法:Dim 【变量名】As 【数据类型】如:Dim Index As Integer也可以在一行中定义多个变量,如:Dim Index As Integer , Dim Number As Long把多个变量定义成同一类型可以写成:Dim Index , Number As Integer有时为了简便,也以符号进行简单的定义,作用是和上面一样的。整型可以用?%?代替,长整型可以用?&?代替,实型可以用?!?,双精度实型可以用?#?定义,如刚才的第一个例子可以写成:Dim Index% 等价于 Dim Index As Integer对于常量的定义用Const定义,如:Const COLOR=255。为了在程序中便于查阅,我们对变量和常量的写法进行规定,变量一般用小写方式,常量则全部大写。注意:使用常量的好处,对于程序中经常出现的数值,应设常量等于它,这样一是书写方便,其二,如果要改变该数值,只需改变定义常量的语句值,而不需改变每个语句,提高了效率。 数组的定义类似于变量定义,所不同的是数组需要指定数组中的元素个数,例如: Dim IntegerArray(99) As Integer这个数组中包含100个元素,脚标从0到99。也可以指定脚标的起始值,例如:Dim IntegerArray(2 to 10) As Integer这个数组含有九个元素,脚标从2到10。还可以定义多维数组:Dim ThreeD(4,2 to 5,3 to 6) As Integer上例定义了一个三维数组(4×4×4)。记录的定义记录定义是把控制权交给用户的方法,它让用户可以定义自己的数据类型,它使用关键字?Type?,方法是:Type 【数据类型标识符】&域名& As &数据类型&&域名& As &数据类型&&域名& As &数据类型&…………………………End Type例如,定义一个地址数据:Type AddressStreet As StringZipCode As StringPhone As StringEnd Type 这个地址数据里包括三个属性,街区、邮政编码和电话,可以把某数据定义成此类型:Dim MyHome As Address要调用或改变?MyHome?的值时,类似于对对象的属性的操作:变量名.域名=?……?为了简化书写重复的部分,可以用关键字?With?:With MyHome.Street=?阜成路?.ZipCode=?100037?.Phone=??End WithVB教程:第三章-VB语言VB6.0图文实例教程90_vb实例教程Rem Dim a As String 的作用是一致的。三、长语句的分行在比较早的版本中,因为没有象C等语言用?;?隔开语句与语句,VB的语句是必须写在一行里的,不过后来版本的VB里如许用分行符?_?把一个长语句分成若干行来存放。四、条件语句如果你学过任何一种编程的话,都会知道在程序里控制其流程的有两种语句,条件与循环,VB自然也不例外,其实不管哪种语言,条件和循环的样子都差不多,只不过各有各的规矩罢了。 在条件语句里,我们先来学习?If……Then……?语句。它的一般语法是:If &条件& Then&语句&&语句&………End If与C 语言不同,VB的条件语句更符合英语的语法,如果Then后面所跟的语句只有一条,可以写成:If &条件& Then &语句&Case &情况3&………………Case Else……End Select例如:Select Case a%Case 1Print ?a=1?Case 2Print ?a=2?Case ElsePrint ?a does not equal to 1 or 2.?End Select五、循环语句循环结构是计算机语言里一种重要的结构,它的应用广泛,最简单的例子是累加器的作用,还可以用于穷举法,更直观的例子是把某件事重复指定的次数,这样就不用把要重复的语句输入多次,而通过循环结构完成,非常方便。C语言里有一个?for?循环语句,VB里也有?For?关键字,作用也差不多,只是VB的?For?语句更容易理解。它的格式是:For &循环变量&=&初赋值& To &终值& [Step &步长&]…………Next &循环变量&在默认情况下,Step被设为?1?,可以省略,Step也可以设为负值,例如:Dim a=0For I=1 To 10a=a+INext I这是一个最简单的累加器的例子,把1到10累加在一起,然后赋值给?a?这样的效果和上面是一样的,只不过是倒着加罢了,请看:Dim a=0For I=10 To 1 Step C1VB6.0图文实例教程90_vb实例教程a=a+I Next IWhile语句也是一个很常用的循环语句,它的形式很多。Do While …… Loop语句While …… Wend 语句Do …… Loop WhileWhile后面都跟逻辑条件判断,?Do While …… Loop语句?和?While …… Wend 语句?作用相似,都是先判断While后面的条件是否为?真?,如果为?真?则执行里面的语句,如果为?假?,则退出循环,循环直至条件为?假?终止。?Do …… Loop While ?与前两者的区别在于,它不管条件的真假,都会先执行?Do?后面的语句,也就是说,它至少执行语句一次。与While用法相似的还有Until语句,它是直至条件为真则终止循环,句式把While上述三个语句的While换成Until即可,但是因为容易记混,所以我建议只用While即可。Until &条件&可以相当于While Not &条件&。For循环和Whlie循环应当根据适当的环境使用,它们有时也可替换。 六、运算操作 数学运算+:加法运算,也适合于字符串的之间的合并运算。VB教程:第四章-按钮 VB6.0图文实例教程90_vb实例教程把使用Button1的Enabled属性设为False(假),是使程序在初始时,无法单击Command1。按F5,运行程序,图4-4,复原按钮成为灰色,不可选。当然现在程序还什么也不能做,下面我们在程序中添加代码: 首先在General里声明全局变量:Dim StoreString As String '用来储存字符串※注意:为什么用全局变量?VB里每一个小过程都相当于一个程序,程序里的变量称为局部变量,是只能在程序内部使用的,而当程序调用结束后,由于从内存中被清除,所以变量储存的值也就消失了,这里的全局变量是用来在过程中传递字符串。接着填写以下代码:Private Sub Command1_Click()Text1.Text = StoreStringCommand1.Enabled = FalseEnd SubPrivate Sub Command2_Click()StoreString = Text1.TextText1.Text = && '清除Command1.Enabled = TrueEnd Sub运行程序,如图4-5。按下?清除?,文本框被清除,按下?复原?,文本有被恢复,许多程序中的Undo/Redo就是利用这个原理实现的,现在知道为什么内存越多越好了吧。我们在把程序修改一下,把Button2删除,Button1的Enabled属性改为True,Caption改为?清除?,填写代码:Private Sub Command1_Click()If Command1.Caption = &清除& ThenStoreString = Text1.TextText1.Text = && '清除Command1.Caption = &复原&ElseText1.Text = StoreStringCommand1.Caption = &清除&End IfEnd Sub同样可以上面的功能,但是却少用了一个控件,控件使用少的程序启动会快些。下面的例子要更加复杂些,大家一定都用过Windows附件中的计算器,它是一个标准的科学计算器,利用VB我们也可以做到,只是没有那么复杂,四则运算而已。先建立一个新的项目文件,里面包含一个Form1的窗体。然后,添加控件,包括一个Text框(Text1),和17个按钮,这17个按钮使用的名称都是Command1,只是Index属性不同,就好象一个数组,创立一组按钮的方法是,先在窗体上建立一个按钮(Command1),然后在Command1上击鼠标右键,选择复制(Copy),然后在窗体上任意部位击右键,选择粘贴(Paste),系统会提示是否创建控件组,选择?是?,重复上面步骤,直至创立17个按钮为止。各控件属性如下表:如果想改变一些其他的属性,比如字体,可以自己定义一下Font属性,如果相对多个控件的共同属性进行改变,可以在窗体上按下鼠标,拖动,把多个控件一起选定,然后对它们的共同属性进行修改。 别看这个东西小,还费了近我两个小时呢,不觉大叹手生,里面也有些地方很绕弯子,我尽量解释清楚。在编写程序之前,我们先来回顾一下计算器的使用。1. 按下数字键在液晶屏上会出现数字,这是最基本的功能。2. 第一次按下运算键,再按下数字键,将重新输入第二个数字,再次按下运算键,将算出前两个数的结果,然后按下数字键,将又重新输入新的数字。VB6.0图文实例教程90_vb实例教程3. 输入数字后,按下?等于键?将仍输出原来的数字,输入运算符和第二个数字后在按下?等于?,将得到二者的结果。然后又重复第二、三步。4. 按下?清除?,数据被全部清除。了解了这些,我们一步一步实现。 先实现数据的输入,请看代码。 与未创立组的控件相比,它的事件里多了Index参数,组里所有的对象都使用同一个事件。 先在General里声明窗体级全局变量: Dim Num1, Num2 As SingleDim StrNum1, StrNum2 As StringDim FirstNum As Boolean '判断是否是数字开头因为Text1里是存放字符串的,所以要把输入的数据进行运算,必须把字符型变量转变为实型变量,分别用Num1、Num2和StrNum1、StrNum2进行存放。 在Form_Load事件里给变量初赋值:Num1 = 0Num2 = 0StrNum1 = &&StrNum2 = &&FirstNum = True因为17个按钮使用的是同一事件,所以我们用一个Select Case语句区分各个按钮,双击任意按钮输入代码:Private Sub Command1_Click(Index As Integer)Select Case IndexCase 0 To 9If FirstNum ThenStrNum1 = Str(Index)’实型转字符型FirstNum = False’初赋值为假Else’非初赋值StrNum1 = StrNum1 + Str(Index)End IfText1.Text = StrNum1’显示&还有其他语句,等待插入&End SelectEnd Sub运行程序的话已经可以输入数据,下面我们来处理小数点。 在General里声明新的变量:Dim PointFlag As Boolean '判断是否已有小数点我们知道小数点只能输入一次,一个数据中不能有多个小数点存在,所以需要一个布尔变量做判断。在Form_Load里进行初赋值:PointFlag = False在Command的单击事件里接着上面输入新的代码:Case 10If Not PointFlag Then’如果没有小数点If FirstNum Then’如果是第一个字符StrNum1 = &0.&FirstNum = FalseElseStrNum1 = StrNum1 + &.&End IfElse’已有小数点Exit Sub’则退出单击事件End IfPointFlag = TrueText1.Text = StrNum1下面会复杂一些,我们先跳过等号,而来处理四则运算: 先在General里声明新变量:Dim Runsign As Integer '储存运算符号Dim SignFlag As Boolean '判断是否已有运算符号然后在Form_Load中进行初赋值:Runsign = 0SignFlag = False在接下的Command1_Click中继续输入代码:Case 12 To 15FirstNum = True’使下一次可以输入新数据PointFlag = False'还原标记值If SignFlag Then’前面已有运算符未运算Call RunElseSignFlag = TrueStrNum2 = StrNum1’把字符串1复制给字符串2StrNum1 = &&’字符串1清空End IfRunsign = Index - 11 ‘储存键入的运算符里面运算的部分我用了一个过程,是因为在按下等号时还会调用到运算过程,这样可以减少代码的输入,也使程序便于浏览。建立过程(Procedure),可以在General部分直接输入,也可以通过菜单里的?Add Procedure?添加。Run的代码如下:Sub Run()Num1 = Val(StrNum2)Num2 = Val(StrNum1)Select Case RunsignCase 1’加equal = Num1 + Num2Case 2’减VB6.0图文实例教程90_vb实例教程equal = Num1 - Num2Case 3’乘equal = Num1 * Num2Case 4’除equal = Num1 / Num2End SelectStrNum2 = Str(equal)StrNum1 = StrNum2Text1.Text = StrNum2End Sub下面是其余的代码:(在Command1_Click事件里,接着写) Case 11If Not SignFlag ThenText1.Text = StrNum1equal = Val(StrNum1)FirstNum = TruePointFlag = FalseCall RunSignFlag = FalseEnd IfCase Else’清除按钮Call ClearData里面又用到了一个ClearData过程,实际上就是Form_Load里的变量初赋值,代码如下:Sub ClearData()Num1 = 0Num2 = 0StrNum1 = &&StrNum2 = &&FirstNum = TruePointFlag = FalseRunsign = 0SignFlag = FalseText1.Text = &0.&这样完整的程序就完成了,本章介绍了VB的第一个控件DD按钮,并且举例,希望你继续看下一章DD菜单。下面给出完整的程序代码:Dim Num1, Num2 As SingleDim StrNum1, StrNum2 As StringDim FirstNum As Boolean '判断是否是数字开头Dim PointFlag As Boolean '判断是否已有小数点Dim Runsign As Integer '储存运算符号Dim SignFlag As Boolean '判断是否已有运算符号Sub ClearData()Num2 = 0StrNum1 = &&StrNum2 = &&FirstNum = TruePointFlag = FalseRunsign = 0SignFlag = FalseText1.Text = &0.&End SubSub Run()Num1 = Val(StrNum2)Num2 = Val(StrNum1)Select Case RunsignCase 1equal = Num1 + Num2Case 2equal = Num1 - Num2Case 3equal = Num1 * Num2Case 4equal = Num1 / Num2End SelectStrNum2 = Str(equal)StrNum1 = StrNum2Text1.Text = StrNum2End SubPrivate Sub about_Click()MsgBox &Create by 周晓阳。&, vbDefaultButton1, &VB教程第四章范例&VB6.0图文实例教程90_vb实例教程End SubPrivate Sub Command1_Click(Index As Integer)Select Case IndexCase 0 To 9If FirstNum ThenStrNum1 = Str(Index)FirstNum = FalseElseStrNum1 = StrNum1 + Str(Index)End IfText1.Text = StrNum1Case 10If Not PointFlag ThenIf FirstNum ThenStrNum1 = &0.&FirstNum = FalseElseStrNum1 = StrNum1 + &.&End IfElseExit SubEnd IfPointFlag = TrueText1.Text = StrNum1Case 12 To 15FirstNum = TruePointFlag = False'还原标记值If SignFlag ThenCall RunSignFlag = TrueStrNum2 = StrNum1StrNum1 = &&End IfRunsign = Index - 11Case 11If Not SignFlag ThenText1.Text = StrNum1equal = Val(StrNum1)FirstNum = TruePointFlag = FalseElseCall RunSignFlag = FalseCase ElseCall ClearDataEnd SelectEnd SubPrivate Sub Form_Load()Call ClearDataEnd Sub按钮还有两个重要的属性Default(默认属性)和Cancel(取消属性),两个属性都以布尔赋值,把Default设为True,则在按下回车键时,不论焦点处于何处,都会触发该按钮的Click事件,而当Cancel属性被设为True,在按下ESC键时,该按钮的Click属性发生。下面举个例子:建立一个新窗体和两个按钮,Name属性分别为cmdOK和cmdCancel,把前者的Default设为True,后者的Cancel设为True,Caption属性分别为OK和Cancel。如图4-8。填写代码后运行:Private Sub cmdCancel_Click()MsgBox &Cancel按钮被按下&, vbDefaultButton1, &提示& End SubPrivate Sub cmdOK_Click()MsgBox &OK按钮被按下&, vbDefaultButton1, &提示&End Sub结果如图4-9、4-10:VB6.0图文实例教程90_vb实例教程快捷键大家一定都知道,在VB如何实现呢。其实很简单,在刚才的例子里在建立一个按钮Command1,把它的Caption属性设为Click &ME,如图4-11,在M的下面有一条下划线,运行程序,当你按下Alt+M的时候就触发了Command1_Click事件:Private Sub Command1_Click()MsgBox &Click ME 按钮被按下&, vbDefaultButton1, &提示& End Sub据我所知,有许多用户有使用快捷键的习惯,注意细节上的问题能够使将来你的程序得到更多人的欣赏,不是吗?VB教程:第五章-菜单VB6.0图文实例教程90_vb实例教程重回菜单设计窗口,接着添加菜单。(按下向左的箭头,可以使菜单上升一级,Level代表菜单的级别),根据下表添加新的菜单项:其中Short-Cut就是平常我们说的热键,你可以在菜单设计窗口中找到,设Z一个你需要的组合键,这样不论窗口的焦点处于何处,菜单在第几层,只要按下热键,就相当于调用了该项的Click事件。结果如图5-5。从Win95以来程序里引入了鼠标右键功能,使鼠标有了更大的用处,在VB里我们也很容易实现。 打开Form_MouseDown事件,该事件有两个参数:Button,当按下左键时Button返回1,当按下右键时Button返回2,;Shift,是指在点击鼠标时按下的键盘键,如Shift、Ctrl、Alt,这些我们将在以后讨论,但很难避免在一章中不涉及到不该涉及的内容,学习时有个大概的理解即可。下面在该事件里添加代码(效果如图5-6):Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 ThenPopupMenu mnuEdit, vbPopupMenuLeftAlignElseExit SubEnd IfEnd Sub在上面的代码中我们用到了PopupMenu方法,它的语法是:object.PopupMenu 菜单名,标记,X坐标,Y坐标标记是用来表明弹出菜单位于鼠标指针位Z的,它有三个值:X、Y值可以用来制定菜单弹出的位Z,可以省略。关于菜单的Visible、Enabled等属性请自己尝试。第五章完VB教程:第六章(1)-输入VB6.0图文实例教程90_vb实例教程新建一个项目(project),在Form_load里填写一行代码:a$ = InputBox(&举荐你最欣赏的网站&, &最佳网站投票&, &VB小驿&)’不算无耻吧?:-& 按下F5运行程序,在Form1出现之前先会弹出一个输入对话框,如图6-2。这时,无论你按下OK还是Cancel都是没有区别的,因为我们并没有对输入数据进行处理,下面我们完成一个更加复杂些的程序。新建一个项目文件,把窗口布局成类似于图6-3的结构,各对象属性如下表:Label1(3).Enabled = True Label1(4).Enabled = True Text1(3).Enabled = True Text1(4).Enabled = True PosChk = TrueElseLabel1(3).Enabled = False Label1(4).Enabled = False Text1(3).Enabled = False Text1(4).Enabled = False PosChk = FalseEnd IfEnd Sub接着在按钮中填写代码:Private Sub Command1_Click(Index As Integer)VB6.0图文实例教程90_vb实例教程Dim Prompt, Title, Default As StringDim xPos, yPos As IntegerSelect Case IndexCase 0Prompt = Text1(0).TextTitle = Text1(1).TextDefault = Text1(2).TextIf PosChk ThenxPos = Val(Text1(3).Text)yPos = Val(Text1(4).Text)a$ = InputBox(Prompt, Title, Default, xPos, yPos)Elsea$ = InputBox(Prompt, Title, Default, xPos, yPos)End IfLabel1(5).Caption = &谢谢您的投票,您的选择是& & a$ & &!&Case 1Unload MeEnd SelectEnd Sub按下F5运行程序,你会看到这样的结果。图6-4,6-5。是不是有种受骗的感觉,啊哟哟,可不是我的错,就是这么容易嘛!从刚才的例子里,我们接触了一些VB中的输入方法,其实数据输入不仅仅局限于向Text框中输入数据,数据的输入还有许多其他的方法,譬如前面的Check1也是向程序发出一定的信息,只要是通过操作向计算机发布命令就可以叫做输入,下面我们来一一介绍。首先要介绍的当然是输入用到最多的Text框。Text没有Click事件,它的缺省事件是Change,也就是当Text框里的一旦内容改变就会激发该事件发生,还是让我们用实例说话吧。 Text有几个特殊的属性,一是MultiLine(多行)属性,MultiLine属性为False的时候,不论文本有多长,它都会在一行里显示下去,换行符无效,当它为True的时候,字符串显示到Text框边缘的时候就会自动换行。另一个与之配合的属性是ScrollBars属性,它有4个值,0到3,分别是没有滚动条,水平滚动条,垂直滚动条,和二者都有,它是一个只读属性,也就是说只有在程序设计过程中才能改变,而不能在程序运行中改变,但是我们可以通过API解决运行中改变的问题,我们放在以后再讲。PasswordChart属性,我们经常在程序操作中遇到要填写密码的部分,为了保密起见,在屏幕上显示的字符一般?*?表示,并且这时是无法用剪贴板的,这在VB中非常容易做到,把PasswordChart中设一个用来代替字符串的字符即可,并不一定是?*?哦。下面我们完成一个有趣的小程序,是我以前遇到过的一个程序,我对其进行了部分修改。程序的意思是这样的,假设你是一个司机应超速被警察扣留,现在需要你向警察陈述你的理由,如果你的话能打动他,就可以免交罚金,如果你在规定的字数里没有说出什么有震撼力的话,那老兄你可就惨了,交钱吧。J这个程序比原来的英文程序有了几点不同,第一,由于用到的是双字节中文的中文,所以对于检测中文字符和英文有很大不同,第二,原来的英文程序不管你说多少,警察依然是依法从事,本例中给了犯规者10%的免罚机会(有点无聊……L ,不过也是为了学一些东东嘛)。下面就跟我来设计窗体吧。(如图6-6)VB6.0图文实例教程90_vb实例教程还可以为Label1在Font属性里选一个合适的字体和字重。下面我们来看代码:首先初始化程序:Private Sub Form_Load()'把Command1放在水平的中央Command1.Top = Label2.Top+200Command1.Left = (Form1.Width - Command1.Width) / 2'重叠三个图片框Picture2.Left = Picture1.LeftPicture2.Top = Picture1.TopPicture3.Left = Picture1.LeftPicture3.Top = Picture1.TopEnd Sub下面我来讲一讲程序是怎样运行的,我们将用到Text的Change事件,每当字符串改变一次就对它进行一次检查,算出已经说的字数,当字数超过10时,下面的红绿灯会变成黄色,并且在这时随机抽取一个数,它在一个范围内出现的可能是10%,如果在这个范围内就可以免交罚金,如果不在范围则继续,当文字超过20的时候,红绿灯会变成红色,再一次抽取随机数字,步骤同上,如果30个字已满,再进行一次检查,如果你真的那么不幸就该罚款了。程序的步骤清楚了,我们在来看看程序的要点。由于中文是双字节字符,也就是说一个汉字占两个ASC码的位Z,而VB显然是为英语国家设计的用Len函数无法返回汉字字节,也就是说一个汉字和和一个ASC字符在Len函数中得到的值是一样的,这就需要特殊处理。用Asc()函数,在括号内放入一个ASC字符或字符串,它会把第一个ASC码转化为0-255的数值,而把一个汉字放入,它的值必然不在0-255,这也就可以作为判定汉字的基础。我们可以把英文算作半个汉字。下面我们来看看代码:在General 里声明窗体级变量:Dim Level As IntegerPrivate Sub Command1_Click()Unload MeEnd SubPrivate Sub Text1_Change()Dim StrLength As Integer’字符串长度Dim RandomNum As Single’随机数Dim Str1 As StringDim a As StringDim i, TempStrLength = 0’每次开始时把字符串长度还原为0a = Text1.TextFor i = 1 To Len(a)’Len(a)代表字符串的长度Temp = Asc(Mid$(a, i, 1))’挨个取字符If Temp & 255 Or Temp & 0 Then’不是ASC码StrLength = StrLength + 2ElseStrLength = StrLength + 1End IfNext iStrLength = StrLength / 2Select Case StrLengthCase 0 To 9Picture1.Visible = TruePicture3.Visible = FalseLabel2.Caption = &慢慢说。你还有& & Str(30 - StrLength) & &个字可以说& Level = 1Case 10 To 19If Level = 1 ThenRandomNum = Rnd * 10’得到随机数If RandomNum &= 10 And RandomNum & 9 ThenText1.Enabled = FalseLabel2.Caption = &很抱歉这是个误会……&Command1.Visible = TrueCommand1.Caption = &您可以离开了&End IfLevel = 2ElsePicture2.Visible = TruePicture3.Visible = FalseStr1 = &怎么还没说完!&Label2.Caption = Str1 & &你还有& & Str(30 - StrLength) & &个字可以说& End IfCase 20 To 29If Level = 2 ThenRandomNum = Rnd * 10If RandomNum &= 10 And RandomNum & 9 ThenText1.Enabled = FalseLabel2.Caption = &很抱歉这是个误会……&Command1.Visible = TrueCommand1.Caption = &您可以离开了&End IfVB6.0图文实例教程90_vb实例教程Level = 3ElsePicture1.Visible = FalsePicture2.Visible = FalsePicture3.Visible = TrueStr1 = &我已经不耐烦了!&Label2.Caption = Str1 & &你还有& & Str(30 - StrLength) & &个字可以说& End IfCase ElseText1.Enabled = FalseLabel2.Caption = &你已经没有机会了!&Command1.Visible = TrueCommand1.Caption = &交钱吧,肇事犯!&End SelectEnd Sub中间有几个函数需要解释一下:Mid可以从字符串中取出一部分,返回字符型,格式:Mid(字符串,从第几个字符开始,取字符的长度)Asc可以把字符转换为ASCII码,格式:Asc(字符串)Rnd,取得大于0但小于1 的数值,可以没有参数。怎么样,十分简单吧,我们将在下一次继续讨论VB的输入机制,再见!VB教程:第六章(2)-输入(2)VB6.0图文实例教程90_vb实例教程然后,我们通过一个叫做addstar的函数为字符串加上星号,以前曾说过函数与过程的分别,函数会返回一个函数值,所以addstar也就相当于一个变量,其实这很好理解,就象中学代数中的函数,函数就相当于变量Y,而函数中的参数则相当于自变量X,当然可能有很多自变量X1、X2……请原谅,我并不想在这里上数学课,因为我厌恶那玩意儿,特别是上了大学之后,好在大二以后就再也不会有数学课了,哈哈……Function addstar(tempword As String) As StringDim charindex%Dim pasteword$ '加星号后的字符串For charindex = 1 To Len(tempword)If Mid(tempword, charindex, 1) = & & Then '如果字符为空格 pasteword = pasteword + &*&Else: pasteword = pasteword + Mid(tempword, charindex, 1) End IfNextaddstar = pasteword '返回函数值End Function下面的代码很简单,并且我为它做了注释,就不再一一解释了,我只想简要的提几句,Ltrim和Rtrim只有一个参数(字符型),另外下面用到了焦点事件,我们曾在第三章中介绍过,当Text1得到焦点(GotFocus)时,清空所有的文本框,当它失去焦点(LostFocus)时,对字符进行addstar并且在Text2中显示。Private Sub Text1_GotFocus() '但焦点于Text1'清除所有文本框中的字符Text1.Text = &&Text2.Text = &&Text3.Text = &&End SubPrivate Sub Text1_LostFocus()Dim Origionword As StringOrigionword = Text1.TextText2.Text = addstar(Origionword)LTrimmedword = addstar(LTrim(Origionword))RTrimmedword = addstar(RTrim(Origionword))LRTrimmedword = LTrim(RTrim(Origionword))End SubPrivate Sub Option1_Click()Text3.Text = LTrimmedword '显示删除左空格后的字符串 End SubPrivate Sub Option2_Click()Text3.Text = RTrimmedword '显示删除右空格后的字符串 End SubPrivate Sub Option3_Click()Text3.Text = LRTrimmedword '显示删除两边空格后的字符串 End Sub最后结果如图6-9。与无线钮相对的是检查框,在同一范围内一组无线钮只能有一个被选中,而检查框则可以有多个选择,就象在添表时,性别那项只能有一个选择,而在描述你以前的职业时可以有学生、程序员、家庭教师或者什么,总之有很多选择,下面我们举一个简单的例子加以说明。 假设编写了一个共享软件,在让用户注册的时候你想知道你的用户使用的计算机情况,你就需要一个调查表,为了使这个调查表不止枯燥,可以在这个程序中加入一些图形。新建一个项目文件,窗体布局如图6-10。程序很简单,一共有两个框架(Frame1和Frame2),它们的Caption分别为?选择你的计算机拥有的配Z?和?这是你的计算机系统?,在Frame1有四个检查框(Check1到Check4),Caption分别为?网络系统?、?鼠标?、?密码保护?和?电子邮件?,另把Check4的Enabled属性改为False,使其无效;在Frame2中放Z四个图片框(Picture1到Picture4)与四个检查框向对应,请把所有图片框的BorderStyle属性设为0(无边框),它们的Picture属性请根据上图,在存放图标的目录中找到相对的图标。下面是程序代码: Private Sub Check1_Click()If Check1.Value ThenCheck4.Enabled = -1Picture1.Visible = -1Else: Check4.Enabled = 0Picture1.Visible = 0Check4.Value = 0Picture4.Visible = 0End IfEnd SubPrivate Sub Check2_Click()If Check2.Value ThenPicture2.Visible = -1Else: Picture2.Visible = 0End IfVB6.0图文实例教程90_vb实例教程End SubPrivate Sub Check3_Click()If Check3.Value ThenPicture3.Visible = -1Else: Picture3.Visible = 0End IfEnd SubPrivate Sub Check4_Click()If Check4.Value ThenPicture4.Visible = -1Else: Picture4.Visible = 0End IfEnd Sub这个程序比我们见过的任何程序都简单,就不再做说明。VB教程:第六章(3)-输入(3)VB6.0图文实例教程90_vb实例教程为了把十进制数值换成十六进制数值,要使用一个叫做Hex()的函数,它把十进制数值转化为十六进制的字符,但对于只有一位的十六进制字符,这个函数并不在高位补零,为了视觉上的正确,我设计了一个小函数帮助它给一位的十六进制字符补零.程序代码很简单,见下:Dim RedStr, GreenStr, BlueStr As String’RGB的字符 Dim RedNum, GreenNum, BlueNum As Integer’RGB的数值 Function GetColorValue() As String‘获得输入值RedNum = HScroll1(0).ValueGreenNum = HScroll1(1).ValueBlueNum = HScroll1(2).ValueRedStr = Hex(RedNum)If Len(RedStr) & 2 Then RedStr = &0& + RedStr’补零 GreenStr = Hex(GreenNum)If Len(GreenStr) & 2 Then GreenStr = &0& + GreenStr BlueStr = Hex(BlueNum)If Len(BlueStr) & 2 Then BlueStr = &0& + BlueStrGetColorValue = RedStr + GreenStr + BlueStr’合并End FunctionPrivate Sub Form_Load()‘初始化程序Text1.Text = GetColorValuePicture1.BackColor = RGB(RedNum, GreenNum, BlueNum)'RGB函数返回颜色值End SubPrivate Sub HScroll1_Change(Index As Integer)‘当滚动条被改变时Text1.Text = GetColorValuePicture1.BackColor = RGB(RedNum, GreenNum, BlueNum) End Sub运行如图6-13。列表框(ListBox)和复合列表框(ComboBox)也是我们经常见到的视窗元素,我们从它所列示的条目中选出所需的,两种列表框只是在外观上略有不同,但从本质和操作方法来说它们是很相象的,它们也有一些特殊的属性:List属性,你可以利于该属性象列表框或复合列表框中添加条目,但也可以在程序设计中通过AddItem方法添加。ListCount属性,返回列表框或复合列表框中条目的数目。ListIndex属性,表示列表框或复合列表框的第几项条目。(从0到ListCount-1)Sorted属性,可以通过该属性对列表框或复合列表框中的条目根据字母顺序排序。MultiSelect属性,0表示不能多选,1表示简单多选,2表示宽展多选,仅限于列表框。Columns属性,表示条目是以一列显示还是两列显示,仅限于列表框。 Style属性:表示列表框或复合列表框以何种风格显示,二者参数不同。举两个简单的例子。例子一,建立一个新项目文件,在Form1上添加一个List控件,调整适当的尺寸,无需改变任何属性。填写以下代码。Private Sub Form_Load()With List1.AddItem &0-Default&.AddItem &1-Arrow&.AddItem &2-Cross&.AddItem &3-I-Beam&.AddItem &4-Icon&.AddItem &5-Size&.AddItem &6-Size NE SW&.AddItem &7-Size NS&.AddItem &8-Size NW SE&.AddItem &9-Size WE&.AddItem &10-Up Arrow&VB6.0图文实例教程90_vb实例教程.AddItem &11-Hourglass&.AddItem &12-NoDrag&.AddItem &13-Arrow And Hourglass&.AddItem &14-Arrow And Question&.AddItem &15-Size All&End WithEnd SubPrivate Sub List1_Click()MousePointer = List1.ListIndex’这里的MousePointer是窗体全局内的属性End Sub当你点在不同项上面鼠标指针也会随着改变,如图6-14。AddItem方法语法如下:ListObject ?字符串?,数值字符串后的数值可以指定条目加入在第几个条目的位Z上,如果没有的话,添加项将逐次排下去。下面举一个复合列表框的例子,例子通过选择复合列表框中的选项来改变文本框的字体。请新建一个项目文件,在窗体中添加一个ComboBox(Combo1)和一个TextBox(Text1),添加如下代码。 Private Sub Combo1_Click()Text1.FontName = Combo1.List(Combo1.ListIndex)End SubPrivate Sub Form_Load()With Combo1.AddItem &宋体&.AddItem &隶书&.AddItem &黑体&.AddItem &楷体&.ListIndex = 0'把第一个条目作为初始项End WithText1.FontSize = 30’放大字体Text1.FontName = Combo1.List(0)’初始字体为?宋体? End Sub如图6-15。(第六章完)VB教程:第七章-输出VB6.0图文实例教程90_vb实例教程说了这么多,可能你已经不知所措了,不过看过下面的例子后,相信一切都会迎刃而解。首先建立一个新项目文件,并添加以下对象(见图7-1)DD一个Button(Command1),两个ComboBox(Combo1和Combo2),不要对其属性做更多的修改,只需把Command1的Caption改为?Click Me?。这个程序的目的是自由组合上面的按钮值,以显示各种消息框,并且返回按下的按钮,Combo1和Combo2分别用来选择按钮值,首先在Form_Load中初始化程序:Private Sub Form_Load()Combo1.AddItem &OK&Combo1.AddItem &OK and Cancel&Combo1.AddItem &Abort,Retry and Ignore&Combo1.AddItem &Yes,No,Cancel&Combo1.AddItem &Yes,No&Combo1.AddItem &Retry,Cancel&Combo1.ListIndex = 0Combo2.AddItem &危险&Combo2.AddItem &询问&Combo2.AddItem &警告&Combo2.AddItem &信息&Combo2.ListIndex = 0End SubComboBox的用法已经在上一章中讨论过,在此不再赘述,ListIndex属性用来把第一个元素放在选择位Z。但是如何显示需要的按钮和图标呢?很简单,只需把它们相加,比如说要显示OK、Cancel按钮和警告的图标,只需把1和48相加,得到49即可,于是我们在Command1中填写这样一行:Private Sub Command1_Click()message = MsgBox(&显示& & Combo1.List(Combo1.ListIndex) & &和& & Combo2.List(Combo2.ListIndex), Combo1.ListIndex + (Combo2.ListIndex + 1) * 16, &消息演示&)End Sub因为图标值是从16开始的所以要把Combo2的ListIndex加1再乘以16。小知识:按钮值并非简单的相加按钮值并非简单的相加,我们知道,在计算机里最终的语言是机器语言,而机器语言是以0和1的二进制表示的,在这里用到的实际上不是相加,而是逻辑操作符?OR?,你知道OR和AND是怎样工作的吗?正如你所知,True And False得到False,而True Or False得到True,这是怎么形成的呢?我们有时也用0代表False,用1或-1代表True(其实,只要非零都可以代表True),而0和1在二进制中还是本身,于是True、False的运算就变成的0 和1的运算,我们可以把And叫做补0运算,把Or叫做补1运算,当用And处理两个二进制数的时候,它们逐位比较,如果相同的位上都是0或都是1则没有变化,而如果一位上是0,另一位上是1,最后结果上相应的位上就变成0。比如1010(十进制中10)And 1101(十进制中13),最后就得1000(十进制中8),相同的Or亦是如此,只不过在不同的地方补1。在位数不同时,前面补0,你可以在VB中试试看。但为什么要讲这些呢,原因是我不想让大家真的以为这个例子中就是相加,只不过碰巧它们的0和1处在不同的位Z上,并且这个小知识在今后的位图操作和API操作中很有用处。下面在来判断用户按下的按钮。Private Sub Command1_Click()message = MsgBox(&显示& & Combo1.List(Combo1.ListIndex) & &和& & Combo2.List(Combo2.ListIndex), Combo1.ListIndex + (Combo2.ListIndex + 1) * 16, &消息演示&)Select Case messageCase 1MsgBox &你按下了OK钮&Case 2MsgBox &你按下了Cancel按钮&Case 3MsgBox &你按下了Abort按钮& Case 4MsgBox &你按下了Retry按钮& Case 5MsgBox &你按下了Ignore按钮& Case 6MsgBox &你按下了Yes按钮& Case 7MsgBox &你按下了No按钮& End SelectEnd Sub运行程序,结果如图7-2,7-3。VB6.0图文实例教程90_vb实例教程第七章未完待续VB教程:第七章(2)-输出(2)VB6.0图文实例教程90_vb实例教程Dim FormatExp As StringDim ThisTime As DatePrivate Sub Command1_Click(Index As Integer)FormatExp = FormatExp + Command1(Index).CaptionText1.Text = FormatExpEnd SubPrivate Sub Command2_Click()a$ = Format(&.&, FormatExp)Label1.Caption = &格式化后的数值:& + a$Text1.Text = &&FormatExp = &&End SubPrivate Sub Form_Load()ThisTime = NowLabel2.Caption = ThisTimeEnd SubPrivate Sub Option1_Click(Index As Integer)Text2.Text = Format(ThisTime, Option1(Index).Caption) End Sub其中0和#代表数值显示的位数,不同的是如果定义格式化表达式的位数如果多于原表达式,则使用0则补0,使用#则省略0;?.?用来指定小数点的位Z;其余字符用来分割数值,如?,?。 结果如下图:7-2-3。关于时间的格式化表达式的定义方法如下表:好吧,第七章的内容就讲完了,在第八章中我将把VB的简单绘图知识教给大家,下次再见!如何成为一名优秀的程序员?VB6.0图文实例教程90_vb实例教程现在的程序员比起十年前是不是要花更多的时间来 查帮助呢。系统越来越大,手册越来越厚,软件开发的 周期是不是越来越多的淹没在查帮助之中了呢。实际上一个程序员最终的技术需要和实际相结合。真正在编写程序到达一定时候,语言的使用并不是最大的障碍,对整个项目的把握、软件工程的把握、数据库的设计以及执行效果的分析等等才是需要进一步考虑的东东!否则,为何大多数公司到要求有编程经验了!这些不是程序员必须学的。但数据结构,编译原理,操作系统原理等是必须要学好的,英文的多看,不懂计算机英语可不行。其实我不是什么中专生,而是我读的中学和一个私人办的电脑学校联合开的电脑专业(并不是我中考考的差,而是这个学校太贪钱了,才被录取到这里,恼火,我们班里中考成绩从两百多到四百多的都有,我就是四百多分(重理轻文的结果,要不然...),当时读书的时候,我是班是的高手(其实只是比其它同学懂而已),大家叫我dos,因为当时学的都是dos的内容, 毕业后还没有对编程很感兴趣,只想找一个电脑的工作就可以了,哪怕是打字的,可是看报纸,去人才中心,看到都是要大学的,为此感到很失望.也对电脑失去了兴趣.后来学校打电话到我家,说厦门厦华公司要招工,要不要去,我很快就答应了,因为当时没工作,天天呆在家里.后来打工的时候,天天象一个机械人一样,重复着同一道工序,因此经常在深夜的时候,思索着自己的未来,由此重新生起了对电脑的感情,因此经常买电脑杂志和报纸看(可以堆成一座山了).由于离我住的地方不远处,有一个电脑培训的,所以经常到那里上机,而在学校里学过的软件也只有FOXBASE和WPS,其它的不值一提,所以上机经常用foxbase,直到这时候,才对编程产生了浓厚的兴趣,一年后,自已买了一台电脑,开始认真学习编程.由于我是属于职业中专的,因此经常想,就算学得再好也没有用,所以想考程序员,而考程序员要懂得c语言,所以就学习turbo c,学完了,学数据结构,同时看'C高级实用程序设计',澳门回归和2000年的两个晚上,我都是在编程中度过的. 由于我这个人对书很感兴趣,经常在星期六,星期七去书店,而在书店里,也是看编程方面的书,而看到的编程书籍大部份都是windows方面的,为此也经常思索着学dos编程到底有没有用.后来,春节放假(要2月13日上班)回老家,天天去新华书店(正月初一也去),看到也都是windows编程方面的书多得像狗屎一样,所以就下决心学windows编程,因此正月初四(快餐店还没有开张)就去厦门了,很快买了delphi的书和d版delphi5,疯狂地学习(到目前为止,买了8本delphi的书,因为国人的写的书实在太烂),而由于遇到不懂的又不知道怎么办,为此想到了网络,但在外打工不可能上网(上网吧太贵),所以就辞职了(4月21日),现在,程序员考试快到了,是报还是不报一直犹豫不觉,困此才有此问题.打工的岁夜,我永远不会忘记,因为付出太多了,也失去了太多(坏了两个光驱,瘦了几斤),直到现在,脑海里还不时浮现起那几个无眠的夜晚.忠心感谢大家.我不认为编码的人就是机器, 而系统分析就不是机器, 其实系统分析员就是销售的机器, 所有职员有是老板的机器.它们之间这是不同工种吧了, 当然对系统分析要求要高一些, 薪水也高一些, 但更让人佩服的是销售, 是他们驱动了整个的运作.我也是个中专生, 还是学机械的(后来自学了计算机), 我非常了解在传统的制造业是如何的规范, 设计人员设计图纸, 然后经审核, 再到车间试样, 再根据情况, 修改图纸, 如此反复几次后才能一个产品定型,而在软件界, 就没那么好了, 领导会说, 这个你做, 那个他做, 也没有经过很细的分析(国内很多都是这样), 在我们这里也没有系统分析员, 每个人都是设计员, 也是编程员, 虽然这样对个人来说, 能学到很多东西, 但不利于项目.我国的软件过程水平,确实令人担忧, 目前为止只是, 几个人十几个人的小软件, 还没有能拿得手的大型软件. 至于中专生编程问题, 我认为只要入了这个行, 就不会比本科生差, 因为对他来说没有优越的学历条件, 那么只好埋头苦学, 但这正好适应当前计算机软件迅速发展的今天, 学历只能代表过去和基础, 更需要的是有能力的人, 解决问题的人, 实干的人.对我来说确实有时有点自卑, 没有上过高中和大学(由于那个年代, 我只知道能为父母减少一点负担就行了), 所有我一直在努力的学习(corba, uml, java, 软件过程等), 目前为止我并没有觉的我的构架能力和编码水平比他们差, 只是觉得E语言实在太差.过计算机本科又如何?我有几个同学到银行去搞业务了,有同学任教,有同学收税去了......60多个人真正现在搞计算机的还就只有几个人,再看看当时这些计算机本科生的毕业设计,//faint有的人到最后连vb都搞不定,但他们什么编译原理啦什么组成原理啦什么软件工程啦学的(应该是考试的分数)真还不错,至少我感觉有些概念比我清楚(上课没听?)所以我觉的中专生并不比一般大学生差(当然有些重点学校除外//hehe),有时中专生有更大的压力逼迫自己去学习,学历不是重要的,关键是一个人的素质.我们不能将目标定位在做程序员或编码员(Coder)上光会写代码有什么用?那叫?编码员?,在国外是属于体力劳动的,不像国内,会写程序的就叫高科技。重要的是分析问题、解决问题和规划的能力,系统分析,系统设计及项目规划才是正途。这就需要学习所谓的基础课程了,如:软件工程、离散数学、数据结构等等。从vb到现在开始学vc后,一个人捣鼓了几天也没有什么新发现。跟本不知道VC的编程思想是什么,请大虾们告诉我,它和VB的差别真是太大了。VC的博大在于MFC的操纵,它是Win32API的封装.思想在于怎样了解MFC的内幕,它的运行机制.差别也大,差别也不大!这要看你对API的理解了,虽然VC++的可视化没有VB的好,但是不是绝对没有的,其对而且对话框的编辑是跟VB一样的,不过不是像VB那样放在第一个界面罢了,VC++的博大精深是VB难以望其项背的!:)而且VC++是完全面向对象的编程工具,而VB是不够完全的面向对象编程工具,VC++是完全编译语言,VB是本地编译语言,不够完全,VC++效率高,封装性好,继承性高,VB效率相对低了很多,但界面友好,二者只能取其一,或者使用VC++,VB辅助(因为VB开发快),当然Delphi,BCB也是不错的选择。程序员不应依赖开发工具,程序员更应该拥有的是一种思维、一种精神、一种观念。就像Richard.M.Stallman一样,有自己的精神,为自由软件而奋斗。就像求伯君,为民族软件的振兴而奋斗。这才是真正的程序员。应该说,他们更注重的不是技术,而是软件的思维,软件的灵魂!!我刚学VC的时候,还没有上网.身边也没有一个可以问的朋友,所以大部份都是自己啃的.那种感觉真是很痛苦. 现在在网上就不同了,可以得到太多的资料了,而且还可以得到在线帮助.但这些都不是学习的关键. 相信各位也知道VC的难度,并不是那么容易上手的,所以要想学会,学好VC,靠外力是不可能的.主要得靠自己.自己要有一份难得的毅力,对编程的狂热也可以在一定程序上起到帮助.我就是这样的.起初,没有人帮我,我学习VC是三天打鱼两天晒网,学习进度很慢,幸好对编程的执著,使得自己坚持下来了. 如果你从来就没有接触过编程,那你学习VC的速度可能会比学过面向过程编程的人要慢一些,因为你要去理解命令及语句的含义.但只要你努力,并且可以得到别人的帮助,我相信在半年内会对VC有一定的认识. 请学赤面向过程编程的朋友也不要笑,因为面向过程与面向对象实在是区别太大了.就拿封装一词来说吧.当初我是左想右想才想通的.所以不要自己学过编程,就会在学习VC的通道上比别人轻松.VB6.0图文实例教程90_vb实例教程现在有一种现状应该让我们注意.我发现有很大一部份初学者觉得VC是一种语言,C++又是另一各语言.我在和一些初学者的交谈当中,查觉到了这一点.有的初学者竟然还认为我学VC为什么就一定要学C++?我想这个问题是我们大家都没有注意到的一个问题.就是向初学者讲述C++对VC学习的重要性. 我这有个例子,跟大家讲一下. 我有个同学,他接触编程比我要早,在我还在为VC中&::&符号怎么标记的时候,他已经在学习C了.后来,我对VC稍有理解的时候,他也发觉C的跟不上时代的脚步了.我便提议他从C++语言学起,可他认为自己有C的学习功底,根本就用不着再去学习C++.可在学习VC的当中,遇到的困难真是数不胜数.最近,他还是去买了一本学习C++的书.从头再来学习C++. 我希望通过这个例子,能让广大的初学者知道,C++对VC学习的重要性。学习VC必须有狂热的编程热情,否则是很难坚持下来的,我周围就有几个这样的人,他们比我先学VC近半年,但现在仍然学不会,而我现在虽说不是很厉害,但基本的应用程序是不在话下,我就是天天看书,上机实践,几乎所有的时间都泡在里面,有时连吃饭都在想,为什么,因为我确实想啃下这块硬骨头,我不想半途而废,我觉得学习VC不仅仅是学到了更多的东西,最主要的是培养了我们自己一种坚持克服困难的毅力。对于VC,我有几点经验:1。技术为本,语言为次.2。MFC的单个类有用,DOC/VIEW要小心。3。OOP要小心,使用不当反而造成大量的工作和糟糕的代码。4。如果可能,考虑选择使用Delphi(CBuilder+VCL)。5。到了一定程度,一定要学COM。要学VC,必须有对C++深刻的理解,对WINDOWS运行机制的深刻理解。尤其想成为VC高手。举例 , 对于虚函数,不仅要知道有这么一个东东,更要知道它的内存镜像 。这样才能对VC中很多的东西举一反三,事半功倍。本人学习VC近2年,但自觉第一年由于心情浮躁,把VC的书翻了一遍又一遍,却每次都只看了一点就无法再深入。直到毕业前夕,痛定思痛,克服浮躁,认认真真的从最基本的开始学,把每一点都搞的水落石出,经过三个月的刻苦,终于大成。直到现在,半月搞定COM/DCOM,都托当日刻苦之福,因此劝告想学VC的朋友,一定要顶住开始的艰难岁月。成功属于刻苦者。每个人都有自己的学习方法,也许这种方法对我来说有用,但不见 得就对所有的人有用.所以,请不要盲目的跟着别人的学习方法学习,要思考属于自己的学习方法. 但我还是会向大家说出我自己认为比较好的一种方法. 学习编程其实与学习其它东西一样,要想掌握它,就要实践,实践,再实践.当你学到了一种新的技术或知识时,多实践是巩固学习的一种最好最有效的方法. 这个实践不是照著书上的例子做一遍,而是根据自己的能力,给自己出题,然后去完成它.只有这样,你才能发现自己的不足,同时又增加了自己的编程经验. 但要成为合格的程序员,光会写代码是远远不够的,更重要的是思考.谋定而后动,是 不变的真理.在我的理解,VC只是一个编程工具,就如BC、BCB、Delphi 一样,其实对于编程最根本的就是三个方面,语言、开发包、 操作系统API,他们三个方面应该说是相对比较独立的。VC是MS开发的,所以针对的是windows api,你可以不会C++, 也可以在VC下用C写出很优秀的程序,当然如果你比较熟练C++, 并且熟悉开发包MFC的话,工作可能要轻松不少。所以在我看来,学习的过程可以是这样的:1、先学习C或C++,在windows的console环境下编写不太深入涉及API的程序;2、在基本上掌握了语法之后,开始接触简单的系统API,学习 Windows的编程原理和机制;3、在可以编写简单的菜单程序,可以简单地在WM_PAINT下操作 GDI函数后,开始学习MFC,可以从Step tourist学起,看MFC的源代码,理解几个关键的宏的定义与实现,特别是MESSAGE MAP。 在学习的过程中为了给自己增加点挑战,尽量不要使用resource edit,试着自己编码实现控件的创建,消息的响应。 再就是看自己的造化了,动手做一些小工具,特别是自己平常需要的,对自己的提高也应该是很有帮助。 究竟我们要的是结果!良好的分析问题高效清晰地肢解问题的能力才是我们真正要不断学习的吧?和学习其他知识一样,重要的是获得提出问题,分析问题,解决问题的能力,不是为编程而学习,你具有什么样的思想,就会写出什么样的程序。学一门语言,不能仅仅是语言,要注重语言背后的思想方法,看他是如何来解决某一问题的,为什么要这样去做,他总是要符合客观事实的,就像人说的话一样,存在某种逻辑,数据的组织,信息的传递,靠你自己的头脑去建立,然后看C++中有什么可以帮你的,该怎么样用他来表达自己的想法。只要你认真实践,努力去做,寻求乐趣,就会达到目标。我虽然 真正认真学习编程的时间不长,但现在我是认真的,就有了以上的体会。学习VC++有相当的内容要学,而最后的深度则看个人的悟性与勤奋了。1)掌握最新标准的C++。(2个月)如果曾经在大学里自以为学过C/C++,还对dynamic_cast/static_cast/template/try/catch/throw/stl/...感到陌生,那你该Refresh一下新的ANSI C++标准了。 ----此与VC++无甚关联,g++/bcb均有所支持。2) 学习SDK编程;:-O (6个月) 痛苦是暂时的,必要的,坚持就是胜利! 建议用Lccwin32/Masm32/Tasm编写小而精的工具软件; &Windows Programming Guide.& &Advanced Windows programming &3) 研究MFC源代码。(6个月)不要被一大堆的宏所蒙蔽,just track and dig into it!! 在知道MFC如何扩展,包装SDK之后,自可功力渐进,不被其MFC系统框架所困绕。&MFC Internals&4) 研究OLE/COM技术。COM/ActiveX技术是MS的核心技术,只有彻底洞察其理论精髓才可以体会现在的操作系统的技术趋势,以不变应万变。&Inside Ole 2&***几点建议***:1) Delphi/BCB/VB可以很快构筑界面,但对于想真正学习、理解系统不是一个好的平台,但如果有时间读一读VCL的源码,看看Borland是如何封装系统的,也可借鉴不少。2) 学习ASM对理解C++有很大益处。Soft-ICE也是和VC++结合在一起的好工具;3) 语言本身是皮毛,算法是筋骨;无论高级语言如何发展,在理解操作系统的基础上不断自我创新的能力是源源不断的;如果精髓一旦了然于胸,选择何种开发工具都可以驾御,一见如故了。每个人学习的过程都会不同吧,我在98从TC转向VC时,对Windows的消息机制一点概念也没有,对着个MFC不知所措,几个月下来一点进展也没有。我于是暂时转向win32位编程。整整一年时间吧,我就是与API打交道,连编辑菜单条对话框等资源文件时也用Uedit32手工编写,为的是希望能对编译器的全过程有个感性的了解。之VB6.0图文实例教程90_vb实例教程后我再转向MFC时,果然发现两者是相通的,虽然有一定的区加,不过有了win32位编程的基础再看MFC 时会发现它比win32位编程要方便了太多。 现在市面上的VC书很多,不过大多是入门书。我以为要精通VC(只是以为,本人自已距精通还远的很)应该多看多写程序,看书只能是入门,会用了而已。我不赞成滥用ActiveX,一来我以为它的性能很成问题,真是又大又慢又不稳定(可能是我有点偏激了吧),二来用了它您的程序今后就要被别人牵着鼻子走了。有次我用了个控件,程序都写了大半了,它给我来个继续使用请支付333美元,我两个多月的工钱,烦不烦人?现在我尽可能用别人写的类源代码(我已收集各类代码3-400MB了),一样用起来方便,还能边用边学,必要时还能自已改造。我以为在现代的网络时代,资料到处都有,无论什么先进的技术,今天我不会我只要查到资料,快的学上几天慢的一两个月我也能学会,现在已没有写不出的程序了,写不出是因为你没有耐心写完它。我以为现在的程序员不一定要多么聪明,而更需要他有完成枯燥项目的耐心,找BUG的细心,对于金钱的平常心(不要为了早日拿到钱而赶进度),最后最重要是有顾全大局,团队协作的精神。 最后,王靖朋友的经历与我实在是有点相似,算是同病相伶吧,真心祝您早日实现自已的人生目标!学习VC是一项费时费力的艰苦学习过程。为了真正用好VC,你 不得不先从OOP开始学起,也许浏览一本纯理论的书要更有意思。 你将从另外的角度考察OO思想。接下来学习C++,学习WindowsAPI 学习MFC,剖析MFC,扩充MFC,创造自己的类库(不要企图写一个 和MFC同重量级的类库)。如果能够精通Microsoft C编译器的各种 参数,你就可以开始研究微软C/C++语言编译器的进化历史(结合 各种背景知识)。 掌握了编程的思想,征服VC只是时间问题。学习VC是接受微软技术体系的过程。所需要学习的不仅仅是C++,MFC。 需要学习所有微软的技术,包括Windows编程,Win32系统(实际上 Win32系统实现了很多我们在屏幕上能看到的东西,最起码NT的内核 并不大),COM(深入研究它,理解对象是如何跨越进程边界的,最终 能够自如地在Exe中实现自己定义的接口才算到家了。不过这多少有些 不太必要。),DCOM,ctiveX,Windows DNA... 如果你想成为大拿,学吧,没完没了。最起码,使用VC,你甚至于可以开发自己的操作系统(当然与MFC没有一点关系)。 分享: >
“vb实例教程”相关文章}

我要回帖

更多关于 aes算法c语言实现 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信