Progress bar color

Soyez le premier à donner votre avis sur cette source.

Vue 7 447 fois - Téléchargée 658 fois

Description

hello!

ben c'est programme qui utilise une progress bar avec un dégradé de couleur!
ne m'en demandez pas l'utilitée!
c'est egalement un exemple de création de thread

Source / Exemple :


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

//	variables globale
HWND hDlg;
HINSTANCE hinst;
HINSTANCE hinst2;
HANDLE SecondThread;
DWORD ThreadID;
HWND hProgress;
int val_choix_fix;
int vitesse;
HICON hIcon;

//	prototype des fonctions
BOOL CALLBACK AppProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK AbtProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);
DWORD WINAPI ThreadProc(LPVOID lpParameter);
void about();
void generer();

//	fonction gérant les message concernant la boite de dialogue principale
BOOL CALLBACK AppProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch(msg) 
  {
     case WM_INITDIALOG:
		 {
		 hDlg=hdlg;
		 hIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON1));     //   charge l'icone.....
		 SetClassLong(hdlg, GCL_HICON, (long)hIcon);			 //   ... et l'affiche
		 hProgress = GetDlgItem(hDlg, IDC_PROGRESS);
		 vitesse = 50;
		 }
     case WM_COMMAND:
      switch(wParam) 
	  {
	  case IDC_LANCER:
		  generer();
		  break;
	  case IDC_ABOUT:
		  about();
		  break;
	  case IDC_STOP:
		  TerminateThread(SecondThread,NULL);
		  break;
	  case IDCANCEL:
		  EndDialog(hDlg,0);
              }
	  default:
		  break;
  }
  return 0;
}

//	fonction gérant les messages concernant la fenetre a propos de...	
BOOL CALLBACK AbtProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch(msg) 
  {
  case WM_INITDIALOG:
	  break;
  case WM_COMMAND:
      switch(wParam) 
	  {
	     case IDCANCEL: 
			EndDialog(hdlg,0);
                }
	  default:
		  break;
  }
  return 0;
}

//	fonction principale, c'est la premiere executée
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
	hinst = hInstance;
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), hDlg, AppProc);
    return 0;
}

//	voici les fonctions!
void about()
{
	DialogBox(hinst2, MAKEINTRESOURCE(IDD_DIALOG_2), hDlg, AbtProc);
}

void generer()
{
	TerminateThread(SecondThread,NULL);
	SecondThread = CreateThread(NULL,NULL,ThreadProc,NULL,NULL,&ThreadID);
}

DWORD WINAPI ThreadProc(LPVOID lpParameter)     //   fonction executée par le thread
{
	int R;
	int G;
	val_choix_fix = 700;
	SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM (0, val_choix_fix));
	for(int a = 0;a<=val_choix_fix;a++)
	{
		R=255;
		G=0;
		if(a<(val_choix_fix/2))
	{
		R = 255;
		G = (255*a)/(val_choix_fix/2);
	}
	if(a>=(val_choix_fix/2))
	{
		G = 255;
		R = 2*(255-((255*a)/(val_choix_fix)));
		R--;
		if(R<0)
			R=0;
		
	}
		SetDlgItemInt(hDlg,IDC_EDIT_R,R,FALSE);
		SetDlgItemInt(hDlg,IDC_EDIT_G,G,FALSE);
		SendMessage(hProgress, PBM_SETBARCOLOR , 0 , RGB(R,G,0));
		SendMessage(hProgress, PBM_SETPOS, (WPARAM) a, 0);
		SetDlgItemInt(hDlg,IDC_VALEUR,a,FALSE);
		Sleep(vitesse);
	}
	return 0;
}

Conclusion :


je vais ajouter un slider pour modifier la vitesee, mais je ne sais pas encore l'utiliser!

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
123
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
12 août 2008
1
salut,
ca marche pas sur visual c++ 6,
il n ya pas des erreurs de syntax..
je crois qu'on doit initializer les controls avec InitCommonControls();
mais aussi ca marche pas.??
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

un sleep dans une API WINDOWS ? heu Oo Ta pas quelque bug ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.