对于IT软件开源领域,笔者关注的还不够多,虽然前面共享过一些源码,但是对软件开源所做的内容还不够(见文:开篇:开源研究的启示 - 开源研究系列文章)。所以,后续笔者会陆续开源一些自己以前编写的程序源码,就当做笔者开源的一点贡献吧。
本文将要描述以前编写的一个VB6的仿Winamp的磁性窗体的源码,这个源码是04年笔者在大学毕业设计之余编写的,如果大家有需要的就看看吧。此源码是VB6编写的,如果需要C#版本请大家自己编写。从VB6源码也能转换到VB.NET,但是因为是x86架构,在x64架构的操作系统里没法使用,这个大家需要关注。
本文涉及到的VB6的架构,本项目只是针对磁性窗体类模块编写的,如果需要高级的架构,请大家见文:VB程序架构分析。还有一个使用该类模块的小作品,见文:VB6 磁性移动窗体类模块MagneticFormHelper使用。
1、 先看看程序结构:
这里定义了一个主窗体Form1,两个子窗体Form2,Form3。一个模块Module1,用来声明程序公共函数。一个clsHelpers类模块,用来声明使用到的帮助类。还有就是今天的主角clsMagneticForm类模块,声明了磁性窗体所使用到的函数。
2、 下面看看Module1.bas。
这里对磁性窗体的参数进行了设置。然后加载显示各个窗体。
3、 下面看看clsHelpers.cls文件。
这里声明了磁性窗体类模块变量,统一对类模块进行管理。具体功能描述见上面的VB6架构分析。
4、 下面对窗体调用磁性窗体类模块进行描述。
代码比较简单,直接在事件中进行调用即可。
5、 下面主要对磁性窗体主类模块clsMagneticForm.cls进行分析。
使用两个数组对窗体句柄和窗体位置、长度等进行了保存。
设置主窗体(只有一个主窗体),还有多个子窗体,以及窗体吸附距离。
这里是窗体鼠标单击下后的事件,重新获取了主窗体和子窗体的各个位置长度的,为下面的鼠标移动事件做准备。
然后就是鼠标移动事件,这里处理了所有主窗体和子窗体的吸附,移动问题。
6、 最后总结下。
本文主要对仿Winamp磁性吸附、移动窗体的实现代码进行了简要的描述,其中主要使用主窗体和子窗体的联合移动这块比较实用。
具体源码功能大家在使用时有问题请自行修改,或者联系笔者:lzhdim@163.com。
Etc.本文就当做笔者自己开源方面的一个开头点,希望后续有更多的代码能够开源分享给大家。
Austin Liu 刘恒辉
Project Manager and Software Designer E-Mail:lzhdim@163.com Blog:https://lzhdim.cnblogs.com 欢迎收藏和转载此博客中的博文,但是请注明出处,给笔者一个与大家交流的空间。谢谢大家。 |