PoluxProg
Messages postés5Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention26 mai 2003
-
22 mai 2003 à 12:16
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
26 mai 2003 à 11:31
Pour afficher une image dans la zone client, j'utilise ce code qui marche plutôt bien:
Mais, le problème est que ce code me créé une erreur d'exécution lorsque je le met dans un thread...
Je voudrais, en fait, faire une animation dans la zone client à partir de 50 images superposées qui seront affichées simultanément toutes les 200 millisecondes, tout en pouvant faire une pause à n'importe quel moment...
Si quelqu'un a une idée pratique sur ce problème ou autre solution, j'accepte toute propositon...
PoluxProg
Messages postés5Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention26 mai 2003 22 mai 2003 à 21:24
Merci pour ton message mais je ne comprends pas pourquoi le mettre dans un timer ?
L'animation reprèsente un décompteur graphique comme un sablier qui peut être stopper (suspendu momentanément) par événement, puis par un autre événement, il continue ("resume") de décompter...
PoluxProg
Messages postés5Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention26 mai 2003 22 mai 2003 à 21:54
Ah bon, je pensais que le thread était plus pratique à utiliser, mais c'est quoi le code pour démarrer une fonction avec un timer ? (J'utilisais déjà un timer pour mettre à jour l'affichage en cas de remension, mais c'était tout simple : SetTimer(1, 300, NULL))...
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 mai 2003 à 22:09
SetTimer() a au moins 2 methodes differentes d'appel.
Soit tu generes comme tu l'as mis un WM_TIMER sur ta WndProc, soit tu lui passes l'adresse d'une fonction callback avec laquelle tu fais ce que tu veux. La 2 eme methode a un gros avantage car elle sera toujours appelee quel que soit le contexte.
BruNews, ciao...
PoluxProg
Messages postés5Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention26 mai 2003 23 mai 2003 à 09:04
Merci beaucoup pour ton aide, il faut que je comprenne comment la fonction SetTimer en passant l'adresse
d'une fonction "callback" (?)...
Au fait, quelqu'un peut me dire s'il existe une version de MSDN en français ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 mai 2003 à 09:11
et non, pas de MSDN french.
Pour la version SetTimer() avec callback, va voir ma source ABOUTBOX SINUSOIDE, y a un exemple. C'est pas mfc car je n'en fais jamais mais tu auras idee de la methode.
BruNews, ciao...
PoluxProg
Messages postés5Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention26 mai 2003 26 mai 2003 à 10:52
J'ai essayer d'utiliser la fct SetTimer()...
Le truc que je ne comprends pas, c'est que dans ton exemple ABOUTBOX SINUSOIDE lorsque tu utilise SetTimer(), tu lui mets 4 paramètres. Or, quand je le met dans mon code à la CView, le compilateur me dis que SetTimer ne peut accepter que 3 paramètres... (???)
CView::OnDraw(CDC *pDC)
{ ...
SetTimer(0, 100, TestTimerProc); <- 3 param et pas +
...
}
Autre chose, dans ma fct CALLBACK qui sera appelée toute les 100 milisecondes, je voudrais pouvoir lui mettre un paramètre :
void CALLBACK TestTimerProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
Je vous voudrais avoir le pointeur sur le pDC de la fct OnDraw(), afin d'afficher mes images toutes les 100 ms...
}
A moins qu'il existe une fct qui permette de récupérer ce pointeur sur la zone client...