ウィンドウタイトルを点滅させる

Windowsがユーザの注意を促すためにウィンドウタイトルを点滅させることがありますよね。
それを実現するためのテクニックです。

サンプル(32bit) ダウンロード

Private Type FLASHWINFO
    cbSize As Long
    hWnd As Long
    dwFlags As Long
    uCount As Long
    dwTimeout As Long
End Type

Private Const FLASH_STOP = &H0
Private Const FLASH_CAPTION = &H1
Private Const FLASH_TRAY = &H2
Private Const FLASH_ALL = FLASH_CAPTION Or FLASH_TRAY
Private Const FLASH_TIMER = &H4
Private Const FLASH_TIMERNOFG = &HC

'ウィンドウタイトル点滅API
Private Declare Function FlashWindowEx Lib "user32.dll" (pfwi As FLASHWINFO) As Long


Private Sub Command1_Click()
    
    Dim udtFLASHWINFO As FLASHWINFO
    
    '点滅の設定
    With udtFLASHWINFO
        .cbSize = Len(udtFLASHWINFO)
        .hWnd = Me.hWnd
        .dwFlags = FLASH_ALL
        .uCount = 5
        .dwTimeout = 100
    End With

    '点滅実行
    Call FlashWindowEx(udtFLASHWINFO)

End Sub

サンプル解説

Command1ボタンをクリックすると5回タイトルを点滅させています。

点滅はFlashWindowEx関数にFLASHWINFO構造体を渡して行っています。

FLASHWINFO構造体の内容は次の通りです。

cbSize FLASHWINFO構造体のサイズ
hWnd ウィンドウのハンドル
dwFlags 動作フラグ。
  • FLASH_STOP : 点滅停止
  • FLASH_CAPTION : ウィンドタイトルのみ点滅
  • FLASH_TRAY : タスクバーのみ点滅
  • FLASH_ALL : ウィンドタイトル・タスクバー両方点滅
  • FLASH_TIMER : FLASH_STOPが呼び出されるまで点滅します
  • FLASH_TIMERNOFG : ウィンドウがアクティブになるまで点滅します

FLASH_TIMER・FLASH_TIMERNOFGを使用する場合は、FLASH_CAPTION・FLASH_TRAY・FLASH_ALLと組み合わせて使用します。

uCount 点滅回数。
dwTimeout 点滅の間隔をミリセカンド単位で指定します。

FlashWindowEx関数は点滅回数と間隔をWindows側が制御してくれて楽チンなのでオススメです。


[ Window Close ]