為了通知用戶某種錯誤發(fā)生了,很多應用程序一般使用MessageBeep函數(shù)發(fā)出蜂鳴聲,或者調用函數(shù)FlashWindow或FlashWindowEx來使特定的窗口閃爍。應用程序也能使用這些函數(shù)來引起用戶對某個事件關注,然后顯示一個消息提示對話框或一條詳細錯誤信息。
1)FlashWindow函數(shù)用來使某個指定的窗口產生一次閃爍的效果,它同樣不會改變窗口的活動狀態(tài)(如果要使窗口閃爍指定的次數(shù),則需要使用下面介紹的FlashWindowEx函數(shù)):
BOOL WINAPI FlashWindow(
__in HWND hWnd, //要閃爍的窗口的句柄,該窗口可以是打開的或最小化的
__in BOOL bInvert //為TRUE,表示窗口從一個狀態(tài)閃爍到另一個狀態(tài);
//為FALSE,表示窗口恢復到初始狀態(tài)(可能是激活的也可能是非激活的)
);
返回值表示調用FlashWindow函數(shù)之前窗口的活動狀態(tài),若指定窗口在調用函數(shù)之前是激活的,那么返回非零值,否則返回零值。
FlashWindow函數(shù)只能閃爍一次,如果要使用該函數(shù)閃爍多次時,應用程序需要增加一個系統(tǒng)定時器。
2)FlashWindowEx函數(shù)用來使某個特定的窗口產生閃爍的效果,但它并不改變該窗口的活動狀態(tài):
BOOL WINAPI FlashWindowEx(
__in PFLASHWINFO pfwi //指向FLASHWINFO結構的指針
);
返回值表示調用FlashWindowEx函數(shù)之前窗口的活動狀態(tài),若指定窗口在調用函數(shù)之前是激活的,那么返回非零值,否則返回零值。
典型情況下,我們使一個窗口閃爍是為了告訴用戶這個窗口需要關注這個窗口,但該窗口暫時沒有獲得鍵盤焦點。當一個窗口閃爍時,它表現(xiàn)出來的狀態(tài)就像從激活狀態(tài)到非激活狀態(tài)之間往返循環(huán)。
FLASHWINFO結構包含了特定窗口的閃爍狀態(tài),以及系統(tǒng)要閃爍窗口的次數(shù):
typedef struct {
UINT cbSize; //該結構的字節(jié)大小
HWND hwnd; //要閃爍的窗口的句柄,該窗口可以是打開的或最小化的
DWORD dwFlags; //閃爍的狀態(tài),可以是下面取值之一或組合:
//FLASHW_ALL---同時閃爍窗口標題和窗口的任務欄按鈕,
// 相當于FALSHW_CAPTION | FLASHW_TRAY
//FLASHW_CAPTION---閃爍窗口的標題
//FLASHW_STOP---停止閃爍,系統(tǒng)將重置窗口到其初始狀態(tài)
//FLASHW_TIMER---不停地閃爍,直到FLASHW_STOP標志被設置
//FLASHW_TIMERNOFG---不停地閃爍,直到窗口前端顯示
//FLASHW_TRAY---閃爍窗口的任務欄按鈕
UINT uCount; //閃爍窗口的次數(shù)
DWORD dwTimeout; //窗口閃爍的頻度,毫秒為單位;若該值為0,則為默認圖標的閃爍頻度
} FLASHWINFO, *PFLASHWINFO;
3)附:以下函數(shù)都可用于錯誤處理的:
該文章在 2021/1/25 10:16:52 編輯過