IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Traitement de message trop long C++/WINAPI


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut Traitement de message trop long C++/WINAPI
    Bonjour à tous!

    Voila mon problème:
    Dans l'une de mes boites de dialogue, lorsque j'appuie sur un bouton (peu importe) le traitement de message est trop long dans la procédure de traitement des messages donc la boite de dialogue ne se redessine pas.
    J'aimerais bien que lors du traitement de mon message la boite de dialogue reste accessible...
    Voila, répondez s.v.p.

  2. #2
    screetch
    Invité(e)
    Par défaut
    il y a plusieurs facons de le faire, la complexe et la cradoc.

    la cradoc serait que dans ton traitement long, de temps en temps tu traites les messages de la boite de dialogue.

    la belle serait de faire un thread pour ton traitement, et le bouton declencherait uniquement le thread (donc un traitement tres court)

    dans les deux cas, le probleme, c'est que alors tu pourrais de nouveau lancer un second traitement en recliquant sur le bouton (a toi de te demmerder pour ne pas relancer)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    Merci beaucoup, j'avais pensé à faire un thread mais en fait le traitement
    prend en compte les éléments de la dialog box (texte des items de la listview)
    est-ce que c'est possible de les récuperer par le thread?

  4. #4
    screetch
    Invité(e)
    Par défaut
    considerant que ces parametres ne doivent pas changer, je te conseille de les stocker dans une structure dont tu passeras l'adresse au thread.


    en gros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    case WM_CLICK:
    {
      struct ThreadParams params;
      params.count = /*get value1 */;
      params.file = /* get value2 */;
      SendMessage(hWnd, WM_DISABLE, 0, 0); /* histoire qu'on ne reclique pas dessus */
      CreateThread(...., (LPVOID)&params, ...);
    }
    break;
    case WM_USER:
      /* le thread signale qu'il a terminé */
      SendMessage(hWnd, WM_ENABLE, 0, 0);
      /* detruit le thread */
      /* je sais plus mais bon tu vois quoi */
    break;
    pui, bah il faut attendre la fin de ce thread. pour cela je recommande d'envoyer un message depuis le thread, via l'API windows

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    Merci pour la réponse! je vais me documenter un peu plus sur les threads et j'essayerais tout ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gérer un message trop long (cipher)
    Par C/C++ dans le forum Général Java
    Réponses: 1
    Dernier message: 17/12/2012, 10h31
  2. [VB6]Message d'erreur si le temps d'exécution est trop long
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 14/09/2006, 16h43
  3. [Système] Traitement trop long, géré le timeout
    Par Oberown dans le forum Langage
    Réponses: 2
    Dernier message: 01/08/2006, 08h44
  4. [FLASH 8] Composant Alert - Message trop long
    Par aldo-tlse dans le forum Flash
    Réponses: 2
    Dernier message: 02/12/2005, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo