看看VB的窗口向导做出的启动窗体
如果要更COOL一点的例程,请发邮件给我![email protected]

解决方案 »

  1.   

    发信人: leearnold (arnold), 信区: VBVC 
    标  题: VB中软件封面技术探秘 
    发信站: 网易虚拟社区北京站 (Thu Jan 27 08:50:29 2000), 站内信件 封面技术在软件开发中越来越成为一种标准,无论你在DOS或WINDOWS的环境下 进 
    行软件开发,一个漂亮而醒目的封面总会使你的软件更加充满魅力。 对于WINDOWS环境下的应用软件,封面技术更是必不可少。微软公司的OFFICE套件 
    ,如WORD,其简洁美观,具有真实三维效果的封面给所有OFFICE的用户留下了深 
    刻的印象。其封面的设计完全可以作为WINDOWS应用程序的标准。从WORD的封面设 
    计我们可以看出WINDOWS环境下的应用软件的封面设计应遵循以下原则: 在主界面载入的同时载入,封面应该清楚的显示软件名称及版本信息,在主界面 
    载入完毕后自动卸出内存,让出所占用的WINDOWS系统资源。 使用微软公司的Visual Basic进行软件开发是WINDOWS环境下应用程序开发的捷径 
    ,同样,使用Visual Basic制作应用程序封面也是相当方便的。在开发过程中, 
    主要应该解决的问题有: 1. 封面的制作。 这不是一个纯技术性的问题。开发者必须有一定的美术知识和功底,制作出的封 
    面也可以具有个人的不同的风格。在VB中,封面也是一个窗体,开发者可以在窗 
    体上使用VB的绘图工具Line和Shape绘制出图形,甚至可以绘制出类似WORD的三维 
    效果,也可以在窗体内载入一个图片框(Picture Box)或图象控制(Image Con 
    trol),利用图片框或图象控制载入自己所喜欢的图片来制作封面,在图形之上, 
    可以使用文本框(Text Box)或标签框(Label)来显示版本信息。为了使这样的 
    一个窗体更加象一个封面,应该去除窗体的控制框,标题栏和最大最小化按钮, 
    同时窗体的大小也不允许用户改变。因而在封面窗体的属性中,属性Control Bo 
    x应设为False,Caption应设为空,MaxButton和MinButton应设为False,Border 
    Styler属性设为1,即固定的单线边界,这样就实现了一个具有专业水准的封面。 
      2. 浮动窗体的实现。 由于主窗体先载入,然后激发封面的事件(event),使封面窗体成为当前活动窗体 
    ,所以必须保证窗体总是浮在主窗体的上面,在VB中,这个问题主要依靠调用WI 
    NDOWS的API函数SetWindowpos来实现。SetWindowpos函数的声明如下:   Declare Sub SetWindowPos Lib "User" (ByVal hWnd As Integer, ByVal hWnd 
    InsertAfter 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中,关闭定时器,卸出封面。 下面给出的程序实例是一个完整的封面设计,供VB程序开发者参考。 假设封面窗体名为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 这样就实现了一个标准的软件封面,整个程序设计思路简单清晰,较好的解决了 
    上述三个问题。它也充分体现了使用VB开发WINDOWS应用程序的方便和高效性,希 
    望对VB程序员和爱好者有所启发。   
      -- 
    --  
     ("`-''-/").___..--''"`-._  
      `6_ 6 )  `-. (   ).`-.__.`)   
      (_Y_.)' ._  ) `._ `. ``-..-'    
      `--'_..-_/ /--'_.' ,'        
     (ll).-'' (((!.' ((!.-'   ※ 来源:.网易虚拟社区北京站 http://bj.netease.com.[FROM: 203.93.7.45]