|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
[VC++][API]EXEMPLE DE PROGRESSBAR
Information sur la source
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
Fichier Zip
Pour les "Membres Club", vous pouvez 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
Sources de la même categorie
Commentaires et avis
|
|