begin process at 2012 05 27 21:16:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > [VC++][API]EXEMPLE DE PROGRESSBAR

[VC++][API]EXEMPLE DE PROGRESSBAR


 Information sur la source

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Expert Date de création :16/06/2002 Date de mise à jour :16/06/2002 19:10:26 Vu / téléchargé :5 953 / 572

Auteur : Xs

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Alors , étant donné que j'ai eu un mal fou a utiliser une ProgressBar avec la class créée pour, alors, voila, je donne un exemple, ainsi que la class modifié (il y avait quelques erreurs).
Le tout est aussi dans le Zip !

Source

  • /*
  • Le Programme Principal !!!
  • */
  • #include <windows.h>
  • #include <commctrl.h>
  • #include <stdlib.h>
  • #include "progressbar.h"
  • #include "resource.h"
  • ProgressBar Bar;
  • ProgressBar Bar1;
  • HWND hwndbar1;
  • HWND hwndbar2;
  • LRESULT CALLBACK DlP(HWND DLwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  • {
  • switch(msg)
  • {
  • case WM_CLOSE:
  • DestroyWindow(DLwnd);
  • break;
  • case WM_INITDIALOG:
  • {
  • InitCommonControls();
  • hwndbar1 = GetDlgItem(DLwnd,IDC_PDL);
  • Bar.Init(hwndbar1);
  • Bar.Hide(true);
  • Bar.IsVisible();
  • Bar.SetRange(0,100);
  • Bar.SetStep(0);
  • hwndbar2 = GetDlgItem(DLwnd,IDC_PDL2);
  • Bar1.Init(hwndbar2);
  • Bar1.Hide(true);
  • Bar1.IsVisible();
  • Bar1.SetRange(0,100);
  • Bar1.SetStep(0);
  • }
  • break;
  • case WM_DESTROY:
  • PostQuitMessage(0);
  • break;
  • case WM_COMMAND:
  • switch(HIWORD(wParam))
  • {
  • case BN_CLICKED:
  • switch(LOWORD(wParam))
  • {
  • case ID_CANCEL:
  • {
  • DestroyWindow(DLwnd);
  • }
  • break;
  • case ID_OK:
  • {
  • int i = 0;
  • bool once = true;
  • char iprint[4];
  • HDC hdc = GetDC(GetDlgItem(DLwnd,IDC_PDL));
  • RECT progress;
  • RECT SizeText;
  • GetClientRect(GetDlgItem(DLwnd,IDC_PDL),&progress);
  • do
  • {
  • if (Bar.SetPos(i) == 100 && once)
  • {
  • MessageBox(DLwnd,"Barre n°1 arrivée à terme","Bravo !",0);
  • once = false;
  • }
  • Bar.SetPos(i);
  • Bar1.SetPos(i/2);
  • itoa(i/2+1,iprint,10);
  • if (i < 49)
  • {
  • DrawText(hdc, iprint, -1, &SizeText, DT_CALCRECT);
  • SetBkColor(hdc,RGB(192,192,192));
  • SetTextColor(hdc,RGB(255,0,0));
  • }
  • else
  • {
  • DrawText(hdc, iprint, -1, &SizeText, DT_CALCRECT);
  • SetBkColor(hdc,RGB(0,0,128));
  • SetTextColor(hdc,RGB(255,255,255));
  • }
  • TextOut(hdc,progress.right/2-(SizeText.right-SizeText.left)/2,progress.top+3,iprint,strlen(iprint));
  • /*
  • pour centrer dans la barre : c'est plutôt précis car j'ai même été à mesurer la taille en pixel
  • de iprint....
  • */
  • Sleep(10);
  • i++;
  • }
  • while ( i< Bar1.MaxRan*2);
  • }
  • break;
  • case ID_REBOOT:
  • {
  • Bar.SetPos(0);
  • Bar1.SetPos(0);
  • }
  • break;
  • }
  • }
  • break;
  • default:
  • return FALSE;
  • }
  • return FALSE;
  • }
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  • LPSTR lpCmdLine, int nCmdShow)
  • {
  • HWND hdlg;
  • MSG Msg;
  • hdlg = CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) DlP);
  • if(hdlg == NULL)
  • {
  • MessageBox(NULL, "Window Creation Failed!", "Error!",
  • MB_ICONEXCLAMATION | MB_OK);
  • return 0;
  • }
  • ShowWindow(hdlg, nCmdShow);
  • UpdateWindow(hdlg);
  • while(GetMessage(&Msg, NULL, 0, 0) > 0)
  • {
  • TranslateMessage(&Msg);
  • DispatchMessage(&Msg);
  • }
  • return Msg.wParam;
  • }
  • /*La Class !*/
  • #ifndef __PROGRESSBAR_H
  • #define __PROGRESSBAR_H
  • #include <windows.h>
  • #include <commctrl.h>
  • class ProgressBar
  • {
  • private:
  • HWND hBar;
  • public:
  • int MaxRan;
  • int MinRan;
  • BOOL Init(HWND hwndbar); //Initialise le controle
  • BOOL SetRange(int nMinRange,int nMaxRange); //Définis la position Minimale et Maximale
  • void Hide(BOOL bVisible); //Afiche ou Cache le controle
  • BOOL IsVisible(void); //Détermine si le controle est visible
  • int SetStep(int nStep); //Définis le pas
  • int SetPos(int nPos); //Définis la valeur du controle
  • int Increment(int nIncrement);//Incrémente de nIncrement la valeur du controle
  • int IncrementStep(void);//Incrémente d'un pas définis par SetStep la valeur du controle
  • };
  • BOOL ProgressBar::Init(HWND hwndbar) //Initialise le controle
  • {
  • hBar=hwndbar;
  • if (hBar==NULL)
  • {
  • return FALSE;
  • }
  • return TRUE;
  • }
  • BOOL ProgressBar::SetRange(int nMinRange,int nMaxRange) //Définis la position Minimale et Maximale
  • {
  • if ((nMinRange<0) || (nMaxRange>65535))
  • {
  • return FALSE;
  • }
  • if(SendMessage(hBar,PBM_SETRANGE,0,MAKELPARAM(nMinRange,nMaxRange))==0)
  • {
  • return FALSE;
  • }
  • MinRan = nMinRange;
  • MaxRan = nMaxRange;
  • return TRUE;
  • }
  • int ProgressBar::SetStep(int nStep) //Définis le pas
  • {
  • int nOldStep;
  • nOldStep=SendMessage(hBar,PBM_SETSTEP,(WPARAM)nStep,0);
  • return nOldStep;
  • }
  • int ProgressBar::Increment(int nIncrement) //Incrémente de nIncrement la valeur du controle
  • {
  • int nOldPos;
  • nOldPos=SendMessage(hBar,PBM_DELTAPOS,(WPARAM)nIncrement,0);
  • return nOldPos;
  • }
  • int ProgressBar::IncrementStep(void) //Incrémente d'un pas définis par SetStep la valeur du controle
  • {
  • int nOldPos;
  • nOldPos=SendMessage(hBar,PBM_STEPIT,0,0);
  • return nOldPos;
  • }
  • int ProgressBar::SetPos(int nPos) //Définis la valeur du controle
  • {
  • int nOldPos;
  • nOldPos=SendMessage(hBar,PBM_SETPOS,(WPARAM)nPos,0);
  • return nOldPos;
  • }
  • void ProgressBar::Hide(BOOL bVisible) //Afiche ou Cache le controle
  • {
  • if (bVisible==TRUE)
  • {
  • ShowWindow(hBar,SW_SHOW);
  • }
  • else
  • {
  • ShowWindow(hBar,SW_HIDE);
  • }
  • }
  • BOOL ProgressBar::IsVisible(void) //Détermine si le controle est visible
  • {
  • return IsWindowVisible(hBar);
  • }
  • #endif
