⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 感悟visualbasic(1).txt

📁 学习(编程技巧_编程知识_程序代码),是学习编程不可多得的学习精验
💻 TXT
📖 第 1 页 / 共 2 页
字号:
从现在开始,我们要尽量使我们的程序面向对象,而且要学会不依靠别人提供函数而使用自己的办法解决问题。
由于以前写的程序都是面向过程的(当然如果你已经接触或使用了类,那很不错),所以我们要重新学习。如果问为何不一开始就学习面向对象?那是因为VB对面向对象的支持不很完善(因此有人称之为“基于对象”),而且面向对象的方法是比较抽象的,一开始就学的话很难掌握,所以到现在再来学习面向对象就会比较合适了(不然人们也不会说C++难学了)。好了,这是最后阶段的学习,让我们开始吧。
1.使用类和用户控件
首先要理解类的概念和意义,类与对象之间的关系,学会建立和使用类,尽量把自己那些比较复杂而功能相对独立、重复使用的可能性较高的那些代码写成类。当然,这里的意思并不是说复杂的就要写成类或复杂才可以写成类,因为类的用处不是一般函数可以比的,比如用Implemnets关键字建立起的对象,用WithEvents建立起的可以触发事件的对象都是函数无法实现的,有时会看到一个类的内容只有两行。
在写类的时候,建议新建一个ActiveX DLL工程,把类写成ActiveX DLL的形式,再在软件中引用编译好的ActiveX DLL,这样在修改到ActiveXDLL时不需要再修改引用了该DLL的软件的代码,可以马上测试修改后的效果,还可以在程序出错时方便查找问题的所在。
用户控件其实是已经具有一个可视对象的特殊类,因此和类有相同的优点。当一些东西需要在软件的生存期中始终存在,或者需要访问到软件界面上的其他控件时,就可以使用用户控件了。在写用户控件时,也应当让它独立起来,所以写成OCX控件是最好的。如果你的类在运行时是具有界面的,那使用用户控件就最合适了。
要注意编译成DLL的类和OCX控件需要注册才可使用,如果你是在自己的计算机上编译的,那VB编译时会自动为你注册,如果拿到别的计算机上使用,需要在所在计算机上注册才能使用(具体注册方法请参考相关书籍)。
2.VB与API的综合使用
前面讲到的只是简单地使用某些API以实现某些功能,不过现在我们需要掌握的是API与VB的结合使用,用来实现我们的“创造”。在这里大家看到的东西应该是一般应用的时候比较少遇到的,不过如果想要真正掌握VB,这就一定要学了。
许多人都说VB没有指针,正确的说是没有指针变量。当在一些情况下我们需要用到指针的特殊用处时,VB就显得力不从心了。不过不要紧,因为我们会自己创造,我们的目的只是实现我们预期中的效果。
VB有这几个函数:VarPtr、StrPtr、ObjPtr。从名字就可看出分别是取得变量的地址、字符串的地址、对象的地址(返回值均为Long)。结合API,我们就可以做出与指针相似的效果出来。如:CopyMemory()(一个API)可向一个内存地址复制一段数据,在传递变量时只需传递变量的地址即可;需要动态分配内存的话,有GlobalAlloc()(另一个API)……等一下,也不一定要GlobalAlloc()嘛,VB有动态数组呀,如果要更精细的分配,用字节型(Byte)数据,然后用CopyMemory()赋值。看看,用VB写链表就成为可能(要熟悉掌握自定义数据类型和它的内存分配,可用Len()函数得到自定义类型变量所占内存大小)。当然,实际的实现过程不会很简单,这里只是做个指导,你要自己完成(那才是自己的东西呀)。
我相信几乎所有用VB的人都痛恨Mscomctl.ocx控件,我们经常使用的工具栏、状态栏等公用组件都在里面,如果我们的程序用到了仅仅一个工具栏,那就要把它那肥胖的体积也一起带上(单个文件就1M),悲哀啊……还有,我想给自己的工具栏画上背景怎么办?好多程序都自己定制了公用组件的外观,VB程序就不行了吗?VB带的公用组件功能好少啊,怎么这也没那也没……所以,当你有这样的烦恼的时候,就应该自己动手,丰衣足食。
学会LoadLibrary()、FreeLibrary()、CreateWindowEx()等几个API,学会使用回调函数,学会SubClass,然后拿起MSDN,把英文学好来试试自己做Windows公用组件,如果成功了,那你就可以对Mscomctl.ocx和一大堆标准控件大声说“看来你已不适合我”了。当然也要一步一步来,这个过程会有相当多的困难,花费的时间也是相当长的,特别是做一些外观比较Cool、功能较强大的东西。
如果你不想用传统方法也没关系,自己在用户控件上画,用自己的代码实现(如果速度不快可以用API帮助提速)。那可就完全是你的东西了,Windows也拿你没办法,呵呵。
以上只是两个例子,不过相信这两个例子所说的是大家在这个时候最敏感的问题,应该也能从中学到什么道理吧?而前面说到的使用别人的OCX控件来解决自己无法解决的问题,现在也应该再次尝试自己解决了,把那个控件放下吧(不过如果该控件是实现VB的能力之外的功能,那就没有必要了)。
如果有时间,可以自己试试一些API,然后和VB的通常做法结合起来,可以得到很好的效果。更多的时候是能够提高速度,有的API的速度可以比VB本身的函数快50倍以上(最常见的是画图函数)。当然也要考虑有没有这样做的必要性,具体做法要结合实际工作来决定。
最后仍要记得代码重用的规则,你写的东西都尽量写成一个完整的类、一个用户控件,把可以重用的函数、程序段都保存为一段独立的代码,以后你的编写工作会方便许多。
怎样?VB是不是很不错呢?虽然是非常容易掌握的语言,但同时非常强大,而且许多经常要做的工作已经为我们先做了,为我们省了不少麻烦,最近我越来越有这种感觉了。如果还有谁武断地说VB如何如何糟,那一定是为了掩饰自己能力的不足,真正把VB用好了的人应是不会对VB有太多埋怨的。现在不用犹豫了,带上你的刀……不,是VB,到山里(程序谷?)去修炼吧……
文末,附上一些VB编程的相关网站:
http://www.Experts-Exchange.com:非常好的问题讨论区,高手数不尽,而且这里的人很有专业精神,不会讨论一些和程序无关又无聊的问题。不过想要别人帮你解决问题,自己也要有真诚的态度。
http://www.Codeguru.com/vb:有名的源码讨论站点,特点是在每个源码下面都可以跟帖讨论。
http://www.planet-source-code.com/vb:拥有大量的源代码,是许多程序员爱去的地方。
http://msdn.microsoft.com/code:微软的示例源程序。
http://www.allapi.net/:在线Win32API数据库,并且提供了一个可离线使用的API浏览器代替品,特点是不仅可以查看API的声明,而且连MSDN里的说明也加了上去,并且内容可以随时更新到最新版本。
http://www.vbsquare.com:许多有用的源码、问答和知识点等。
http://www.vbwire.com:提供有关VB的最新消息。
http://www.zarr.net/vb:许多VB源码和技巧。
http://www.vb2themax.com:提供大量VB技巧、函数和优化技术。
http://www.mvps.org/vbnet/index.html:有许多实用的源码,分类详细。
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -