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

Bibliothèques Discussion :

[Win32] Créer une barre de progression


Sujet :

Bibliothèques

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut [Win32] Créer une barre de progression
    Bonjour tout le monde,

    j'essaye de réaliser une classe progress qui permettrait de créer une barre de progression n'importe où dans un projet beaucoup plus long. J'ai réussi à la faire fonctionner mais j'ai du chipoter en intégrant la fonction sensé contrôler la barre à l'intérieur du code même de la barre (moche!!) . Maintenant le soucis c'est que mon code n'exécute même pas la méthode InitDialog de windows (rentre pas dedans) et là je suis complétement piégé. Je suis parti d'un exemple tout fait et ai essayer de la modifier pour l'adapter à mon problème.
    Voici le code
    le resource.h :
    resource.rc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <windows.h>
     
    #include "resource.h"
     
    DIALOG1 DIALOG
       60, 60, 160, 80
              STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
                                            CAPTION "ProgressBar"
    BEGIN
        //DEFPUSHBUTTON "Progress", IDOK, 56, 55, 42, 12
        CONTROL "", IDE_PB1, "msctls_progress32", 0 ,10, 20, 140, 12
    END
    progress.h :
    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
    16
    17
    18
    19
    20
    #include <windows.h>
     
    class Progress
     
    {
    public:
        Progress(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow,int len);
        void next();
     
    private:
        HWND *hand;
        int longueur;
        int cur;
     
        BOOL APIENTRY run_msg(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
        void quit();
     
     
     
    };
    progress.cpp :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    #include <windows.h>
    #include "Progress.h"
    #include "resource.h"
    #include <commctrl.h>
    #include <iostream>
    using namespace std;
     
    Progress::Progress(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow,int len)
    {
        InitCommonControls();
        DialogBox(hInstance,"DIALOG1",NULL,(DLGPROC)&Progress::run_msg);
        longueur=len;
        cur=0;
     
     
    }
     
     
    BOOL APIENTRY Progress::run_msg(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
     
         switch (uMsg)
        {
     
          case WM_INITDIALOG:
             SendDlgItemMessage(hDlg, IDE_PB1, PBM_SETRANGE, 0, MAKELONG(1,longueur));
             SendDlgItemMessage(hDlg, IDE_PB1, PBM_SETSTEP, 1, 0);
             hand=&hDlg;
             return TRUE;
     
          case WM_COMMAND:
              if (LOWORD(wParam) == IDCANCEL)
                  {
                       EndDialog(*hand,0);
     
                  }
                  return TRUE;
     
          default:
                return FALSE;
        }
     
    }
     
    void Progress::next()
    {
     
        SendDlgItemMessage(*hand, IDE_PB1, PBM_STEPIT, 0, 0);
        cur=cur+1;
        if(cur==longueur)
        {
            quit();
        }
    }
     
    void Progress::quit()
    {
        EndDialog(*hand,0);
    }


    Merci d'avance pour ceux qui pourront m'aider ou qui auront essayer

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Finalement je suis passé à wxWidget. Malheureusement je bloque toujours: Le 'main' dans ces applications est une méthode OnInit() implémentée par une classe héritant de wxApp. Cette méthode est appelée toute seule et ne reçoit rien en paramètre. Je ne sais pas comment utiliser la barre de progression en dehors du OnInit()?

    merci

  3. #3
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Euh...
    Pour créer une progress bar, où qu'elle soit, il faut une fenêtre parente.
    Il faut donc dans le OnInit de ton application que tu crées une fenêtre dans laquelle tu mettras ta progress bar.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/01/2010, 11h26
  2. Créer une barre de progression
    Par Downhill6 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/03/2009, 18h35
  3. EXCEL VBA - Créer une barre de progression
    Par babacool dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/08/2008, 19h16
  4. Créer une barre de progression avec "stop/pause"
    Par davos56 dans le forum Delphi
    Réponses: 7
    Dernier message: 22/05/2007, 18h59
  5. Créer une barre de progression sous Vba ??
    Par Deejoh dans le forum Général VBA
    Réponses: 7
    Dernier message: 17/10/2005, 16h05

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