走近VB.Net(二) 再谈函数调用

函数

走近VB.Net(二) 再谈函数调用
在VB6中如果你想调用一个对话框,首先你知道要使用vb内置的MsgBox函数,你甚至于使用API,大部分人乐于使用API。如下:
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long。我想目前的文章很少介绍一些初级的东级,我正好水平有限,顺便谈一点初级知识,API 与普通的函数一样返回一个值给函数的名称,这个括号后的最后一个as long就是定义这个函数(messagebox)的数据类型为long 。所以每次调用的时候先有声明一个变量,dim xxx as long再如下:xxx=messagebox(这个括号里就填相应的参数,如第一个参数是ByVal hwnd As Long,这个是要你填一个long类型的句柄,可以先打一个0,打一个逗号,写入第二个string的字符数据,这个就是对话框的内容了……………….)。实际上在大部分时候并没有使用返回的值,只是作为一个调用的方法。 Lib"user32"表示使用user32的dll文件,alias"messageboxA"就是API函数了,messagebox只是一个代号,在linux中不是也有一个alias么?,就是一个别名了。
为什么VB.Net令大部分老的程序员感到愤怒呢?这也并不是完全的因循守旧,一个初入门的编程人员是无法想象一门完整的程序语言所需要经年累月积累的知识。然而现在这一切都改变了,就象上面提到的一些最基本的知识也不再基本。然而你为什么乐于使用API呢,你会回答,他更灵活更有挑战性,但是VB.Net
不是更加的富有这些么。或许微软会象传言的在BETA2中恢复一些VB6的东西,但我并不开心。或许有人说VB有很多的学JAVA(大概学微软的情况总是很少的,人人都喜欢在实际上嫌贫爱富,在口头上指点强者,讥嘲弱者得到满足)但是仅仅一个面向对象足以支撑net计划么,如果真的是这样,微软早就应该让位于其他软件商了。就是面向对象,也有一个是不是更强大的区别,而实际上他是更强大了。或许你不会去使用他,但是在若于年后,一些新的程序员(在今天或许尚没有接触过编程)将掌握一门如此强大的语言。。。。。。。。
我们看看如何的改变:
Shared Function <System.Runtime.InteropServices.DLLimport("user32.dll")> MessageBoxA(ByVal hwnd As Integer, ByVal text As String, ByVal lpcaption As String, ByVal wtype As Integer) As Integer
End Function
首先integer被作为32位数据替代了long(long是64位)
System是Net语言中的一个族,System.Runtime.InteropServices是system中的一个类。System.Runtime.InteropServices.DLLimpor是其中的一个方法。调用DLL的API
接口,这个的意思就是vb6的lib"user32", share是共享的意思,例如:
Public Class classA
Shared Function <System.Runtime.InteropServices.DLLimport("user32.dll")> MessageBoxA(ByVal h As Integer, ByVal m As String, ByVal c As String, ByVal type As Integer) As Integer
End Function
End Class
你可以这样调用 classA.MessageboxA 但是如果没有这个share 在class后打点就没有MessageboxA的成员出现了
现在你就象以前一样的使用他吧。

其实上面这个方法并不正确,我们仍旧要使用API声明,只是换了一各形式

如果你认为这就是VB.Net就错了,看看这个:
system.WinForms.MessageBox.Show("对话内容写在这里", "标题写在这里", messagebox.OK BitOr messagebox.IconAsterisk)

这就是面向对象,你已经完成了所有的任务。不需要任何的API声明。不需要写多余的代码。

messagebox.IconAsterisk=惊叹号图标
messagebox.IconError=错误图标
messagebox.IconExclamation=警告图标
messagebox.IconHand=错误图标
messagebox.IconInformation=提示图标

所经点NET就是打点到达,在族后面打点,在类后面打点,在对象后面打点。第二个问题就是类与类之间相互的关系,Net在网上处理人与人的关系,在程序语言中处理类与类的关系。倒底是加不加share,倒底是类后面打点,还是Dim成一个对象(把他当一个变量吧)再说,是等于class,还是New class.是dim xxx as class=new class 还是dim xxx as new class
就是这样VB.Net将更简单,不须要研究一些很难的东西。
写一个程序将会象写一篇文章那样自由,他也更难,他让你自已决定怎么做,学历经验或许不再是最重要的,他让你在智慧的空间驰骋。。。。。。。。。

时间: 2024-08-03 12:52:21

走近VB.Net(二) 再谈函数调用的相关文章

走近VB.Net(十二) 注册表快速入门

快速入门|注册表 走近VB.Net(十二) 注册表快速入门 作者:hejianzhong VB.Net中文站(http://vbnetcn.126.com) 首先介绍一下注册表的相关基础知识:注册表的每一个文件夹被称为一个Key(项),这个文件夹的子文件夹被称为SubKey(子项),而在一个子项中有不同的Value Name(值项-即数值顶),值项后面就是你要保存的数据Value Data(数据)了.而在子项中通常都有一个Default Value 是默认的Value Name,相信打开过注册表

走近VB.Net(五) VB.Net核心概念

概念 走近VB.Net(五) VB.Net核心概念 VB.Net中文教程在行文上有些重复太多甚至有些啰嗦,以至让人读得索然无味,但是,这个VB.Net中文教程确实是很难得甚至可以说是经典的VB.Net文章.说老实一点,除了读得累一些外,实在是比我写的好多少倍.第二个问题就是很多人谈到很惨,说一切要从头学起,其实所要你学的不过是一些简单的语法变化,最重要的是观念的改变,也就是思维方式的转向,也就是说在经过了最初的摸索以后,你在VB6(我是不懂VB6的,我只懂一些D(不是你想的那个D),没有面向对象

走近VB.Net(六) 菜单与托盘图标

菜单 走近VB.Net(六) 菜单与托盘图标 在VB.Net中菜单使用控件而不是菜单编辑器,主菜单使用MainMenu控件,弹出菜单使用ContextMenu,这里说一说弹出菜单,至于主菜单用法也没有什么大的区别,在VB6中只要使用菜单就一定会出现那个看得让人有点厌烦的标题栏,可是又没有什么好的办法,只好增加一个隐藏的窗体放置菜单,这就增加了不必要的内存开销,而现在的菜单控件不再有这些问题,可以设置没有标题栏却仍然使用菜单,更加灵活,更加易于使用,当然功能也更强大.托盘图标也使用控件,真的非常容

走近VB.Net(四) 关于数据类型与示例

示例|数据|数据类型 走近VB.Net(四) 关于数据类型与示例 在前面几章谈得最多的是Variant(vb6)到Object(vb.net)的转换,Object被称为通用的数据类型.另外是32位的long(vb6)被integer(vb.net)所取代,在vb.net中long储存64位的带符号整数.而short存储16位的数字取代vb6的integer的位置.而我们在下面要谈的是Decimal数据类型. 在初学vb6的时候,可能所有的人都做过同一个入门程序"计算器",你可能看到在计

走近VB.Net(一),VB中的族,类,对象(摘录部分MSDN)

对象 走近VB.Net(一),VB中的族,类,对象 VB.Net是面向对象(object-oriented)的,又称为物件(object)导向(oriented).在VB.Net中所有的变量类型都是基于object,而不是VariantDim x As Variant 会被升级为 Dim as object.如果你不理解对象,暂时你可以把他理解为一段数据,他是实际存在于内存的,所以对象以称为实例(instance)而类(class)就是类别,他定义一群对象,是一个对象的群体,并定义方法成员.所以

走近VB.Net(十三) VB.Net问答全集

走近VB.Net(十三) VB.Net问答全集 VB.Net中文站 http://vbnetcn.126.com hejianzhong 最近老是有人问一些重复的问题,我就想到把他们汇总起来,现在用VB.Net太少,资料更少.问的人也不多,这 些都是从全国的讨论组收集的,有一部份来自-[VB.Net中文站讨论组]http://my.6to23.com/vbnetcn/bbs/BBS2index.htm. 一些是我回答的,有一些是一些较早研究VB.Net的网友回答的,因为是探讨的阶段,可能会有一些

用户交互设计:再谈人机交互中的设计隐喻

文章描述:再谈人机交互中的设计隐喻. 上篇文章<人机交互中的设计隐喻-由Mac的文件替换引出来的话题>发出来以后收到了各种各样的反馈,我索性再写一篇续文,算是集中答复吧. 用户习惯 在所有的反馈中,"用户觉得Windows的做法更好用,所以理应这样设计"的说法可谓最多.那么我们就来看一下,为什么有人会觉得Windows的做法更"好用". 我们来看两个例子. 银行里面用的系统-就是柜台后面业务人员用的那个-基本上还是字符界面,没有漂亮的图标和窗口,甚至可能

网页设计经验分享:再谈网易首页的改版

之所以说再谈网易首页的改版,是因为去年临近奥运会的时候,网易首页做过一次改版,奥运会之后网易首页做了一下小调整,调整后的首页让人感到很困惑.今天在没有任何预告的前提下,网易又上线了新首页. 其间有个小插曲是,新首页刚上线后,很多地区突然无法访问网易首页,我访问的时候是服务器返回500. 网易就此次改版的说明是:"本次改版从整体到细节都有一个质的飞跃,新版继承了网易一贯简约.大气.包容的设计品质,达到以用户为中心提高用户体验.促进频道发展的改版设计目的." 此次改版促进频道发展的目的似乎

走近VB.Net(八) 常用语法

语法 走近VB.Net(八) 常用语法一:Try---Catch---finally---end try 捕获错误 把一个可能出错的语句放在try后面,如果出错,执行catch语句, catch可以有多个,第一个catch不能捕获的错误,将被下一个catch语句所捕获.在所有的处理结束后,执行finally语句. 在一个try---end try 过程中可以使用catch与finally两个中的一个,或者两个一起用, 二:Protected, private, Public 封装控制 这三个关键