VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 闪烁的标题栏
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:7321, 日期:2004-10-28
  本例通过调用API函数 FlashWindow 实现了窗体标题栏的闪烁,标题栏的闪烁通常用来引起使用者的注意。

  在VB中声明这个API函数的方法是:

   Private Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long,
   ByVal bInvert As Long) As Long  

  其中各个参数的意义如下表所示:

参数 意义

hwnd Long,要闪烁显示的窗口的句柄
bInvert Long,TRUE(非零)表示切换窗口标题;FALSE返回最初状态
返回值 Long,如窗口在调用前处于活动状态,则返回TRUE(非零)

  为了使窗体出现闪烁的效果,我们在Timer控件的Timer属性中调用FlashWindow函数即可,使用的方法如下:

  Call FlashWindow(Me.hwnd, True)  

  其中Me.hwnd是当前窗体的句柄,而把bInvert设为True则表示进入标题栏闪烁状态。

  而停止闪烁的方法只要把bInvert设为False就行了,如下所示:
  Call FlashWindow(Me.hwnd, False)

  好了,非常简单,试试把它用到你的程序中去吧。

  为了学习方便,以下提供了源代码并附详细的中文注释:

-------------------------------------------
一个窗体标题闪烁的例子
-------------------------------------------
程序说明:
本例通过调用API函数 FlashWindow 实现了窗体标题栏的闪烁,标题栏的闪烁
通常用来引起用户的注意。
-------------------------------------------
【VB声明】

Private Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, ByVal bInvert As Long) As Long

【说明】
闪烁显示指定窗口。这意味着窗口的标题和说明文字会发生变化,似乎从活动切换到非活动状态、或反向切换。通常对不活动的窗口应用这个函数,引起用户的注意

【返回值】
Long,如窗口在调用前处于活动状态,则返回TRUE(非零)
【备注】
该函数通常与一个计数器组合使用,生成连续的闪烁效果。在windows
nt及windows for workgroup中,bInvert参数会被忽略。但在windows 95中不会忽略

【参数表】
hwnd ----------- Long,要闪烁显示的窗口的句柄

bInvert -------- Long,TRUE(非零)表示切换窗口标题;FALSE返回最初状态

Private Declare Function FlashWindow Lib "user32" ( _
ByVal hwnd As Long, ByVal bInvert As Long) As Long  

用来标示当前是否处于闪烁状态,取值True/False

Dim OnFlash As Boolean

Private Sub Command1_Click()  

如果没有闪烁,开始闪烁

If OnFlash = False Then
Command1.Caption = "停止闪烁"
Timer1.Enabled = True
OnFlash = True  

否则,停止闪烁

Else
Timer1.Enabled = False
Command1.Caption = "窗体标题栏闪烁"

这一语句是必须的,不然停止闪烁时标题栏可能会处于灰暗状态

Call FlashWindow(Me.hwnd, False)
OnFlash = False
End If
End Sub  

以一定时间间隔闪烁,可以通过改变Timer1控件的Interval属性的值来改变

Private Sub Timer1_Timer()

调用 FlashWindow函数,Me.hwnd是Form1窗体的句柄

Call FlashWindow(Me.hwnd, True)
End Sub