MFC appeler un "event" pour simuler 1 timer

MFC appeler un "event" pour simuler 1 timer - C++ - Programmation

Marsh Posté le 24-04-2004 à 17:56:48    

MFC Visual C++ .
 
l'évènement WM_TIMER est trop contraignant car pour  mon appli ca ne peu pa s'appliquer car je ne connais pa le temps ke ca met pour faire le traitement.  
 
Ce que je voudrais c'est avoir une fonction qui va appeler AppDlgProc
avec WM_PAINT ou WM_TIMER ,  
kom ca kan jorai fini mon traitement sur l'image je di d'appeler WM_PAINT ou j'ai ma procedure ki affiche limage.
 
g essayé DefWindowProc(hdlg,WM_PAINT,wParam,lParam) mais ca va jamais  
dans le "case WM_PAINT :" .
de meme avec WM_TIMER (en ayant désactivé le SetTimer(...)  ).
 
 
 
Merci pour vos réponses.
 
 
 

Reply

Marsh Posté le 24-04-2004 à 17:56:48   

Reply

Marsh Posté le 24-04-2004 à 20:02:29    

je me suis peut etre pas bien fait comprendre.
je cherche une fonction ki va déclencher l'évènement WM_PAINT.
j'ai trouvé une feinte avec le "goto" mais le probleme c ke ya toujours le pti sablier ( c du porcos koi).
 
 
 
 
 
 

Reply

Marsh Posté le 24-04-2004 à 20:25:39    

pas bcp de réponse ...
j'ai trouvé UpdateWindow(HWND hdlg); ca envoi un WM_PAINT
 
Seul probleme , fo déplacer la fenetre pour que UpdateWindow se déclenche...  

Reply

Marsh Posté le 24-04-2004 à 21:00:08    


PostMessage(HWND hdlg,WM_PAINT ,0,0);
mais g pas la main sur la fenetre .

Reply

Marsh Posté le 24-04-2004 à 21:03:56    

Y aurait moyen de préciser le besoin ?
Il faut rafraîchir l'écran (grace à la fonction appelée par WM_PAINT) quand le traitement (long et complexe) est terminé ? Le TIMER est utile ou c'est la seule solution "visible" ?
 
EDIT : J'utilise souvent InvalidateRect(hWnd, NULL, TRUE);
Le PostMessage() avec WM_PAINT a jamais rien fait de valable chez moi...


Message édité par Carbon_14 le 24-04-2004 à 21:05:55
Reply

Marsh Posté le 24-04-2004 à 21:54:15    

Wè en fait je fais un genre de VNC , donc fo ke j'affiche le buro de lotre . j'envoi 1 1ere fois le screen shot et ensuite je repren 1 screenshot , je compare les 2 images et j'envoi les pixels.
 
Pk je peux pas utiliser de timer pour rafraichir l'image c'est parce ke je c pas combien de temps va prendre l'envoi et la réception de tous les pixel ki ont changé.
 
Donc je recois tous les pixel ki ont changé et kan ca a fini de tout envoyer ,  il faut que j'appellle une fct ki va aller dans WM_PAINT pour afficher ma nouvelle image reconstruite avec les nouvo pixel.
 
je sais tout faire sauf le fait d'aller dans le  
"case: WM_PAINT" kan je le souhaite.
 
le problème c'est ke avec PostMessage(WM_PAINT) ca fé une genre de boucle et ya toujours le pti sablier , g pas la main koi.
 
et le truc bizarre c ke kan je lui di d'afficher un truc ou je c ke le temps est constant , la je peu utiliser WM_TIMER
et ba la g la main (ya plus le sablier), chelou cette histoire.
 
 
Fodrait ke j'essaye de démarrer une thread pour faire ca mais ca devient cho la .  
 
 
 
 

Reply

Marsh Posté le 25-04-2004 à 09:49:32    

La résolution de ton problème par les threads semble une bonne solution.
 
Up: Les threads, c'est pas si compliqué que cela en a l'air. Il faut juste bien préparer le travail, les synchronisations...


Message édité par christophe_d13 le 25-04-2004 à 09:50:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed