再见VB6!再见程序生涯!
今天写一篇博文告别使用了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!再见程序生涯!的更多相关文章
- C# 为VB6.0程序模拟串口数据
为VB6.0编写程序模拟数据测试使用. 一.VB6.0 控件MSComm,来发送接收串口数据 CommPort 属性设置并返回通讯端口号,虚拟端口为COM2. Settings 属性设置并返回端口的波 ...
- 在IBM学到的东西,到底对我的程序生涯产生了多大的影响
我和很多人交流过一个有趣的现象,那就是刚毕业到30岁这段时间,会觉得时间过得很慢,总觉得自己还很年轻,但是一旦过了30岁,时间就如白驹过隙,一年又一年飞逝而过. 我自己也是,眼瞅着毕业快15年了,15 ...
- VB6 让程序结束后带有返回值
第三方命令行程序运行完之后,批处理中可以随时通过errorlevel变量收取运行结果.而VB写的控制台程序却没有提供这样的功能.关于让控制台程序返回值的教程是本博客独家放出. 返回值,其实也就是进程的 ...
- 【JZOJ4924】【NOIP2017提高组模拟12.17】向再见说再见
题目描述 数据范围 =w= 设h[i]表示,甲队得到i分的方案数. 那么h[(n+k)/2]和h[(n−k)/2]就是答案. 设g[i]表示,甲队得到至少i分的方案数. 那么h[i]=g[i]−∑j& ...
- 再见,OI
你好,NOIP 2015年9月1日 正式成为了福建省莆田一中的一名高一成员 后来学校搞了选修 大家都很激动 因为自己的兴趣和特长能够得到发挥了(或者说能逃课或者看好多电影) 发现选修提供的选项中有好几 ...
- 逆向集录_00_不同程序OEP特征总结
在分析/逆向 程序时,如果事先知道这类程序的一些特征,那将会是事半功倍的: 分析/逆向 程序,和写程序不同,比喻的话:写程序像在作案,分析/逆向 程序就像是在破案,对破案来讲,重在假想和推理: 特征1 ...
- .NET中STAThread和MTAThread
本文讨论在.NET中使用进程内COM组件时的公寓模型,以一个示例直观演示STAThread和MTAThread的作用和区别. 1. COM中的公寓 1.1 基本规则 公寓是COM组件的运行环境,日常生 ...
- php面向对象编程(一)
类与对象关系: 类就像一个人类的群体 我们从类中实例化一个对象 就像是制定一个人. 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类, 做出来一个类很容易 ...
- 瘋子C++笔记
瘋耔C++笔记 欢迎关注瘋耔新浪微博:http://weibo.com/cpjphone 参考:C++程序设计(谭浩强) 参考:http://c.biancheng.net/cpp/biancheng ...
随机推荐
- element UI 下拉菜单滚动监听(vue指令)
直接看代码吧,可以直接粘贴此代码到你的编辑器中看效果. <template> <div class="page-component"> <div cl ...
- vue生命周期中created和mounted的区别
created在渲染页面之前使用,通常是用来渲染页面 mounted通常是在渲染页面之后,用来操作dom节点 通常情况下使用created比较多,使用mounted相对少一些,一些情况使用mounte ...
- Js/Session和Cookies的区别
1.cookies数据存放在客户的浏览器上面,session放在服务器上面.2.cookies不安全,别人可以分析浏览器的数据进行cookies的欺骗,考虑到安全性,应该使用cookie3.sessi ...
- Django_ORM字段_字段参数
Object Relational Mapping (ORM) ORM:对象关系映射模式是一种为解决面向对象与关系数据库存在的互补匹配的现象技术.简单说就是通过使用描述对象和数据库之间的映射的元数据, ...
- Vue源码之目录结构
Vue版本:2.6.9 源码结构图 ├─ .circleci // 包含CircleCI持续集成/持续部署工具的配置文件 ├─ .github // 项目相关的说明文档,上面的说明文档就在此文件夹 ├ ...
- JPA、Hibernate框架、通用mapper之间的关系及通用mapper的具体实现
JPA是描述对象-关系表的映射关系,将运行期实体对象持久化到数据库中,提出以面向对象方式操作数据库的思想. Hibernate框架核心思想是ORM-实现自动的关系映射.缺点:由于关联操作提出Hql语法 ...
- laravel 修改时邮箱字段唯一性验证时忽略指定 ID
- DbVisualizer中SQL编辑框输入中文显示乱码
打开tools工具栏,选择tool properties,选择General--Appearance--Fonts,将fonts上面的三个字体都设置为仿宋,Apply,OK.
- 《DSP using MATLAB》Problem 7.27
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- [IOS][已越狱]配合网易云音乐,使用Bridge快速免iTunes导入音乐到“音乐”
前置:已越狱IOS设备 工具表: Bridge{bigboss源,可以使用cydown以非官方服务器下载安装} 网易云音乐{Appstore} Filza{很多源都有} 网易云试听缓存路径 ...