/*
Le Programme Principal !!!
*/
#include <windows.h>
#include <commctrl.h>
#include <stdlib.h>
#include "progressbar.h"
#include "resource.h"

ProgressBar Bar;
ProgressBar Bar1;

HWND hwndbar1;
HWND hwndbar2;



LRESULT CALLBACK DlP(HWND DLwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(DLwnd);
break;
case WM_INITDIALOG:
	{
	InitCommonControls();
	hwndbar1 = GetDlgItem(DLwnd,IDC_PDL);
	Bar.Init(hwndbar1);
	Bar.Hide(true);
	Bar.IsVisible();
	Bar.SetRange(0,100);
	Bar.SetStep(0);

	hwndbar2 = GetDlgItem(DLwnd,IDC_PDL2);
	Bar1.Init(hwndbar2);
	Bar1.Hide(true);
	Bar1.IsVisible();
	Bar1.SetRange(0,100);
	Bar1.SetStep(0);

	}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
switch(HIWORD(wParam))
{
case BN_CLICKED:
switch(LOWORD(wParam))
{
case ID_CANCEL:
	{
DestroyWindow(DLwnd);	
	}
break;
case ID_OK:
{
	int i = 0;
	bool once = true;
	char iprint[4];
	HDC hdc = GetDC(GetDlgItem(DLwnd,IDC_PDL));
	RECT progress;
	RECT SizeText;

	GetClientRect(GetDlgItem(DLwnd,IDC_PDL),&progress);
	do 
	{
	if (Bar.SetPos(i) == 100 && once)
	{
	MessageBox(DLwnd,"Barre n°1 arrivée à terme","Bravo !",0);
	once = false;
	}
	Bar.SetPos(i);
	Bar1.SetPos(i/2);

	itoa(i/2+1,iprint,10);
	if (i < 49)
	{
	DrawText(hdc, iprint, -1, &SizeText, DT_CALCRECT);
	SetBkColor(hdc,RGB(192,192,192));
	SetTextColor(hdc,RGB(255,0,0));
	}
	else
	{
	DrawText(hdc, iprint, -1, &SizeText, DT_CALCRECT);
	SetBkColor(hdc,RGB(0,0,128));
	SetTextColor(hdc,RGB(255,255,255));
	}
	TextOut(hdc,progress.right/2-(SizeText.right-SizeText.left)/2,progress.top+3,iprint,strlen(iprint)); 
	/* 
	pour centrer dans la barre : c'est plutôt précis car j'ai même été à mesurer la taille en pixel
	de iprint....
	*/
	Sleep(10);
	i++;
	}
	while ( i< Bar1.MaxRan*2);
	}
break;
case ID_REBOOT:
	{
	Bar.SetPos(0);
	Bar1.SetPos(0);
	}
	break;
}
}
break;
default:
return FALSE;
}
return FALSE;
}


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
HWND hdlg;
MSG Msg;

