2010-09-04 23 views
1

J'utilise l'API Windows (en C++) pour créer une application Windows. Maintenant, j'ai une barre de progression que je veux montrer comme un mètre. Un compteur est bleu et n'a aucune animation. Je n'arrive pas à comprendre comment mettre en œuvre cela, et si je le dois, je vais juste me contenter de la barre de progression verte habituelle.Impossible d'implémenter le compteur dans Windows API

Aidez-nous s'il vous plaît.

EDIT: Au moins, est-il possible de désactiver l'animation (mettre en surbrillance les diapositives à travers la section remplie de la barre)?

EDIT2:

Voici la solution C++ si quelqu'un d'autre est d'avoir ce problème:

PAINTSTRUCT ps; 
HDC hDC = BeginPaint(hwnd,&ps); 
RECT r; 
HTHEME theme = OpenThemeData(hwnd,L"PROGRESS"); 
SetRect(&r,10,10,100,25); 
DrawThemeBackground(theme,hDC,11,2,&r,NULL); 
SetRect(&r,10,10,50,25); 
DrawThemeBackground(theme,hDC,5,4,&r,NULL); 
CloseThemeData(theme); 
EndPaint(hwnd,&ps); 
+2

Vous perdez le handle, utilisez CloseThemeData(). –

Répondre

1

Vous pouvez dessiner ce style de barre de progression avec DrawThemeBackground(). Vous trouverez le nom du thème, les numéros de partie et d'état dans ma réponse au this thread.

+0

Que dois-je transmettre à hTheme? –

+0

La valeur de retour de OpenThemeData(). Le nom de la classe est "PROGRESS". –

+0

génial! ça fonctionne parfaitement. –

0

Le contrôle intégré ne peut pas faire cela ... cependant, il est pas comme ProgressBar est un contrôle compliqué . Si vous ne voulez rien d'autre qu'un rectangle bleu, utilisez DrawRect et dessinez un rectangle bleu.

+0

il parle de mètres dans le guide d'expdience msdn utilisateur, mais ne dit rien sur sa mise en œuvre. –

+0

@Alexander: Je ne comprends pas. Si tout ce que vous voulez est un rectangle, pourquoi avez-vous besoin de le rendre plus compliqué. Est-ce que j'ai râté quelque chose? –

+0

il devrait ressembler à une barre de progression de Windows, mais bleu (et non animé). Je vais bien utiliser le vert, mais ce serait bien si quelqu'un savait comment l'obtenir comme un compteur (par exemple, l'espace disque disponible sur mon ordinateur) –