再见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 ...
随机推荐
- python爬虫教程实践1——安装scrapy
系统:macOS Sierra 10.12.6 python版本:3.6 1.安装homebrew(以前的环境配置中有介绍过) 官网:http://brew.sh/index_zh-cn.html 2 ...
- ASP.NET MVC学习中记录下使用JavaScript和CSS层叠样式表的经历
首先我是想要在ASP.NET MVC 5.0中使用从jQuery之家下载下来的插件. 在下载了许多我觉得好用方便的插件之后,我在VS2017中新建了一个项目叫MVCTest,然后选择MVC模板,等待自 ...
- 同一个服务器部署两个Tomcat并用Nginx实现反向代理
需求场景:由于服务器只有80端口可供外网访问,但需要部署两台tomcat来运行两个不同的项目,所以选择了nginx做反向代理 一个upstream tomcat_server对应一个 locatio ...
- Linux环境下nginx集群搭建
#确保安装nginx,stream模块默认不安装的,需要手动添加参数:–with-stream, nginx1.9或以上版本 #nginx.conf文件中,添加以下内容(只供参考),这个不能放在htt ...
- hadoop day 6
1.为hive配置mysql数据库 conf/hive-site.xml <property> <name>javax.jdo.option.ConnectionURL< ...
- 数组之slice,splice,Concact,Reverse,Sort方法
Slice(strart,end)用来从数组中提取元素.该方法不会改变元素数组,而是将截取到的元素封装到一个新数组中返回 参数start 截取开始的位置索引,包含开始索引 参数end 截取结束位置的索 ...
- 图解HTTPS协议
原文出处: leezhong的博客 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实 ...
- python类的语法和底层实现
语法: class 类名: name = “egon” # 类属性 def __init__(self): self.age = 18 # 对象属性 self.__sex = "fe ...
- 简易实践的vue自定义tab入门
本文基于vue官方文档,分别为:动态组件 & 异步组件.插槽.进入/离开 & 列表过渡 章节链接描述 要想实现tab动画,首先要了解vue中哪些元素/那些组件适合在那些条件下实现动画效 ...
- Map的嵌套 练习
Map的嵌套 练习 利用迭代和增强for循环的两种方式实现如下效果 package cn.ccc; import java.util.HashMap;import java.util.Iterat ...