以前做視窗閃動時都沒有考慮到讓工作列上的按鈕閃動的問題,
現在乙個客戶需要工作列按鈕閃動,發現以前使用的flashwindow不能達到要求了,
查詢了一下,找到flashwindowex這個api
如果您建立的應用程式是執行在windows 98或更高版本作業系統上,您可以通過呼叫api函式flashwindowex並賦給它乙個flashwinfo結構體來實現. 而如果是執行在windows 95上則比較麻煩, 但您也可以通過使用乙個timer元件來實現想要的效果。
flashwindowex
當您呼叫api函式flashwindowex時,乙個tflashwinfo被用來控制windows實現該閃爍功能的資訊. 幸運的是,delphi已經為您封裝了該結構體。delphi中它被申明如下:
type tflashwinfo = record cbsize : longint; hwnd : longint; dwflags : longint; ucount : longint; dwtimeout : longint; end;您所需做的全部事情僅僅是填充和組裝該記錄型別,並呼叫api函式。本例中,我把兩者放在了乙個按鈕的onclick事件中,當然您也可以放置它們到任何合適的地方:
dwflags指示了閃爍的方式,下面是dwflags屬性的取值定義:
flashw_stop = 0 // 停止閃爍 flashw_caption = 1 // 閃爍視窗標題 flashw_tray = 2 // 閃爍工作列按鈕 flashw_all = 3 // 閃爍視窗標題與工作列按鈕以上只有在windows 98或更高版本作業系統上才有效,如果您要在windows 95上實現,您就需要採取另一不同的途徑:flashw_timer = 4 // 不停地閃爍,直到flashw_stop標誌設定 flashw_timernofg = 5 // 不停地閃爍直到視窗被前置
flashwindow
windows 95下 (並且delphi 3及更底版本幷包含適用的api封裝) 需要不同的途徑. 該作業系統下沒有flashwindowex這個api函式,您需要使用flashwindow來代替. (flashwindow還能在更低版本的作業系統中被呼叫。)
但問題是flashwindow只能閃爍一次,所以要達到閃爍按鈕的目的就需要用到乙個timer元件。 當然,這樣一來也就加大了寶貴的系統資源開銷 - 但它能完成我們想要的效果。
procedure tform1.button1click(sender: tobject); begin timer1.enabled := not timer1.enabled; end;到此為止,兩種不同方法實現了相同的功能。
閃爍動畫窗體
利用兩個timer控制項,實現窗體中的閃爍的效果 實現步驟 一 窗體中新增兩個timer控制項,分別設定事件頻率 二 在窗體中新增picturebox控制項,新增 骷髏頭效果更好哦,哈哈 二 在timer1下編寫 code 將隱藏 this.picturebox1.visible false 關閉當...
delphi窗體設計
可以通過設定窗體的屬性以及程式設計的方法,限制和控制窗體的變化。如讓窗體不能最小化 最大化.1.通過屬性設定方法 使用form的bordericon屬性,我們可設定窗體是否具有系統選單 bisystemmenu 最小化按鈕 biminimize 最大化按鈕 bimaximize 和幫助按鈕 bihe...
delphi窗體設計
可以通過設定窗體的屬性以及程式設計的方法,限制和控制窗體的變化。如讓窗體不能最小化 最大化.1.通過屬性設定方法 使用form的bordericon屬性,我們可設定窗體是否具有系統選單 bisystemmenu 最小化按鈕 biminimize 最大化按鈕 bimaximize 和幫助按鈕 bihe...