见过有不少人写的程序不喜欢用图标。且不说工具栏等处的图标,很多人连窗体图标都用的是VB6默认的图标。但我觉得,再简单的有窗体的程序,也至少要弄一个主窗体图标才好,同时这个图标也充做编译后的EXE程序的主图标。事实上1998年诞生的VB6,对图标方面的支持也不多,比如不方便单独设置应用程序图标,而是只能将应用程序的图标“绑定”到某个窗体的图标上。而且,令人郁闷的是,并没有App.Icon这样的属性直接访问应用程序图标。唉,说了这么多,其实只是想分享一下我下面这套图标设置代码:
1,在任一标准模块中定义一个全局对象:
Visual Basic code?1 Public g_AppIcon As StdPicture '应用程序图标
2,在启动窗体的Form_Load事件前部初始化这个对象
Visual Basic code?1 Set g_AppIcon = Me.Icon
注意:除非很多程序的启动窗体(比如登录窗体)并不是主窗体,所以这个系统图标尽量在先出现的窗体中初始化。
3,在多窗体程序中,主窗体以外的窗体要使用主窗体图标的,一定要写成类似这样的:
Visual Basic code?1 Me.Icon = g_AppIcon
注意:切忌写成 Me.Icon = frm启动窗体.Icon这样的。因为一般来说像登录窗体这种启动窗体,在登录后就退出了,你要是这样写,实际上造成了启动窗体的隐式加载,这样程序退出时反而因有隐藏的启动窗体没有退出,而导致进程实际上没有退出。
补充:
1,因为VB6中的对象是基于COM的,它的销毁和引用计数相关,所以不用担心Set g_AppIcon = Me.Icon这样后,会出现退出启动窗体会导致图标失效等相关问题。
2,这里没有使用LoadResPicture来加载应用程序图标,是因为这个函数只能载入低彩色的图标,而不像在设计器里设置窗体图标时,可以有24位真彩色的,并且运行时实际有效。 弄一个动态图标差不多,每次登录都看到不同的图标,让用户有新鲜感