hdlg = CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) DlP);

if(hdlg == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

ShowWindow(hdlg, nCmdShow);
UpdateWindow(hdlg);

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}


/*La Class !*/

#ifndef __PROGRESSBAR_H
#define __PROGRESSBAR_H

#include <windows.h>
#include <commctrl.h>

class ProgressBar
{
private:
HWND hBar;

public:
int MaxRan;
int MinRan;

BOOL Init(HWND hwndbar); //Initialise le controle
BOOL SetRange(int nMinRange,int nMaxRange); //Définis la position Minimale et Maximale
void Hide(BOOL bVisible); //Afiche ou Cache le controle
BOOL IsVisible(void); //Détermine si le controle est visible
int SetStep(int nStep); //Définis le pas
int SetPos(int nPos); //Définis la valeur du controle
int Increment(int nIncrement);//Incrémente de nIncrement la valeur du controle
int IncrementStep(void);//Incrémente d'un pas définis par SetStep la valeur du controle
};

BOOL ProgressBar::Init(HWND hwndbar) //Initialise le controle
{
hBar=hwndbar;

if (hBar==NULL)
    {
	     return FALSE;
     }
return TRUE;
}

BOOL ProgressBar::SetRange(int nMinRange,int nMaxRange) //Définis la position Minimale et Maximale
{
if ((nMinRange<0) || (nMaxRange>65535))
    {
	   return FALSE;
     }

if(SendMessage(hBar,PBM_SETRANGE,0,MAKELPARAM(nMinRange,nMaxRange))==0)
    {
     return FALSE;
     }

MinRan = nMinRange;
MaxRan = nMaxRange;

return TRUE;
}

