中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual Basic > 综合文章
Visual Basic中软件封面技术探秘
作者:未知 时间:2004-02-14 12:12 出处:eNet硅谷动力 责编:chinaitpower
              摘要:Visual Basic中软件封面技术探秘
Visual Basic中软件封面技术探秘


  封面技术在软件开发中越来越成为一种标准,无论你在dos或windows的环境下 进行软件开发,一个漂亮而醒目的封面总会使你的软件更加充满魅力。
  对于windows环境下的应用软件,封面技术更是必不可少。微软公司的office套件,如word,其简洁美观,具有真实三维效果的封面给所有office的用户留下了深刻的印象。其封面的设计完全可以作为windows应用程序的标准。从word的封面设计我们可以看出windows环境下的应用软件的封面设计应遵循以下原则:

  在主界面载入的同时载入,封面应该清楚的显示软件名称及版本信息,在主界面载入完毕后自动卸出内存,让出所占用的windows系统资源。

  使用微软公司的visual basic进行软件开发是windows环境下应用程序开发的捷径,同样,使用visual basic制作应用程序封面也是相当方便的。在开发过程中,主要应该解决的问题有:

1. 封面的制作。

  这不是一个纯技术性的问题。开发者必须有一定的美术知识和功底,制作出的封面也可以具有个人的不同的风格。在Visual Basic中,封面也是一个窗体,开发者可以在窗体上使用Visual Basic的绘图工具line和shape绘制出图形,甚至可以绘制出类似word的三维效果,也可以在窗体内载入一个图片框(picture box)或图象控制(image control),利用图片框或图象控制载入自己所喜欢的图片来制作封面,在图形之上,可以使用文本框(text box)或标签框(label)来显示版本信息。为了使这样的一个窗体更加象一个封面,应该去除窗体的控制框,标题栏和最大最小化按钮,同时窗体的大小也不允许用户改变。因而在封面窗体的属性中,属性control box应设为false,caption应设为空,maxbutton和minbutton应设为false,borderstyler属性设为1,即固定的单线边界,这样就实现了一个具有专业水准的封面。



2. 浮动窗体的实现。

  由于主窗体先载入,然后激发封面的事件(event),使封面窗体成为当前活动窗体,所以必须保证窗体总是浮在主窗体的上面,在Visual Basic中,这个问题主要依靠调用windows的api函数setwindowpos来实现。setwindowpos函数的声明如下: 

declare sub setwindowpos lib "user" (byval hwnd as integer, byval hwndinsertafter as integer, byval x as integer, byval y as integer, byval cx as integer, byval cy as integer, byval wflags as integer)  

其中: hwnd为作为封面窗体的句柄;

hwndinsertafter 指示为封面窗体前载入的窗体;

x为封面窗体左上角的x坐标;

y为封面窗体左上角的y坐标;

cx为窗体新宽度;

cy为窗体新高度;

wflags影响窗体大小和位置的16位值。

其中,hwndinsertafter设为hwnd_topmost,wflags设为swp_nomove (不移动窗体,即忽略cx和cy)或swp_nosize(不改变窗体大小,即忽略x和y),就可以实现将hwnd标识的窗体置于所有非最顶窗体之上。


3. 还要保证主窗体载入完毕后,封面窗体自动卸出。

  这主要靠在主窗体中使用定时器控件,在激活主窗体的activate事件中激活定时器,设置定时器属性,在定时器控件的事件timer中,关闭定时器,卸出封面。

  下面给出的程序实例是一个完整的封面设计,供Visual Basic程序开发者参考。

  假设封面窗体名为frmcover,主窗体名为frmmain,其中封面窗体可以用绘图指令绘出,下 面的程序给出了绘制三维窗体的方法,在封面窗体载入过程中,窗体上可根据用户需要绘制三维面板或图片框等。

sub form_load ()

dim fwidth as integer

dim i as integer, t as integer, l as integer

dim w as integer, h as integer  

frmcover.backcolor = &hc0c0c0

frmcover.left = (screen.width - width) / 2

frmcover.top = (screen.height - height) / 2

frmcover.scalemode = 3: fwidth = 4

frmcover.autoredraw = -1  

for i = 1 to fwidth

t = i

l = i

h = scaleheight

w = scalewidth

line (l, t)-(l, h - i), rgb(255, 255, 255)

line (l, t)-(w - i, t), rgb(255, 255, 255)

line (w - l, t)-(w - l, h - t), rgb(64, 64, 64)

line (l, h - l)-(w - l, h - l), rgb(64, 64, 64)

next i  

end sub


在主窗体的激活过程中激活定时器,并设置定时器的interval属性,程序如下:

sub form_activate ()  

timer1.interval = 3000 ’封面存在时间为3秒

timer1.enabled = true ’打开定时器  

end sub

载入封面的代码放在主窗体的load事件中,可以改变鼠标形状以示用户等待。首先在通用过程中声明常量:

const hwnd_topmost = -1

const swp_nomove = &h10

const swp_nosize = &h40

const flags = swp_nomove or swp_nosize

程序中使用setwindowpos 函数实现浮动效果:

sub form_load ()

screen.mousepointer = 11 ’鼠标呈沙漏状

frmcover.show ’显示封面

frmcover.refresh

setwindowpos frmcover.hwnd, hwnd_topmost, 0, 0, 0, 0, flags

end sub

定时器时间到后关闭定时器,同时卸载封面窗体,使用户可以继续操作主窗体。程序如下:

sub timer1_timer ()  

frmmain.timer1.enabled = false ‘关闭定时器

unload frmcover ‘卸载封面

screen.mousepointer = 0 ‘鼠标恢复原样  

end sub

  这样就实现了一个标准的软件封面,整个程序设计思路简单清晰,较好的解决了上述三个问题。它也充分体现了使用Visual Basic开发windows应用程序的方便和高效性,希望对Visual Basic程序员和爱好者有所启发。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有