Plantage sur un AfxGetMainWnd()->Invalidate(); [MFC] - C++ - Programmation
Marsh Posté le 03-04-2005 à 00:56:20
Cette fonction est-elle un thread ? Parce que, si cela fonctionne comme Qt, les éléments de l'UI ne peuvent pas être manipulés par un autre thread que celui de l'UI et il faut passer par des événements personalisés.
Marsh Posté le 03-04-2005 à 01:03:04
ouai c'est bien un thread
Et tu entend quoi par événements personnalisés
Marsh Posté le 03-04-2005 à 01:05:45
si ton pObject est utilisé par plusieurs threads faudrait voir a le protéger par une section critique, les CString sont assez chatouilleuses sur les accès concurents.
Si ca ne vient pas de ca, essaie d'utiliser RedrawWindow à la place de Invalidate.
Si ca ne résoud toujours pas le problème poste un message à ta mainwindow et gère le rafraichissement de ta fenetre dans le handler de ce message.
Marsh Posté le 03-04-2005 à 01:09:41
nan j'ai qu un thread et les CString son modifier seulement ici donc pas de prob
pour le redraw j'essaye de suite
Marsh Posté le 03-04-2005 à 01:10:44
meme erreur
Marsh Posté le 03-04-2005 à 01:10:46
ReplyMarsh Posté le 03-04-2005 à 01:12:55
la fonction pour envoyer un message c'est bien PostMessage mais je fais comment pour le recevoir et rafraichir apres
Marsh Posté le 03-04-2005 à 01:22:48
dreamkiller a écrit : Et tu entend quoi par événements personnalisés |
Je voulais parler des messages, désolé j'ai perdu le vocabulaire Win32 En plus tu dois pouvoir envoyer un message WM_PAINT si mes souvenirs sont bons...
Si ça ne marche pas, pour recevoir le message je pourrais pas t'aider beaucoup... Peut-être que le code de cette page te donnera des indices: http://www.codeproject.com/dialog/idledialog.asp
Marsh Posté le 03-04-2005 à 01:27:51
tu te déclare une méthode
Code :
|
et tu edites ta message map :
Code :
|
sinon envoyer WM_PAINT n'est pas une bonne idées :
http://msdn.microsoft.com/library/ [...] w_88ac.asp
"
The WM_PAINT message is generated by the system and should not be sent by an application
"
Marsh Posté le 03-04-2005 à 01:31:25
je galere a envoyé un message
je croit que c'est du type
CIhmDlg fen1.PostMessage(WM_PAINT);
mais j'suis pas sur qq peut t'il eclairer ma lanterne
Marsh Posté le 03-04-2005 à 01:32:43
SquiZZ a écrit : tu te déclare une méthode
|
et je la declare ou la methode???
Marsh Posté le 03-04-2005 à 01:35:56
ReplyMarsh Posté le 03-04-2005 à 01:36:02
pas grave ca arrive
Au point ou j'en suis toutes les solutins me semble bonne
Marsh Posté le 03-04-2005 à 01:37:43
SquiZZ a écrit : DTC? |
a c'est d'une finesse
Marsh Posté le 03-04-2005 à 01:40:20
dreamkiller a écrit : a c'est d'une finesse |
essaie de reflechir un peu.
Ou tu peut la déclarer à ton avis ?
dans la classe de la fenetre que tu veux rafraichir par exemple, ca me semblerait pas mal, non ?
Marsh Posté le 03-04-2005 à 01:44:52
excuze moi si je cale rien mais j'ai jamais crée de message.
J ai toujours utilisé les messages par default
et je sais pas quoi faire de mon BEGIN_MESSAGE_MAP
Marsh Posté le 03-04-2005 à 01:48:51
t'y fais rien, tu rajoutes juste le ON_MESSAGE() kivabien dans la message map qui existe déjà entre BEGIN_MESSAGE_MAP et END_MESSAGE_MAP
Marsh Posté le 03-04-2005 à 11:47:23
erreur de linkage
PC ControleDlg.obj : error LNK2001: unresolved external symbol "protected: void __thiscall CPCControleDlg::Toto(unsigned int,long)" (?Toto@CPCControleDlg@@IAEXIJ@Z)
Marsh Posté le 03-04-2005 à 12:14:54
tu ouvres ton fichier cpp et dedans tu ajoutes
Code :
|
t'as des notions de C ou de C++ ou tu tappes au hazard sur les touches de ton clavier ?
Marsh Posté le 03-04-2005 à 16:23:48
reste calme reste calme
si tu me donne moitier des infos aussi deja que je sais pas a quoi corresponde WPARAM et LPARAM
Marsh Posté le 03-04-2005 à 16:31:40
et l'envoi du message c'est ca ou pas
CPCControleDlg fen1;
fen1.PostMessage(WM_USER+1);
Marsh Posté le 03-04-2005 à 19:19:41
WPARAM et LPARAM sont des données que tu peux spécifier quand tu fais ton PostMessage
par exemple
Code :
|
Marsh Posté le 03-04-2005 à 00:49:40
Bonsoir a tous voila j'ai un ptit probleme sur la fonction AfxGetMainWnd()->Invalidate() de mon prog ca me cause un plantage generalisé voila si qq a une idée
merci de votre aide
---------------
debian sib sur asus a6va peut etre prochainement un freebsd