在08年,我曾经写过VB程序。前面也将该VB程序的架构剥离出来并发出来共享了(具体见http://www.cnblogs.com/lzhdim/archive/2012/03/08/2385028.html)。这些天快过年了,也没啥事,就想将该架构做个分析,仅做留念吧。

下面是该VB架构的主要部分:

下面对该架构做分析。

首先看看LogHelper这个组件。使用组件的好处是将各个不同用途的代码封装起来,以达到分层或者让程序的架构看起来更舒服。我这里讲组件看做主程序的插件使用。后续如果要编写使用插件的VB程序,可以进行参考。。。

1、  frmAbout是个关于窗口,用于显示该组件的相关属性

后面在主程序里如果使用该组件,可以通过调用该组件的一个API函数来显示该组件的相关属性信息。

该窗体的代码也很简单,就是一个调用API函数显示该组件的相关信息。基本上每个组件都有该窗体

2、  接下来看APICoordinator模块。

这个APICoordinator模块主要声明该组件使用到的Windows API函数定义。基本上每个组件都有该模块

3、  接下来看APIEnumerations模块

这个APIEnumerations模块主要声明了该组件使用到的枚举对象。基本上每个窗体都有该模块。

4、  接下来看看DLLInfo这个类模块

这里从代码可以看出该类模块主要提供了一个API函数以获取该组件的相关信息。基本每个组件都有该类模块。

5、  接下来看Global类模块

该类模块主要对外提供公共的对象声明。基本每个组件都有该类模块。

6、  接下来看看MainAPI这个类模块。

MainAPI就是该组件的主要模块了。这里将该组件的主要代码和实现的功能进行存放。

这里有句Private mDLLInfo As LogHelper.DLLInfo 就是将该组件的DLLInfo这个类模块进行了声明以供主程序调用显示。

接下来对主程序架构进行分析。

1、  先看窗体。

这里只提供了主窗体Main和欢迎窗体Splash。提供欢迎窗体的好处就是对主程序进行初始化。

欢迎窗体主要实现该软件的相关基本信息。

2、  接下来看看AppConstants模块

该模块主要声明了主程序使用到的各个常量。

3、  接下来看AppTypesDeclare模块。

该模块主要声明了主函数使用到的类型,从上图可以看出定义了一个消息枚举。

4、  接下来看AppWin32API模块

该模块主要声明了主程序主要使用到的Windows API函数。这里没对各个API函数进行注释,请使用到的各位自己注释。

5、  接下来看AppWindowProcess模块

该模块单独提出来,对主程序接收的消息进行处理。

6、  接下来看DLLRegister模块

该模块主要提供对使用到的DLL或者以后要使用的插件DLL进行注册以进行调用。

7、  接下来看Helpers模块

8、  接下来看StartMain模块

该模块提供了主程序的入口。主要对主程序进行初始化。

9、  接下来看AppFunction类模块

该类模块主要声明了主程序使用到的各个函数。

10、 接下来看AppHelpers类模块

该模块主要对各个使用到的组件进行声明,以便进行调用。

11、接下来看AppMsgProcess类模块

该模块主要提供了各个消息对应需要处理的函数。

11、 接下来看AppVariables类模块

该类模块主要提供了主程序使用到的变量声明。

接下来对使用该架构进行描述。

先添加组件

1.1 选择添加工程

1.2 选择新建ActiveX DLL 。

1.3 将DLL目录复制过去。

1.4 选择添加窗体、模块、类模块

1.5添加完毕

接下来添加主程序

1.1 选择 添加工程

1.2 将目录复制过去

1.3 保存工程组

接下来就是对该架构进行修改以实现功能了。。。

1、修改StartMain.bas模块中的启动代码。

2、往AppConstants模块添加常量。

3、往AppHelpers类模块添加组件声明

4、往AppFunction类模块添加函数

这里添加了初始化和结束主程序的代码。。。

5、往AppMsgProcess类模块添加消息处理代码

6、往AppVariables类模块里添加变量

该架构的好处,就是基本让VB程序实现了命名空间的效果。其中的变量、函数、组件提供的函数等都是通过类模块实现了,从而在代码里可以直接.出来。具体自己去体验吧。

好了,到这里该架构基本介绍完毕,剩下的就是对该架构代码进行补充以实现主程序的功能了。

VB程序架构分析的更多相关文章

  1. J2EE WEB应用架构分析

    1. 架构概述 J2EE体系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技术.这些技术的出现给电子商务时代的 ...

  2. fir.im Weekly - iOS/Android 应用程序架构解析

    假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 本期 fir.im Weekly 收集了关于  iOS/Android 开发资源,也加入了一些关于 Web 前端方面的分 ...

  3. Flickr 网站架构分析

    Flickr 网站架构分析 Flickr.com 是网上最受欢迎的照片共享网站之一,还记得那位给Windows Vista拍摄壁纸的Hamad Darwish吗?他就是将照片上传到Flickr,后而被 ...

  4. Android程序架构基本内容概述

    在Android操作系统中开发的应用程序都有一个结构缜密的架构.我们今天就来对这一Android程序架构做一个详细的分析.帮助大家了解程序开发的特点,以方便将来在应用程序开中明确自己的程序架构. An ...

  5. VB程序逆向反汇编常见的函数

    VB程序逆向常用的函数 1) 数据类型转换: a) __vbaI2Str    将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,7 ...

  6. 服务器程序源代码分析之三:gunicorn

    服务器程序源代码分析之三:gunicorn 时间:2014-05-09 11:33:54 类别:网站架构 访问: 641 次 gunicorn是一个python web 服务部署工具,类似flup,完 ...

  7. Android架构分析之Android消息处理机制(二)

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本号:4.4.2 在上一篇文章中我们看了一个使用Handler处理Message消息的样例,本文我们 ...

  8. NopCommerce架构分析(转载)

    原文 一,NopCommerce架构分析之开篇 NopCommerce是.net开源项目中比较成熟的一款业务应用框架,也是电子商务系统中的典范.所以很想多学习一下里面的设计和实现方式. 二,NopCo ...

  9. Qualcomm Android display架构分析

    Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu ...

随机推荐

  1. iOS开发之新浪微博山寨版代码优化

    之前发表过一篇博客“IOS开发之新浪围脖”,在编写代码的时候太偏重功能的实现了,写完基本功能后看着代码有些别扭,特别是用到的四种cell的类,重复代码有点多,所以今天花点时间把代码重构一下.为了减少代 ...

  2. C算法编程题(四)上三角

    前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个“上三角”,有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微复杂了点. 程序描述 ...

  3. Sublime写MarkDown实时预览

    [TOC] Sublime写MarkDown实时预览 Sublime作为神器,实至名归. 首先 1.安装Sublime,并安装Package Control,这里不多说. 2.安装MarkDown P ...

  4. IOS中block和代理

    从ios4开始引入block,就是代码块,结构类c语言 基本结构 返回值 (^block名称)(参数):int(^BlockName)(int):返回值为int型,参数是一个int值的叫BlockNa ...

  5. ZOJ Problem Set - 1402 Magnificent Meatballs

    比较简单的题目,题目大意就是将n个数字围成一个圈,找到一个划分,是的划分左边的数字之和等于右边的数字之和: e.g 10 1 2 2 5,那么可以找到一个划分10 | 1 2 2 5使得两边数字之和都 ...

  6. js图片预加载

    图片预加载有大体有几种方式 1.html标签或css加载图片. 显而易见我们使用img标签或者通过标签的background-image属性都可以实现图片的预加载.但是为了避免初次载入过多图片影响体验 ...

  7. iOS的一些面试题分析总结(1)

    本篇主要说一下多线程的东西,因为东西比较多,所以直接拿出一整个篇幅来说它了. 3. 多线程的底层实现? 1.先说一下什么是进程,什么是线程.什么是多线程. 进程是资源分配的单位,线程是调度运行的基本单 ...

  8. QTableWidget详解(样式、右键菜单、表头塌陷、多选等)

    在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...

  9. Win10 UWP 开发系列:使用SplitView实现汉堡菜单及页面内导航

    在Win10之前,WP平台的App主要有枢轴和全景两种导航模式,我个人更喜欢Pivot即枢轴模式,可以左右切换,非常方便.全景视图因为对设计要求比较高,自己总是做不出好的效果.对于一般的新闻阅读类Ap ...

  10. autocad2008+C#2008开发中设置自动加载dll

    一.复制编译后的dlll路径,比如我的是D:\zjy\cad开发\学习\宗地图\bin\Debug\zd.dll 二.随便找个地方新建一个记事本,在记事本中写入以下内容: (command " ...