今天写一篇博文告别使用了15年的VB6,从此终结程序生涯。记得读大学的时候第一学习编程,用VB6嵌入MediaPlayer控件写了一个简易视频播放器,看着视频的画面激动人心,从此就爱上了编程,从此也和VB6接下了不解之缘,大学毕业后进入国内某软件公司,直到去年离职一直在用VB6开发和维护大型ERP,在业界看来VB6太老了,廉颇老矣尚能饭否?然而真要尘封却有不舍。

VB6是微软COM(组件对象模型)的成功典范,可以说VB6的成功代表了微软COM的胜利,然而自微软.NET战略推行以后,VB6却被无情地抛弃,意味着其推行的COM将逐步退出历史舞台,.NET平台中虽然保留了VB语言,但在国内大部分VB程序员看来其已成了鸡肋,在实际工作中不得不换成语言更接近C++的C#。随着.NET的更新换代,基于COM模型的各种组件仍然存在,然而由于VB6被彻底抛弃,用VC+ATL/MFC开发的OCX等COM组件似乎已无容身之处,放在.NET上去使用已非明智之举。虽然我的工作IDE已经换成了VS2017,然而仍然喜欢开个装有XP系统的虚拟机,里面装着简洁高效的VC6+VB6开发需要的东西,用VC6+ATL做底层,VB6做应用,已成为习惯。

VB6是面向应用层面的,在桌面应用普及的时代,用其开发各种应用软件,包括各种大型的ERP系统,虽然其有许多的缺点被一些程序员所诟病,然而瑕不掩瑜,不足之处可以用VC来弥补,因此,在ERP系统中,涉及底层的东西我们就用高效的VC6+ATL来实现,应用层面的我们就用VB6来呈现,这样一个健壮的桌面应用系统就应运而生,只要Windows操作系统支持,用上30年也不会出问题,架构的牢固程序员日常也就只关心用户需求的业务转化。

下面是日常工作中的一些模块测试程序,采用VC6+ATL做底层,采用VB6做界面,在Win10上工作得很好,运行效率很高,作为纪念张贴出来。希望某一天微软能把VB6开源吧,优秀的语言不应让其沉没!

一个Skin模块测试,支持阴影透明调色,效果比GDI+做的DirectUI好,可运行在微软XP-Win10操作系统上,开发工具:VC6+ATL+VB6。

一个音频播放器模块测试,底层采用VC6+ATL,频谱可调,频谱的呈现在底层实现,VB6传递一个窗口句柄即可。开发工具:VC6+ATL+VB6。

一个Sqlite模块测试,查询速度很快,采用ADO方式封装,BUG可控,最近空闲将其更新为sqlite3.26.0最新版本。开发工具:VC6+ATL+VB6。

... ...

VB好吗?好。遗憾,这一切随着程序生涯的结束,已成为历史,再见!

再见VB6!再见程序生涯!的更多相关文章

  1. C# 为VB6.0程序模拟串口数据

    为VB6.0编写程序模拟数据测试使用. 一.VB6.0 控件MSComm,来发送接收串口数据 CommPort 属性设置并返回通讯端口号,虚拟端口为COM2. Settings 属性设置并返回端口的波 ...

  2. 在IBM学到的东西,到底对我的程序生涯产生了多大的影响

    我和很多人交流过一个有趣的现象,那就是刚毕业到30岁这段时间,会觉得时间过得很慢,总觉得自己还很年轻,但是一旦过了30岁,时间就如白驹过隙,一年又一年飞逝而过. 我自己也是,眼瞅着毕业快15年了,15 ...

  3. VB6 让程序结束后带有返回值

    第三方命令行程序运行完之后,批处理中可以随时通过errorlevel变量收取运行结果.而VB写的控制台程序却没有提供这样的功能.关于让控制台程序返回值的教程是本博客独家放出. 返回值,其实也就是进程的 ...

  4. 【JZOJ4924】【NOIP2017提高组模拟12.17】向再见说再见

    题目描述 数据范围 =w= 设h[i]表示,甲队得到i分的方案数. 那么h[(n+k)/2]和h[(n−k)/2]就是答案. 设g[i]表示,甲队得到至少i分的方案数. 那么h[i]=g[i]−∑j& ...

  5. 再见,OI

    你好,NOIP 2015年9月1日 正式成为了福建省莆田一中的一名高一成员 后来学校搞了选修 大家都很激动 因为自己的兴趣和特长能够得到发挥了(或者说能逃课或者看好多电影) 发现选修提供的选项中有好几 ...

  6. 逆向集录_00_不同程序OEP特征总结

    在分析/逆向 程序时,如果事先知道这类程序的一些特征,那将会是事半功倍的: 分析/逆向 程序,和写程序不同,比喻的话:写程序像在作案,分析/逆向 程序就像是在破案,对破案来讲,重在假想和推理: 特征1 ...

  7. .NET中STAThread和MTAThread

    本文讨论在.NET中使用进程内COM组件时的公寓模型,以一个示例直观演示STAThread和MTAThread的作用和区别. 1. COM中的公寓 1.1 基本规则 公寓是COM组件的运行环境,日常生 ...

  8. php面向对象编程(一)

    类与对象关系: 类就像一个人类的群体 我们从类中实例化一个对象 就像是制定一个人. 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类, 做出来一个类很容易 ...

  9. 瘋子C++笔记

    瘋耔C++笔记 欢迎关注瘋耔新浪微博:http://weibo.com/cpjphone 参考:C++程序设计(谭浩强) 参考:http://c.biancheng.net/cpp/biancheng ...

随机推荐

  1. dos2章

    讲FOR之前呢,咋先告诉各位新手朋友,如果你有什么命令不懂,直接在CMD下面输入: name /? 这样的格式来看系统给出的帮助文件,比如for /? 就会把FOR命令的帮助全部显示出来!当然许多菜鸟 ...

  2. 解决 Linux 桌面亮度调整不工作

    工作原因开始使用Ubuntu.桌面环境为GNOME,不过亮度调整和桌面环境没多大关系. 思路: 不管是GNOME还是Unity,都会尝试自己去接管亮度调整,也就是去 /sys/class/backli ...

  3. oracle针对某列让特定信息排序[decode]

    在ORACLE查询中,如果在没有排序,但又想让某列中特定值的信息排到前面的时候,使用oracle的decode(字段,'字段值',数字) 如 select name from user 查询出来的所有 ...

  4. iOS 10 Programming Fundamentals with Swift 学习笔记 0

    1,a single statement can be broken into multiple lines ,For example, after an opening parenthesis is ...

  5. Ubuntu 的 bash和dash的区别

    什么是bash ? Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh.csh.ash.bsh.ks ...

  6. Javascript 严格模式(strict mode)详解

    Javascript 严格模式详解   一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Ja ...

  7. Altium Designer 10 执行DRC发现有 Length Constraint 解决办法

    在PCB布局连线结束后,执行DRC,结果Length Constraint 报错,如图: 在Design Rules中找对应的规则约束,怎么也找不见. 其实是,在差分对进行等长蛇形绕线的步骤中,约束了 ...

  8. 20155219付颖卓 《网络对抗技术》 Exp9 Web安全基础

    实验后回答问题 1.SQL注入攻击原理,如何防御 ·SQL攻击的原理很简单,就是在用户名输入框里输入SQL语句,来欺骗数据库服务器进行恶意操作 ·防御可以从以下几个方面下手: (1)在web网页设计的 ...

  9. java中字符串"1999-10-01T00:00:00+08: 00" 转化为Date格式

    String oldStr = "1999-10-01T00:00:00+08: 00": SimpleDateFORMAT sdf = new SimpleDateFORMAT ...

  10. liunx学习笔记

    告知-----------------------------------grub启动时滚动的代码屏默认我们执行命令使用的为bash,unix使用的为csh能够通过service 程序名进行start ...