FlashWindowEx (Clignotement de la fenetre) - C++ - Programmation
Marsh Posté le 27-06-2003 à 01:09:05
Tu veux parler des fonctions FlashWindow et FlashWindowEx ?
Marsh Posté le 27-06-2003 à 01:12:24
ReplyMarsh Posté le 27-06-2003 à 21:47:25
Au départ je voulais utiliser la fonction FlashWindowEx du sdk windows. Après installation d'une mise à jour du sdk, pas de problème et vc++ reconnait bien la fonction. Puis j'ai eu des pb pour remplir la structure FLASHWINFO. Je faisais
Code :
|
Et ca me fait une erreur d'écriture mémmoire à l'exécution....
Comme j'y arrivais pas comme ca, je me suis lancé ds une petite recherche. Sur le site msdn, je suis tombé sur la même fonction FlashWindowEx mais appartenant cette fois à la classe CWnd...Mais ds vc++,
Code :
|
me renvoie :
E:\CM ar\chatter\Chatdoc.cpp(366) : error C2039: 'FlashWindowEx' : is not a member of 'CWnd'
e:\microsoft visual studio\vc98\mfc\include\afxwin.h(1899) : see declaration of 'CWnd'
alors que http://msdn.microsoft.com/library/ [...] ndowex.asp
...
Marsh Posté le 28-06-2003 à 00:42:59
Gooopil a écrit :
|
Et l'allocation mémoire ?
Marsh Posté le 28-06-2003 à 12:51:40
ReplyMarsh Posté le 28-06-2003 à 12:52:35
*Syl* a écrit : Et l'allocation mémoire ? |
cad ? C'est beau de se moquer mais pourquoi ne pas me dire ce qu'il faut faire...Je fais un new ?
Marsh Posté le 28-06-2003 à 13:25:53
Gooopil a écrit : |
Code :
|
Marsh Posté le 28-06-2003 à 13:44:41
Gooopil a écrit : |
Euh faut vraiment repondre (c pas une moquerie te rassure) mais bon tu fait Toto* pToto et puis un pToto->xxx ... ca te choque pas le moins du monde ?
Marsh Posté le 28-06-2003 à 13:48:14
Au lieu de jouer les étonnés expliquez lui!
Gooopil , sais tu ce que c'est un pointeur?
Marsh Posté le 28-06-2003 à 14:54:20
Bon, Gooopil, tu as 2 problèmes :
- D'abord tu n'alloues pas la mémoire pour ta structure FLASHINFO.
- Ensuite tu l'utilise en tant que membre de CWnd alors que c'est une fonction du SDK, donc faisant partie du namespace global.
Pour la 1ere erreur : tu dois allouer la mémoire pour ta structure FLASHINFO. Pas besoin de passer par une allocation dynamique pour ça, une simple allocation statique suffit :
Code :
|
Puis tu passes cette structure en paramètre à FlashWindowEx. Mais tu dois passer l'adresse de cette structure, et pas la structure elle même :
Code :
|
2ème problème : pourquoi ::FlashWindowEx() et pas FlashWindowEx() ? Car tu travailles en MFC, donc en conception objet. Ce qui signifie que chaque méthode que tu appelleras sera supposée appartenir à une classe, ce qui n'est pas le cas de FlashWindowEx(), qui est une fonction appartenant au namespace global (donc qui n'est une méthode d'aucune classe). D'où les 2 points. Si tu ne les mettais pas, ça voudrait dire que tu appelles FlashWindowEx en tant que méthode membre de l'objet que tu utilises.
Marsh Posté le 28-06-2003 à 16:12:13
VisualC++ a écrit : |
Ben un peu....mais pas tant que ca en fait....
Pour répondre à Harko : Ensuite tu l'utilise en tant que membre de CWnd alors que c'est une fonction du SDK, donc faisant partie du namespace global,
Il y a deux fonctions Flash....(), une du SDK, et une autre MFC dans CWnd. CF http://msdn.microsoft.com/library/ [...] ndowex.asp
Mais bon de toutes facons, vu que j'aurais plus de problème avec l'allocation, j'aurais pas besoin d'utiliser celle des MFC, je me débrouillerais avec celle du SDK.
Marsh Posté le 28-06-2003 à 16:25:23
Pendant que j'y suis, si j'avais voulu déclaré une variable :
machin * x.
J'alloue comment la mémmoire ? Si c'est une classe je ferais
machin *x = new machin();
Mais si c'est pas une classe ?
En gros si quelq'un pouvait m'expliquer très briévement allocation statique et dynamique ca serait géniale. J'ai fait un iut info y'a qq années et je me suis remis à la programmation, du coup certaines subtilités (notemment au niveau des pointeurs) ont disparu de ma petite cervelle....
Marsh Posté le 28-06-2003 à 19:23:14
Gooopil a écrit : |
plutot :
machin *x = new machin;
et si c'est un int, par exemple :
int *x = new int;
En C++ un type de base ne se distingue pas d'un type utilisateur.
Marsh Posté le 27-06-2003 à 00:37:17
Hello
Je crois que tout est dans le titre, comment je peux faire pour faire ca ? (VC++, MFC)
Merci
Message édité par gooopil le 27-06-2003 à 21:39:28