程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 在VB中實現閃動標題欄

在VB中實現閃動標題欄

編輯:VB綜合教程
摘要
  在你的應用程序中,你可能會希望將應用程序的標題欄進行閃動,以提醒用戶進行某種操作,本文介紹了如何使一個窗口的標題欄進行閃動。
  
  閃動標題欄
  閃動一個窗口的標題欄意味著改變它的標題欄的外觀,例如它從活動變為不活動,或是從不活動變為活動等等。只要你能在VisualBasic中得到窗口的句柄,你就可以使用Windows應用程序編程接口(API)函數來使該窗口的標題欄進行閃動。函數FlashWindows可以被用使一個特定的窗口閃動一次。要使用該函數,需要將如下的聲明語句包含在你的窗體的通用聲明部分中:
  
  #IfWin32Then
  DeclareFunctionFlashWindowLib"user32"(ByValhwndAsLong,ByValbInvertAsLong)AsLong
  #Else
  DeclareFunctionFlashWindowLib"User"(ByValhwndAsInteger,ByValbInvertAsInteger)AsInteger
  #EndIf
  
  該函數需要2個參數,第一個參數是要閃動標題欄的窗口的句柄,第二個參數用於指定是設置窗口的閃動狀態,還是恢復其原始狀態。如果該bInvert參數非0,則表明窗口的標題欄被閃動,如果該參數為0,則表明窗口的標題欄被恢復為原始狀態。該函數所返回的值用於指定調用該函數前窗口的狀態,如果該返回值非0,則表明窗口在調用該函數之前是活動的,否則,如果返回值為0,則表明調用函數前窗口是非活動的。當使用該FlashWindow函數時,一個較好的方法是將標題欄閃動的頻率設置為同脫字符(也即閃動的光標)相同,脫字符的閃動頻率可以通過調用函數GetCaretBlinkTime來獲得。要使用該函數,需要將如下的聲明語句包含在你的窗體的通用聲明部分中:
  
  #IfWin32Then
  DeclareFunctionGetCaretBlinkTimeLib"user32"()AsLong
  #Else
  DeclareFunctionGetCaretBlinkTimeLib"User"()AsInteger
  #EndIf
  
  該函數返回用毫秒值表示的時間。
  
  樣例程序
  
  1.在VisualBasic中開始一個新的工程,采用缺省的方法建立Form1。
  2.在Form1上添加一個定時器控件,采用缺省的方法建立Timer1。
  3.將如下的代碼添加到Form1的Form_GotFocus事件中:
  
  PrivateSubForm_GotFocus()
  Timer1.Enabled=False
  EndSub
  4.將如下的代碼添加到Form1的Form_Load事件中:
  
  PrivateSubForm_Load()
  Timer1.Interval=GetCaretBlinkTime()
  Form2.Show
  EndSub
  
  5.將如下的代碼添加到Timer1的Timer1_Timer事件中:
  
  PrivateSubTimer1_Timer()
  Success=FlashWindow(Form1.hwnd,1)
  EndSub
  
  6.添加第二個窗體,采用缺省的方法建立Form2。
  
  7.將如下的代碼添加到Form2的單擊事件中:
  
  PrivateSubForm_Click()
  Form1.Timer1.Enabled=True
  EndSub
  
  8.添加一個新的模塊,采用缺省的方法建立Module1.Bas。將如下的代碼添加到該模塊的通用聲明部分中:
  
  #IfWin32Then
  DeclareFunctionFlashWindowLib"user32"(_
  ByValhwndAsLong,_
  ByValbInvertAsLong)AsLong
  
  DeclareFunctionGetCaretBlinkTimeLib"user32"()AsLong
  
  DimSuccessAsLong
  
  #Else
  
  DeclareFunctionFlashWindowLib"User"(_
  ByValhwndAsInteger,_
  ByValbInvertAsInteger)AsInteger
  
  DeclareFunctionGetCaretBlinkTimeLib"User"()AsInteger
  
  DimSuccessAsInteger
  
  #EndIf
  
  通過單擊F5鍵來運行該樣例程序,單擊Form2窗體,這時Form1窗體將處於非活動方式,其標題欄將會不斷閃爍。單擊Form1使它它變為活動方式,則窗體的標題欄將不再閃爍->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved