弹指一挥间

好好做事,学习待人 (大数据分析/.NET/JAVA)技术交流QQ:860280456; .NET/JAVA技术交流群:192028174

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

为了通知用户某种错误发生了,很多应用程序一般使用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)附:以下函数都可用于错误处理的:

image

posted on 2013-02-19 23:26  v.e.n.u.s  阅读(4903)  评论(0编辑  收藏  举报