Accueil > Forum > > > > Creation de timer
Creation de timer
mercredi 22 mars 2006 à 22:50:09 |
Creation de timer

julienbornet
|
Bonjour j'ai besoin de creer un timer qui verifie l'etat d'un bouton (s'il a ete cliquer ou non) pendant qu'une autre action s'effectue. Pourr etre plus clair, j'ai deux boutons, l'un sert au demarage d'une boucle while et l'autre est senser servir a stoper la boucle. Le probleme c'est que qd la boucle while s'effectue, je ne peut plus appuyer sur l'autre bouton. Il faut donc que j'effectue un test dans ma boucle while a interval regulier pour verifier que le bouton stop n'est pas ete clique. Quelqu'un pourait il m'indiquer comment creer un tel timer D'avance merci. PS: je sais que la creation d'un mulitithread serait mieux mais aussi plus compliquer cependant si vous pouvez me dire exactement comment creer un thread qui demarre au clic du premier bouton et qui s'arret au clic du second je ne suis pas contre.
|
|
mercredi 22 mars 2006 à 23:02:19 |
Re : Creation de timer

SAKingdom
|
Tu peut pas faire un bouton pour une while. Dans ce cas il faut créé un nouveau thread avec CreateThread. exemple
unsigned _thread1 (LPVOID param) { int i= NULL;
while(1) { i++; } }
met en variable global HANDLE thread1
puis dans ta procédure de fenetre
case WM_COMMAND if((HWND)lParam == ActivWhile) thread1 = CreateThread(0, 0xFF, (LPTHREAD_START_ROUTINE)_thread1, 0, 0, 0);
if((HWND)lParam == StopWhile) CloseHandle(thread1);
j'ai pas essailler alors jpeut pas te dire si c'est sûre
___________________________________________ Les plus grands esprits trouvent toujours une solution
|
|
jeudi 23 mars 2006 à 01:20:02 |
Re : Creation de timer

BruNews
|
CloseHandle n'arrete pas un thread, ce serait: TerminateThread() : méthode sauvage, cas d'extrème urgence. ExitThread() : un peu plus propre mais encore bof bof. Indiquer au thread de sortir proprement, exemple en positionnant un indicateur que le thread lira régulièrement sinon en utilisant les méthodes de synchro du système (lire Richter, le sujet est très vaste). ciao... [ Lien ]BruNews, MVP VC++
|
|
jeudi 23 mars 2006 à 02:19:43 |
Re : Creation de timer

SAKingdom
|
Ceci pour quitter "proprement" pourrait-il faire l'affaire alors?
unsigned _thread1 (LPVOID param) { int i= NULL;
while(1) { i++;
if(ThreadExit == true) { TreadExit = false; break; } }
return 0; }
met en variable global HANDLE thread1; bool ThreadExit = false;
puis dans ta procédure de fenetre
case WM_COMMAND if((HWND)lParam == ActivWhile) thread1 = CreateThread(0, 0xFF, (LPTHREAD_START_ROUTINE)_thread1, 0, 0, 0);
if((HWND)lParam == StopWhile) ThreadExit = true;
___________________________________________ Les plus grands esprits trouvent toujours une solution
|
|
jeudi 23 mars 2006 à 21:24:49 |
Re : Creation de timer
|
vendredi 24 mars 2006 à 20:32:27 |
Re : Creation de timer

julienbornet
|
Ok Brunews je suis en traint d'essayer de ramanier la source que tu m'a filer pour faire quelque chose de propre (ou au moins essayer). Par contre je ne sait pas a koi sert le type
LPDWD pdwd
il est present dans la Le thread et sert a pperement a afire le lien avec les autres fonctions.
|
|
vendredi 24 mars 2006 à 20:33:11 |
Re : Creation de timer

julienbornet
|
A moins qu'il ne serve a allouer la memoire suffisant au derouleemnt du thread
|
|
vendredi 24 mars 2006 à 20:44:20 |
Re : Creation de timer

BruNews
|
Le param du thread ? Il est défini par l'API, on passe ce qu'on veut via un pointeur. ciao... [ Lien ]BruNews, MVP VC++
|
|
vendredi 24 mars 2006 à 21:24:25 |
Re : Creation de timer

julienbornet
|
Oui merci je en effet je n'avait pas vu. Bon voila j'ai terminer mon programme test qui me permet de verifier que j'ai bien compris  ou non  . Je la poste donc si tu peux y jeter un coup d'oiel se serait sympa. Je penses partir sur cette base pour mon Thread pour mon prog principal. Ce thread se contente d'ecrire des nombre dams un fichier et il s'arret quand on pres le bouton stop (ce qui est en fin de compte prof de ce que je veux faire).
#include "Display.h"
/*-------------------------------------------------------------------------------------------*/
#define ONEMEGA 0x100000
#define WM_ENDTHRD (WM_USER+1)
HANDLE hthrd = 0;
HWND hbtstop;
DWORD bstop;
FILE * fic;
typedef struct tagDWD {
WIN32_FIND_DATA wfd;
char *pmem;
}DWD, *LPDWD;
/*-------------------------------------------------------------------------------------------*/
void __stdcall WriteInFile(LPDWD pdwd)
{
int i = 0;
deb:
if(bstop) goto userstop;
i++;
fprintf(fic,"%i\n",i);
goto deb;
userstop:
fclose(fic);
}
DWORD WINAPI ThreadProc(LPVOID pparam)
{
LPDWD pdwd; // 1 SEULE ALLOCATION, structure et pdwd->pmem
pdwd = (LPDWD) HeapAlloc(GetProcessHeap(), 0, sizeof(DWD) + ONEMEGA);
if(!pdwd) goto thrdExit;
pdwd->pmem = ( char*) (((BYTE*)pdwd) + sizeof(DWD));
EnableWindow(hbtstop, 1); // Rends le boutton stop actif
/*Allpeler la fonction du thread a cet endroit*/
WriteInFile(pdwd);
HeapFree(GetProcessHeap(), 0, pdwd);
thrdExit:
PostMessage((HWND) pparam, WM_ENDTHRD, 0, (LPARAM) pdwd);
return 0;
}
LRESULT CALLBACK MainProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
int Select;
switch (Msg)
{
/*Initialisation of the windows */
case WM_INITDIALOG:
hbtstop = GetDlgItem(hDlg, IDC_BUTTON_StopThread);
return TRUE;
/* Programation of the management of the windows*/
case WM_COMMAND:
Select = LOWORD(wParam);
switch (Select)
{
case IDOK:
sortie = 0;
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
case IDCANCEL:
sortie = 0;
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
case IDC_BUTTON_StartThread:
if(hthrd) return 0;
fic = fopen("testthread.txt","w+");
bstop = 0;
hthrd = CreateThread(0, 0, ThreadProc, (LPVOID) hDlg, 0, 0);
return TRUE;
case IDC_BUTTON_StopThread:
bstop = 1;
return TRUE;
}
default: return FALSE;
}
}
|
|
vendredi 24 mars 2006 à 21:26:16 |
Re : Creation de timer

julienbornet
|
Voila surtout n'hesite pas a me dire tout ce qui ne va pas. Une fois ces erreurs corriger penses tu (en tant qu'adiministarteur) qu'il serait interessant que je poset mon code.
D'avance merci
|
|
Cette discussion est classée dans : bouton, boucle, timer, creer, creation
Répondre à ce message
Sujets en rapport avec ce message
creation de bouton sans dialog ni de menu ? [ par AirFoxOne ]
Salut,Une tite question... ya moyen de mettre des bouton, text entry etc.. sur n'importe quelle fenetre ? genre je cree un rectangle et je colle mon b
C++ builder : Interrompre une boucle lors de l'appui sur un bouton [ par Minou1981 ]
Bonjour à tous,Je suis en train de programmer avec c++ builder. Mon probleme est le suivant: je ne sais pas comment faire pour interrompre une boucle
problème de boucle infinie (win32 sans MFC) [ par ksh182 ]
Salut,voilà, je code en C++ win32 via les ressources et j'utilises VS 2003 .NET----------------- case WM_COMMAND: { switch(wParam) { case IDC
Timer !! comprend rien [ par malfroc ]
Bonjour,je regarde les Timer sous visual C++. Je bosse en MFC, et voudrais appliqué un timer dès que l'on clique sur un bouton , et l'arreter lorqu'i
sortir d'une boucle while infinie avec un bouton [ par bertrandbasch ]
Bonjour,En fait je voudrai pouvoir lancer une boucle while à l'aide d'un bouton 1 qui pourrait être stoppé à l'aide d'un bouton stop.Il me faut cette
creation d'un tableau de taille augmentant a chaque iteration d'une boucle [ par rom12 ]
Salut,J'ai besoin de creer un tableau de taille variable... dt la taille n'est pas connue d'avance (d'ou le pb avec malloc).En fait, j'ai une boucle q
Creation d'une classe [ par enrageur ]
J'ai fais un petit programme en C++ et j'aimerais creer une classe avec a l'interieur le petit programme. Mais je ne sais pas comment creer une clase.
bouton stop [ par rlope ]
BonjourJ'ai un petit problème avec un bouton STOP que je voudrais créer. (Visual C++ boite de dialogue)Explication :Avec un bouton de ma boite de dial
boucle do while et timer [ par gogeta2003 ]
Salut, je doit récupérer une valeur que je lis sur une carte E/S, et j'attend dans une boucle infini pour passer au cycle suivant tant que je n'ai pas
Creer un bouton avec l'API Windows [ par banane_rose ]
code : ICI C'est sensé faire apparaitre une fenêtre avec un gros bouton "Quitter" au milieu . Mais rien ne marche , même pas l'affichage de
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|