Accueil > Forum > > > > Mon IHM est bloqué et je veut cliquer :-(
Mon IHM est bloqué et je veut cliquer :-(
jeudi 4 janvier 2007 à 11:31:11 |
Mon IHM est bloqué et je veut cliquer :-(

nerone21
|
Bonjour a vous les codeurs et bonne année bien sur!
alors ti probleme assez recurent mais j'ai beau parcourir le forum je comprend pas.
De maniere général je ne comprend pas la facon et a quel occasion utiliser les threads ou les timers mais je sais que dans mon probleme actuel je vais en avoir besoin,
je suis en train de creer une appli qui utilise une fonction de recherche dans les dossiers certains type de fichiers, jusque la tout va bien, mon ihm se separe en 2 boites de dialogues:
- la premiere qui permet de determiner quoi et où chercher - la deuxieme qui est celle de recherche et donc c'est dans la deuxieme que j'ai un probleme:
la recherche s'effectue dés l'initialisation de la deuxieme fenetre mais si par un malheureux hasard de mon envie, je veut appuyer sur un bouton "arret recherche" et bien je ne peut pas car la fenetre est bloqué jusqu'a ce que la fonction de recherche se termine.
et donc en definitive j'aimerais que la fenetre reste active et que je puisse detecter, pendant la recherche, l'appui sur le bouton... alors je suis desolé, je sais que ce genre de questions a été posée des milliers de fois mais malgré mais recherches assidues, je n'ai pas trouvé.
et voila en gros mes fonctions de recherche:
void RechercherFichiers (char NomDossier[MAX_PATH]) { WIN32_FIND_DATA Find; HANDLE hFind; BOOL Finished=FALSE; char NomFichier[MAX_PATH*2]; if (SetCurrentDirectory (NomDossier)==FALSE) return;
// Recherche premier fichier hFind=FindFirstFile ("*.*", &Find); if (hFind==INVALID_HANDLE_VALUE) { // pas de fichier Finished=TRUE; } else { // Fichier trouvé wsprintf (NomFichier, "%s%s", NomDossier,Find.cFileName); Extens(NomFichier); } // Les autres fichiers while (!Finished) { if (!FindNextFile (hFind, &Find)) // Plus de fichier Finished=TRUE; else { // Fichier trouvé wsprintf (NomFichier, "%s%s", NomDossier,Find.cFileName); Extens(NomFichier); } }
FindClose (hFind); }
// Recherche les fichiers textes dans le dossier spécifié // Cette fonction est récursive, elle s'apelle à chaque fois // pour évoluer dans la hiérarchie des dossiers void RechercherDossiers (char NomDossier[MAX_PATH]) { WIN32_FIND_DATA Find; HANDLE hFind; BOOL Finished=FALSE; char Buffer[MAX_PATH*2];
if (SetCurrentDirectory (NomDossier)==FALSE) return;
if (NomDossier[lstrlen(NomDossier)-1]!='\\') lstrcat (NomDossier, "\\");
// Recherche les fichiers multimedias du dossier RechercherFichiers(NomDossier);
// Recherche premier sous dossier hFind=FindFirstFile ("*.", &Find); if (hFind==INVALID_HANDLE_VALUE) // Pas de dossier Finished=TRUE; else { // Récupère le nom du dossier et lance la recherche si le dossier est valide // c'est à dire que c'est bien un dossier, autre que '.' et '..' wsprintf(Buffer,"%s%s", NomDossier, Find.cFileName); if (DossierValide(&Find)) RechercherDossiers(Buffer); }
// Recherche les autres dossiers while (!Finished) { if (!FindNextFile (hFind, &Find)) // Plus de dossier Finished=TRUE; else { // Récupère le nom du dossier et lance la recherche si le dossier est valide // c'est à dire que c'est bien un dossier, autre que '.' et '..' wsprintf(Buffer,"%s%s", NomDossier, Find.cFileName); if (DossierValide (&Find)) RechercherDossiers(Buffer); } } FindClose (hFind); }
Et l'initialisation de la fenetre de recherche si ca peut servir: case WM_INITDIALOG: nIndex=(int) lParam; hWndResults=hWnd; // Affiche la fenêtre ShowWindow (hWnd, SW_SHOW); UpdateWindow(hWnd); NbrFilesINT=0; if (nIndex==0) { // Recherche dans tous les lecteurs nCount=(int) SendDlgItemMessage (hWndMain, IDC_LECTEURS, CB_GETCOUNT, (WPARAM) 0, (LPARAM) 0); for (i=1;i<nCount;i++) { SendDlgItemMessage (hWndMain, IDC_LECTEURS, CB_GETLBTEXT, (WPARAM) i, (LPARAM) (LPCSTR) strDriveSelected); // On veut que par exemple C:\ et pas C:\ [NOM DU VOLUME] strDriveSelected[3]='\0'; RechercherDossiers (strDriveSelected); } } else { // Recherche dans le lecteur spécifié SendDlgItemMessage (hWndMain, IDC_LECTEURS, CB_GETLBTEXT, (WPARAM) nIndex, (LPARAM) (LPCSTR) strDriveSelected); // On veut que par exemple C:\ et pas C:\ [NOM DU VOLUME] strDriveSelected[3]='\0'; RechercherDossiers (strDriveSelected); } SetDlgItemText (hWnd, IDC_MESSAGEFIN, "Le programme a trouvé le(s) extension(s) spécifiée(s) dans le(s) fichier(s) suivant(s).\n\nSélectionnez un fichier et cliquez sur Ouvrir pour visualiser le fichier."); sprintf(NbrFilesCHAR,"%d",NbrFilesINT); strcat(Nbrfile,NbrFilesCHAR); postab=0; return TRUE;
Merci bien a vous si vous pouvez m'apporter de l'aide.
Bonne continuation.
|
|
jeudi 4 janvier 2007 à 11:38:49 |
Re : Mon IHM est bloqué et je veut cliquer :-(

nerone21
|
c'est encore moi, j'en profite pdt ke je parle de thread pour aussi demander autre chose:
- mon programme doit s'executer au demarrage de windows avec une recherche direct dés le demarrage et dc comme le processus de recherche est assez lourd pour le processeur, j'aimerais a la limte qu'il s'allume avec un processus de type priorité basse, c'est a dire qu'il ne gene pas trop trop le reste des programmes qui serait amener a tourner en même temps.
- et aussi j'aimerais savoir si c'est possible de rendre un processus recursif, imaginons que l'utilisateur l'arrete grace a CTRL+ALT+SUPPR, j'aimerais que ce soit detecté et qu'il se relance de lui-même, un peu comme explorer.
merci et encore dsl de poser tant de question.
|
|
jeudi 4 janvier 2007 à 14:37:27 |
Re : Mon IHM est bloqué et je veut cliquer :-(

racpp
|
Salut, Effectivement, dans ce genre de cas un thread est indispensable. Voici une page d'un chapitre sur les threads. Elle contient un lien vers un exemple complet: http://bob.developpez.com/tutapiwin/article_50.phpTon thread pourra ouvrir sa propre boite de dialogue et effecuer les recherches en permettant d'interrompre l'opération en cliquant sur un bouton de la boite mère. Pour que le programme s'exécute au démarrage, tu as deux choix: 1- Ajouter le chemin de ton exe dans l'une des clés suivantes de la base de registres: -HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 2- Créer un service Windows. Pour empêcher l'arrêt de ton programme, je pense qu'il faudra passer par un driver. Voici un code source permettant de cacher un processus: CACHER-PROCESSUS-CHOIX-DRIVERTu peux soit utiliser le driver fourni avec le source ou le créer si tu as la DDK. Une autre solution consiste à relancer le programme juste après sa fin en interceptant un message du système. La encore un driver est indispensable.
|
|
jeudi 4 janvier 2007 à 15:39:22 |
Re : Mon IHM est bloqué et je veut cliquer :-(

nerone21
|
merci a toi rapcc, mais j'ai deja trouvé cette page et ca m'avance pas plus pakeu je sais pa du tout où demarrer mes threads, je saurai où les arreter mais pas exactement quand les demarrer...
a la limite ce que j'aimerais trouver c'est une source avec une boite de dialogue toute simple avec un bouton qui ouvre une autre boite de dialogue qui ferrait tourner une boucle infinie ou un truc du genre et un bouton arreter pour la stopper. avec ca je saurai m'adapter et je comprendrais le processus du truc...
merci pour le reste par contre et bonne continuation.
|
|
Cette discussion est classée dans : dossier, recherche, find, hfind, nomdossier
Répondre à ce message
Sujets en rapport avec ce message
recherche du dossier application data [ par fuliculi ]
Bonjour à tous,je cherche le répertoire "application data" de la session en court pour y retrouver des fichiers de flash *.sol (shared object) histoir
PB pour parcourir tout les dossiers [ par supers03 ]
Bonjours à tousJ'ai écrit un programme qui parcour un dossier et ses sous-dossier, avec une fonction qui "s'auto appel" :void cherche(char *s){ HAN
Fichier corbeille [ par akalys ]
BonjourJ'aimerais afficher dans une listview les fichiers contenu dans la corbeille.Voici mon code : HANDLE hfind; WIN32_FIND_DATA w
recherche un dossier par date de creation [ par mickaaaael ]
Bonjour,J'aimerai trouver un logiciel qui me permettrai de récupérer le dernier fichier crée dans un dossier X pour le mettre dans un dossier Y et qu'
retour d'une fonction [ par noulii ]
J'ai utilisé la fonction suivante, venant de "bruno" que j'ai trouvé sur ce site :HANDLE hfind;WIN32_FIND_DATA wfd;// Initialise la recherchehfind = F
recherche d'un dossier [ par zemzemi ]
bonjouraide moi svp de trouver de codes sources en CPP ou C qui donnée la possibilite la recherche d'un fichier ou d'un dossier exist dans la PCmercib
recherche exemple [ par doberman7578 ]
Dans le cadre d'un projet en bts informatique(en C sous linux), je dois effectué un sereur client transfert d'image ( ce que j'aieffectué) mais je doi
recherche de fichier pour le language C [ par Cyr62110 ]
Savez vous ou l'on pourait avoir les fichier :-Stdio.h-Stdlib.h-Temp.hSi quelqu'un serait me dire où me les procurer, je lui en serait reconnaissant.
recherche d'un fichier sous lunix [ par zemzemi ]
salut mon travail s'agit d'implimente en c\cpp et sous linux un prog qui prent comme entre un nom de fichier et donne en sortie si cette fichier exis
ToolBar InternetExplorer [ par oliversleep ]
Salut tout le monde, voilà je suis à la recherche de documentation pour la réalisation d'une appli (DLL ou EXE) qui serai mise dans l'interface d'In
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft 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
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
|