Flash

 

Il s'agit ici de flasher la fenêtre qui se traduit par le clignotement de la barre de titre ou de l'icône de la fenêtre dans la barre des tâches.

 

Flasher/ clignoter une fenêtre une seule fois

 

FlashWindow(
HWND hWnd,
BOOL bInvert
);

Ou hWnd est le handle de la fenêtre à flasher

bInvert, à true pour passer la barre de titre d'un état à un autre. A false pour la remettre dans son état d'origine

La fenêtre peut paraître active, mais il ne faut pas s'y tromper, ce n'est pas le cas, il s'agit juste d'attirer le regard de l'utilisateur sur l'application (en général suite à un problème que rencontre celle-ci, ou un traitement terminé) !


Vous pouvez répéter l'opération en passant systèmatiquement true, la barre de titre passera alors d'un etat, puis d'un autre, et ainsi de suite...

 

Flasher/ clignoter une fenêtre plusieurs fois

Mais si vous voulez que Windows le fasse automatiquement pendant un certain temps, on peut utiliser la fonction FlashWindowEx(). Cependant, cette fonction est plutôt récente, Depuis le temps, elle n'est plus aussi récentes ! Mais tous les systèmes ne la supportent pas. Suivant le système visé, vous pouvez la reproduire en utilisant la fonction ci-dessus en passant par un timer (vous voyez...):

BOOL FlashWindowEx(
PFLASHWINFO pfwi
);

En paramètre:

pfwi qui est un pointeur sur une structure FLASHWINFO.

 

En sortie:

Nous pouvons recevoir l'état de la fenêtre avant l'appel à la fonction: Différent de 0, la fenêtre était active. 0 elle ne l'était pas !

Cette fonction utilise donc une structure FLASHWINFO:

typedef struct {
UINT cbSize;
HWND hwnd;
DWORD dwFlags;
UINT uCount;
DWORD dwTimeout;
} FLASHWINFO,
*PFLASHWINFO;

Avec:

cbSize: La taille de la structure. Comme d'habitude, il faudra utiliser sizeof()...
hwnd: Le handle sur la fenêtre à flasher
dwFlags: Un drapeau pour indiquer le type d'opération:

Valeur Désignation
FLASHW_STOP Arrêter le flash !!! Windows remettant la fenêtre dans son état initial
FLASHW_CAPTION Flasher la fenêtre
FLASHW_TRAY Flasher aussi l'icône
FLASHW_ALL Tout flasher
FLASHW_TIMER Flash tout le temps jusqu'à réception d'un FLASHW_STOP
FLASHW_TIMERNOFG Flash jusqu'à ce que l'utilisateur (excédé) fasse passer la fenêtre au premier plan (donne le focus quoi !)


uCount: Nombre de fois qu'il faudra flasher la fenêtre.

dwTimeout: Délai en milliseconde du clignotement. Si 0, Windows utilise la valeur par défaut.