Problème d'utilisation des Timers

cs_ClemB Messages postés 5 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 30 septembre 2003 - 30 sept. 2003 à 09:24
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 30 sept. 2003 à 18:33
Bonjour,

J'ai besoin d'utiliser un timer pour cadencer mon appli.
Je pensais que j'allais m'en tirer avec les SetTimer, KillTimer etc...

Soucis : je ne suis pas en appli Windows (CWnd), mais en appli console (CWinApp), et les méthodes citées ci dessus ne sont pas utilisables...

Existe t il des fonctions similaires pour CWinApp ?
Quelle est la solution (en détail avec un petit bout de code SVP) ?

Merci

ClemB

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 sept. 2003 à 10:01
Tu as besoin de CWinApp et autre Cxxx pour faire de la console ???
SetTimer va tres bien, ne lui donne pas de hwnd mais donne lui un callback. Exemples dans mes sources.
BruNews, ciao...
0
cs_ClemB Messages postés 5 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 30 septembre 2003
30 sept. 2003 à 14:38
ça ne marche pas, voici le bout de code que j'ai :

void CALLBACK TimProc(HWND hwnd, UINT mssg, UINT idEvent, DWORD dwTime)
{
CStdioFile File;
char cPathFile[300];
CString sNewPath, sCmdeLCR;

if (mssg == WM_TIMER)
{
// Traitement appli
// ....
}
}

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// Initialise MFC et affiche un message d'erreur en cas d'échec
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO : modifiez le code d'erreur selon les besoins
_tprintf(_T("Erreur irrécupérable\n"));
nRetCode = 1;
}
else
{
// Création de timer 100ms.
uTimer = SetTimer( 0, 1, 100, TimProc);

// Vérifier si le timer a été crée avec succés
if (uTimer)
{
while (1) {}
}
KillTimer(0, uTimer);
}
return nRetCode;
}

Je pensais que c'est le système qui appellerait "TimProc", mais il n'en est rien...
De plus, mon while(1) ne mange t il pas de la ressource système ?
J'ai essayé d'aller voir tes exemples, mais il y a des problèmes de liens, je n'ai pas pu. Peux tu m'envoyer un bout de code qui correspondrait à mes besoins ?

Merci

ClemB
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 sept. 2003 à 15:01
if (mssg == WM_TIMER) Que fait cela dans le TimerProc ?
Ensuite donc mfc d'un prog console.
BruNews, ciao...
0
cs_ClemB Messages postés 5 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 30 septembre 2003
30 sept. 2003 à 18:27
Qu'est ce que tu entends par "Ensuite donc mfc d'un prog console" ? Passer en MFC ? de quelle manière ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 sept. 2003 à 18:33
excuse je passais d'un truc a un autre alors embrouille dans mon texte.
Justement NON je pense que mfc n'a rien a faire dans ton prog console mais j'en vois plein ton code (CString....). Faudrait virer tout ce charabia et remplacer par des appels directs win32.
BruNews, ciao...
0
Rejoignez-nous