今天写一篇博文告别使用了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. TabLayout下划线指示器自适应文字宽度

    解决方案1: 更新design库到28.0.0-rc01 implementation 'com.android.support:design:28.0.0-rc01' 然后在TabLayout里设置 ...

  2. C# 保存屏幕截图

    //屏幕宽 int iWidth = Screen.PrimaryScreen.Bounds.Width; //屏幕高 int iHeight = Screen.PrimaryScreen.Bound ...

  3. 神州数码策略路由(PBR)配置

    实验要求:掌握PBR配置的方法 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip address ...

  4. Flask 上下文管理

    为什么用threading.local? 我们都知道线程是由进程创建出来的,CPU实际执行的也是线程,那么线程其实是没有自己独有的内存空间的,所有的线程共享进程的资源和空间,共享就会有冲突,对于多线程 ...

  5. 安装vmware tools问题

    我爱破解的xp虚拟机,之前没有装vmware tools,用起来非常不方便.因此,决定安装,但安装时出现了一些问题,特此记录: * 点击虚拟机的安装VMWARE TOOLS ,出现错误提示: 虚拟机需 ...

  6. XMind 8 pro update 7激活方法

    激活过程 0.下载XMindCracker.(自行百度下载)1.断网,使用修改hosts方法,在最后一行添加0.0.0.0 www.xmind.net2.将XMindCrack.jar拷贝到XMind ...

  7. 在c#中 RemoveAt、 Remove、delete用法区别

    有三种方法可以删除 DataTable 中的 DataRow: Delete 方法和 Remove 方法和 RemoveAt 方法 其区别是: Delete 方法实际上不是从 DataTable 中删 ...

  8. 博客作业06--结构体&指针

    1.本章学习总结 1.1思维导图 1.2.本章学习体会 结构体突破了数组的局限,把不同类型有内在联系的数据汇聚成一个整体,这种新的构造数据类型,提供了更便利的手段,更好的实现代码功能.通过代码建立文件 ...

  9. Windows Server 2012配置iis遇到的问题

    发布网站访问时报500 - 内部服务器错误,经排查是Windows Server 2012上的iis配置有问题,有些需要的功能没有配置. 在重新配置iis时总是安装失败,提示存储空间不足. 在网上查找 ...

  10. Ajax会自动将返回的对象属性首字母转化为小写

    今天在使用Ajax的时候遇到的问题. $.ajax({ type: "post", url: "<%=basePath%>reserd'f'w/liswe'f ...