为了通知用户某种错误发生了,很多应用程序一般使用MessageBeep函数发出蜂鸣声,或者调用函数FlashWindow或FlashWindowEx来使特定的窗口闪烁。应用程序也能使用这些函数来引起用户对某个事件关注,然后显示一个消息提示对话框或一条详细错误信息。
1)FlashWindow函数用来使某个指定的窗口产生一次闪烁的效果,它同样不会改变窗口的活动状态(如果要使窗口闪烁指定的次数,则需要使用下面介绍的FlashWindowEx函数):
BOOL WINAPI FlashWindow(
__in HWND hWnd, //要闪烁的窗口的句柄,该窗口可以是打开的或最小化的
__in BOOL bInvert //为TRUE,表示窗口从一个状态闪烁到另一个状态;
//为FALSE,表示窗口恢复到初始状态(可能是激活的也可能是非激活的)
);
返回值表示调用FlashWindow函数之前窗口的活动状态,若指定窗口在调用函数之前是激活的,那么返回非零值,否则返回零值。
FlashWindow函数只能闪烁一次,如果要使用该函数闪烁多次时,应用程序需要增加一个系统定时器。
2)FlashWindowEx函数用来使某个特定的窗口产生闪烁的效果,但它并不改变该窗口的活动状态:
BOOL WINAPI FlashWindowEx(
__in PFLASHWINFO pfwi //指向FLASHWINFO结构的指针
);
返回值表示调用FlashWindowEx函数之前窗口的活动状态,若指定窗口在调用函数之前是激活的,那么返回非零值,否则返回零值。
典型情况下,我们使一个窗口闪烁是为了告诉用户这个窗口需要关注这个窗口,但该窗口暂时没有获得键盘焦点。当一个窗口闪烁时,它表现出来的状态就像从激活状态到非激活状态之间往返循环。
FLASHWINFO结构包含了特定窗口的闪烁状态,以及系统要闪烁窗口的次数:
typedef struct {
UINT cbSize; //该结构的字节大小
HWND hwnd; //要闪烁的窗口的句柄,该窗口可以是打开的或最小化的
DWORD dwFlags; //闪烁的状态,可以是下面取值之一或组合:
//FLASHW_ALL---同时闪烁窗口标题和窗口的任务栏按钮,
// 相当于FALSHW_CAPTION | FLASHW_TRAY
//FLASHW_CAPTION---闪烁窗口的标题
//FLASHW_STOP---停止闪烁,系统将重置窗口到其初始状态
//FLASHW_TIMER---不停地闪烁,直到FLASHW_STOP标志被设置
//FLASHW_TIMERNOFG---不停地闪烁,直到窗口前端显示
//FLASHW_TRAY---闪烁窗口的任务栏按钮
UINT uCount; //闪烁窗口的次数
DWORD dwTimeout; //窗口闪烁的频度,毫秒为单位;若该值为0,则为默认图标的闪烁频度
} FLASHWINFO, *PFLASHWINFO;
3)附:以下函数都可用于错误处理的: