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