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.