int ProgressBar::SetStep(int nStep) //Définis le pas
{
int nOldStep;
nOldStep=SendMessage(hBar,PBM_SETSTEP,(WPARAM)nStep,0);
return nOldStep;
}

int ProgressBar::Increment(int nIncrement) //Incrémente de nIncrement la valeur du controle
{
int nOldPos;
nOldPos=SendMessage(hBar,PBM_DELTAPOS,(WPARAM)nIncrement,0);
return nOldPos;
}

int ProgressBar::IncrementStep(void) //Incrémente d'un pas définis par SetStep la valeur du controle
{
int nOldPos;
nOldPos=SendMessage(hBar,PBM_STEPIT,0,0);
return nOldPos;
}

int ProgressBar::SetPos(int nPos) //Définis la valeur du controle
{
int nOldPos;
nOldPos=SendMessage(hBar,PBM_SETPOS,(WPARAM)nPos,0);
return nOldPos;
}

void ProgressBar::Hide(BOOL bVisible) //Afiche ou Cache le controle
{
if (bVisible==TRUE)
    {
        ShowWindow(hBar,SW_SHOW);
     }
else
    {
        ShowWindow(hBar,SW_HIDE);
     }
}

BOOL ProgressBar::IsVisible(void) //Détermine si le controle est visible
{
return IsWindowVisible(hBar);
}
#endif


 Conclusion

pas de bugs trouvés !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip PACKAGE MANAGER
Source avec Zip [API WIN32] CLASSE D'ACCÈS ET DE GESTION DU REGISTRE (RÉEL E...
Source avec Zip [DX 9.0] SCENES EN WINDOWED : SIMPLES ET MULTIPLES AVEC SWAP...
Source avec Zip Source avec une capture [DX 9.0] WATERBALL - JEU COMPLET EN DX9 (STYLE ARKANOÏD)
Source avec Zip [CBX] CALCULETTE DYNAMIQUE

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de Xs le 16/06/2002 21:04:26

j'attend vos comments et une note pour fois !

Commentaire de mmuller57 le 17/06/2002 13:21:08

Avec des ressources càd ? Sinon le code impec.

Commentaire de maya75 le 24/05/2003 15:54:58

cool je voulais justement voir comment ça marche.

Commentaire de Iwin le 24/06/2003 01:03:39

Génial, après une demi-heure de recherche sur le net pour réussir à faire marcher une progress bar je tombe la dessus, et y montre tout !!!

Commentaire de Mr.X le 30/10/2003 17:12:22

je trouve ton code interresant mais la source et un peux en vrac, tu n'a pas bien espacer ton, je trouve cela dommage car tous est serez et donc illisible.

Commentaire de alain_g400 le 25/02/2004 12:22:30

bonjour,
je suis intéressé par votre source sur la progressbar
je voudrais savoir à à quoi correpsond IDC_PDL et IDC_PDL1 dans :

    hwndbar1 = GetDlgItem(DLwnd,IDC_PDL);
    hwndbar2 = GetDlgItem(DLwnd,IDC_PDL1);

Merci pour votre aide

Commentaire de alain_g400 le 25/02/2004 12:22:53

bonjour,
je suis intéressé par votre source sur la progressbar
je voudrais savoir à à quoi correpsond IDC_PDL et IDC_PDL1 dans :

    hwndbar1 = GetDlgItem(DLwnd,IDC_PDL);
    hwndbar2 = GetDlgItem(DLwnd,IDC_PDL1);

Merci pour votre aide

alain

alain_gray2004@yahoo.fr

Commentaire de hakim0 le 24/06/2006 14:18:21

Salut tous le mond :D :
    hwndbar1 = GetDlgItem(DLwnd,IDC_PDL);
    hwndbar2 = GetDlgItem(DLwnd,IDC_PDL1);
pour retourner le hwnd de la bare1 et la bare2.
pour les manipuler sans hwnd on ne peu rien faire :D
********************
le code ca marche bien bon prog, je trouve le niveaux du code ne correspond pas avec le niveaux "EXPERT" .
Respekt

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales