Accueil > Forum > > > > Arret sur click d'un bouton
Arret sur click d'un bouton
lundi 13 mars 2006 à 16:26:25 |
Arret sur click d'un bouton

julienbornet
|
Bonjour quelqu'un connaitrait il la fonction qui permet de verifier si un bouton a ete clique. Je travail dans une dialogu box et je souhaite programmer une fonction du style: case bouton1: while (bouton2 n'est pas cliquer) do { actions } Ce qui pourait par exemple correspondre a un chronometre. Merci d'avance 
|
|
lundi 13 mars 2006 à 16:33:09 |
Re : Arret sur click d'un bouton

Joky
|
Sous classe ton bouton, et traite le message WM_LBUTTONDOWN if(!Meilleur("Joky")) return ERREUR;<
|
|
lundi 13 mars 2006 à 17:11:32 |
Re : Arret sur click d'un bouton

racpp
|
Salut, Il faut toujours éviter ce genre de boucle while(). Ca bouffe les ressources. Il faut plutot intercepter l'événement de clic dans procedure de la boite de dialogue grace à WM_COMMAND. Cet événment fournit le HWND et l'identificateur du controle cliqué dans lParam et wParam respectivement. Voici un petit exemple utilisant bouton1 comme identificateur: case WM_COMMAND: Select=LOWORD(wParam); switch(Select) { case bouton1: // Actions à faire... return 0; case ..... // ...... } Pour faire un chronomètre, il est préférable d'utiliser le Timer de Windows avec les fonctions SetTimer(), KillTimer() et traiter le message WM_TIMER dans la procédure de ta boite de dialogue.
|
|
lundi 13 mars 2006 à 20:31:33 |
Re : Arret sur click d'un bouton

julienbornet
|
En fait je ne cherche pas a faire un chronometre mais a enregistre des donnes dans un fichier. C'est donnes arrive d'une carte d'aquisition. Ainsi en appuyant sur start je commence a enregister et en appuyant sur stop j'arrete (d'ou l'analogie avec le chrono).
J'ai utiliser ceci:
int end = 0;
case bouton1: end = 0; // je reinitialise au cas ou je veux reprendre apres un arret while (end = 0) do { actions } return true
case buton2: end = 1; return true;
Pensez vous que cette solutions soit correct. Y a t'il quelque chose de plus smart?
|
|
lundi 13 mars 2006 à 20:33:10 |
Re : Arret sur click d'un bouton

julienbornet
|
Ah oh fait j'aoublias je suis un rookies, alors "sous classe" un bouton kesako?
|
|
mardi 14 mars 2006 à 01:28:41 |
Re : Arret sur click d'un bouton

SAKingdom
|
Tu peu faire par exemple:
bool boutonclic = false;
switch(message) { case WM_COMMAND: if((HWND)wParam == LeBouton) boutonclic = true; break; }
et plus loin dans WM_PAINT ou dans un timer tu test:
if(boutonclic == false) { /* ce que tu doit faire */ } else if(boutonclic == true) boutonclic = false; /* pour réinitialiser */
Pour enregistrer dans un fichier c'est normalement fprintf ou pour l'API WriteFile mais pour fprintf c'est:
FILE *file;
file = fopen("w", "fiichier.txt"); fprintf(file, "Bonjour les amis"); fclose(file);
___________________________________________ Les plus grands esprits trouvent toujours une solution
|
|
mardi 14 mars 2006 à 16:39:35 |
Re : Arret sur click d'un bouton
|
mardi 14 mars 2006 à 17:13:59 |
Re : Arret sur click d'un bouton

julienbornet
|
Bon voila alors en fait j'ai tester ma structure et le probleme c'est que des que j'entre dans la boucle, cette derniere bouffe toute les resources et je ne peux plus rien faire donc impossible de cliquer et d'arreter la boucle. J'ai eglement tester les structures que vous me propser mais le probleme c'est que je ne comprend pas trop comment l'implementer. Qu'est ce que le WM_PAINT. Je n'utilise que W M_INITDIALOG: et WM_COMMAND: . J'ai aussi essayer ceci dans une structure de test: case IDC_BUTTON1: if (end == 0) { number = number + 1; } return TRUE; case IDC_BUTTON2: end = 1; SetDlgItemInt(hDlg, IDC_EDIT1, number,FALSE); return TRUE;le probleme vous l'orez comrpis c'est que si j'utilise cette structure dans mon prog en remplacant le number = number+1 par ma fonction fprintf, il faut que je clic sans arret sur le bouton. Hors les donnees de la carte d'aqui arrive toutes les milliseconde donc ... C'est pourkoi je voulais utiliser le while. De plus ma structure test est la pour voir si je suis capable d'arreter une boucle si oui, alors je suis capable d'arreter l'aqui. Voila j'espeer avoir ete clair Merci de me faire par de vos idees
|
|
mardi 14 mars 2006 à 17:42:01 |
Re : Arret sur click d'un bouton

julienbornet
|
voici le code que j'ai implementer: // Programmation of the button "Start aquisiation" case IDC_BUTTON_STARTAQUI: /*First we serify if the file have benne created*/ if (Crefil != 1) { strcpy(meserr,"Please create a file"); SetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, meserr); return FALSE; }
/*If the file is created, we inialize some variable and start the aquisition*/ end = 0; fprintf(fic, "\n\n Data\n"); start = clock(); while (end == 0) { fprintf(fic, "\n ") /*First we write the time of the point aquisition*/ elapsed = clock()- start; rectime = elapsed*10e-4; fprintf(fic, "Time:%f ",rectime); /*Then if the absolut postion have been choose we cheked that we can wrote it and we wrote the data*/ if (IsDlgButtonChecked(Dlg, IDC_ABSOLUTEPOSITION) == BST_CHECKED) { error = cnc_absolute(FlibHndl,-1,4+4*MAX_AXIS,&Datapoint); if (error == 0) { fprintf(fic, "x = %8ld y = %8ld z = %8ld b = %8ld c = %8ld ",Datapoint.data[0] ,Datapoint.data[1] ,Datapoint.data[2] ,Datapoint.data[3] ,Datapoint.data[4]); } else { GetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes ,50); sprintf(meserr, "An error occured. Error Number : %i",error); strcat (mes,meserr); SetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes); } } /*Then if the feedrate have been choose we cheked that we can wrote it and we wrote the data*/ if (IsDlgButtonChecked(Dlg, IDC_FEEDRATE) == BST_CHECKED) { error = cnc_actf(FlibHndl, &feedrate); if (error==0) { fprintf(fic, "Feedrate = %ld ",feedrate); } else { GetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes ,50); sprintf(meserr, "An error occured. Error Number : %i",error); strcat (mes,meserr); SetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes); } } /*Then if the servoloadmeter have been choose we cheked that we can wrote it and we wrote the data*/ if (IsDlgButtonChecked(Dlg, IDC_SERVOLOADMETER) == BST_CHECKED) { error = cnc_rdsvmeter(FlibHndl, &maxaxis, Axisload); if (error == 0) { for (i=0; i<maxaxis; i++) { fprintf(fic, "SvLM %c = %d ", Axisload[i].svload.name , Axisload[i].svload.data); } } else { GetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes ,50); sprintf(meserr, "An error occured. Error Number : %i",error); strcat (mes,meserr); SetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes); } } /*Then if the spindle speed have been choose we cheked that we can wrote it and we wrote the data*/ if (IsDlgButtonChecked(Dlg, IDC_SPINDLESPEED) == BST_CHECKED) { error = cnc_acts(FlibHndl, &spindspeed); // Test if there is an error if (error == 0) { fprintf(fic, "Spindle speed = %ld ", spindspeed.data); } else { GetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes ,50); sprintf(meserr, "An error occured. Error Number : %i",error); strcat (mes,meserr); SetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes); } } /*Then if the spindle load meter have been choose we cheked that we can wrote it and we wrote the data*/ if (IsDlgButtonChecked(Dlg, IDC_SPINDLELOADMETER) == BST_CHECKED) { short num = 1; error = cnc_rdspmeter(FlibHndl, 0, &num, Spindload); if (error == 0) { fprintf(fic, "Spindle load = %d ", Spindload[1].spload.data); } else { GetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes ,50); sprintf(meserr, "An error occured. Error Number : %i",error); strcat (mes,meserr); SetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes); } } /*Then if the G Code have been choose we cheked that we can wrote it and we wrote the data*/ if (IsDlgButtonChecked(Dlg, IDC_GCODE) == BST_CHECKED) { error = cnc_rdseqnum(FlibHndl, &Numblock); if (error == 0) { fprintf(fic, "N%ld\n",Numblock.data); } else { GetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes ,50); sprintf(meserr, "An error occured. Error Number : %i",error); strcat (mes,meserr); SetDlgItemText(Dlg, IDC_TEXTBOX_AQUISITIONSTATUS, mes); } }
// Programmation of the button "Stop aquisiation" case IDC_BUTTON_STOPAQUI: end = 1; return TRUE;
|
|
mardi 14 mars 2006 à 17:47:25 |
Re : Arret sur click d'un bouton

julienbornet
|
Ne soyez pas surpris si les commenatires sont en anglais c parce que je suis en stage pour un organisme ou la langue officielle est l'anglais du coup tout les documents doivent etre en anglais. Comme vous pourvez le voir ma structure de test s'apparente tres bien a ceci dans sa forme generale.
De plus connaissez vous un moyen pour verifer toutes les check box d'un coup et ainsi dire :
case bouton start:
Verifie les donnees a enregister While (bouton stop appyuer) { enregistre les donnees a aenregister }
voila merci encore
|
|
Cette discussion est classée dans : bouton, fonction, arret, click
Répondre à ce message
Sujets en rapport avec ce message
Comment attribuer la fonction OpenFile a un bouton? [ par tormoj ]
Comment attribuer la fonction OpenFile a un bouton?Merci d'avance à tous.tormoj
Affichage d'une photo et arret d'affichage [ par rasta_raf ]
Bonjour,Je programme avec la bibliothèque MFC de Visual C++ 6.0 et j'ai créé une application SDI qui affiche une FormView où il y a 2 boutons (Bouton
Bouton d'arret d'urgence [ par tanguy_laverdure ]
Bonjour, j'ai cree une application qui lorsqu'on appui sur un bouton lance un traitement. ce traitement peut être long et je souhaiterai avoir la poss
BUTTON [ par ToToL ]
BonjoursMon probleme est le suivant : quand on cré un bouton on lui donne des "style" du genre : WS_VISIBLE. auriez vs un endroit ou il sont tous repe
Comment faire appel à une fonction? [ par freepouy18 ]
Bonjour a tous,Voila, j'ai créé un formulaire avec MSInfoPath2003 contenant un bouton. Ce bouton fait appel à une fonction créée sous MSInfoPtah. J'ai
Creation d'un Thread en MFC et arret par un bouton [ par djtiaf ]
Bonjour à tous,Je cherche à créer un Tread tout simple :fonction Thread du bouton Start{while (arret=false) { Sleep(1000) // on laisse 1 sec
Multitache et MFC [ par tigerskin ]
Bonjour a tous.J'ai un petit soucis je voudrais réaliser un bouton d'arret d'urgence pour une application qui execute une tache en fond et qui me blo
[.NET] comment simuler click d un bouton [ par jerome86600 ]
ou quel parametre il faut mettre dans button1->ckick(...,...)
Aide pour une fonction recherche avec suivant [ par oeil123 ]
je n'arrive pas a trouver la fonction que microsoft utilise pour faire le dialog recherche avec le fameux bouton suivant qui m'interesse.En fait je vo
Bouton au fonction de la touche retour arrière [ par toxjamescook ]
Bonjour,voila je developpe en c++ builder et je voudrais savoir comment je peux définir un clic bouton pour qu'il agisse comme la touche du clavier re
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
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
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
|