Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques
Bibliothèques Vos questions sur les bibliothèques pour C ou C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/09/2012, 14h00   #1
stephan1609
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 :
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 :
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 :
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
stephan1609 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2012, 15h32   #2
stephan1609
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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
stephan1609 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2012, 13h17   #3
dragonjoker59
Membre Expert
 
Homme Sylvain DOREMUS
Développeur informatique
Inscription : juin 2005
Messages : 633
Détails du profil
Informations personnelles :
Nom : Homme Sylvain DOREMUS
Âge : 31
Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2005
Messages : 633
Points : 1 533
Points : 1 533
Envoyer un message via MSN à dragonjoker59
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...

Chef de projet (et unique exécutant pour l'instant) pour Castor 3D
dragonjoker59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h22.


 
 
 
 
Partenaires

Hébergement Web