Des petites flèches...

Résolu
KuidZ Messages postés 13 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004 - 24 août 2004 à 09:59
 gofio79 - 21 juil. 2009 à 16:44
Bonjour
Dans certains programmes, à la droite d'editbox attendant des valeurs numriques, on a 2 petites flèches l'une au dessus de l'autre qui permettent de faire augmenter ou de réduire la valeur de la editbox. Comment fait on ça ?

Merci

[b]Skyzzz...[b]

21 réponses

jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 11:09
Salut,

Non, je pense qu'il parle des spinner control ou up-down control.

Pour les creer il faut utiliser la fonction CreateWindow avec comme nom de classe UPDOWN_CLASS (de mémoire, il faut vérifier).
Ensuite il faut lui associer le textbox auquel il sera lié en lui envoyant le message UDM_SETBUDDY avec en parametre le handle du textbox.

A+,
JP.
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
24 août 2004 à 10:59
Je crois ke tu te trompes de controles, tu veux parler de combobox nan ?
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
24 août 2004 à 11:06
Ah nan je vois ce dont tu veux parler...Je crois ken fait c simplement un editbox comme tu la dit, avec une scrollbar vertical. Mais jsui pas sur..
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2004 à 11:18
jpthomasset > TOUT JUSTE.

ciao...
BruNews, Admin CS, MVP Visual C++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
24 août 2004 à 11:20
whaa, jconnaissais pas ca..jte remercie jpthomasset :)
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 11:29
Ah ! Autre chose, il me semble que cette classe fait partie des common controls de windows, mais qu'elle n'est pas enregistré automatiquement.
Si c'est le cas (a verifier dans MSDN) il faut enregistrer la classe avec : InitCommonControlsEx(ICC_UPDOWN_CLASS)

Par contre, si tu utilise les MFC, je suis à peu près sur qu'il existe une classe toute prete pour faire tout ça.

A+,
JP.
0
KuidZ Messages postés 13 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
24 août 2004 à 11:44
Merci, mais je n'ai pas très bon niveau et je galère, j'ai essayé et...

18 C:\Documents and Settings\Propriétaire\Bureau\je patoge en C++\Nouveau dossier\main.cpp `InitCommonControlsEx' undeclared (first use this function)

j'ai mis en include <commctrl.h> et en en paramètre -lcomctl32 mais je crois que mon pifomètre est faussé... :sad)

J'utilise Dev-Cpp

Skyzzz...
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
24 août 2004 à 11:53
lol, sympa le nom du repertoire...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2004 à 12:02
Linker avec comctl32.lib

ciao...
BruNews, Admin CS, MVP Visual C++
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 12:06
C'est bien ca. Mais je viens de jeter un oeil dans commctrl.h et il semble que InitCommonControlsEx soit supporté a partir de IE 3. La tu a deux solution :
Soit tu ajoute la ligne suivante avant le #include <commctrl.h> :
#define _WIN32_IE 0x0500 // Version d'ie

Soit tu utilise la fonction InitCommonControls() qui ne prend pas de parametres et enregistre toutes les classes des common controls.

A+,
JP.
0
KuidZ Messages postés 13 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
24 août 2004 à 12:26
Je serai pas un bon débutant si j'y arrivai tout de suite... ça marche pas :blush) je suppose que ça vient de là :

SendMessage(HWND_fleches, UDM_SETBUDDY, 0, (LPARAM)HWND_Edit);

j'ai aussi essayé comme ça :

SendMessage(HWND_fleches, UDM_SETBUDDY, 0, (LPARAM)(HWND)HWND_Edit);

mais rien... pas de flèches...

Skyzzz...
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 12:43
Salut,

Deux choses ici : d'abord le buddy control doit etre spécifié dans le WPARAM, ca donne :
SendMessage(HWND_fleches, UDM_SETBUDDY, (WPARAM) HWND_Edit, 0);

Ensuite, je ne pense pas que le problème vienne de la, mais plutot du CreateWindow. Est-ce que tu passe bien comme style qq chose du genre : WS_CHILD | WS_VISIBLE ? Tu doit aussi spécifier une position et une taille correcte.

A+,
JP.
0
KuidZ Messages postés 13 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
24 août 2004 à 13:41
Déjà, j'utilise CreateWindowEx (je n'ai jamais utilisé CreateWindow), ça pose problème ?
J'essaye avec différentes valeurs de positionnement mais rien, j'ai aussi essayé en mettant que HWND_fleches était child de ma fenètre ou de HWND_Edit.

    HWND HWND_fleches = CreateWindowEx(0, 
           "UPDOWN_CLASS",  "", 
           WS_CHILD|WS_VISIBLE,
           0, 0,
           20, 30,
           HWND_Edit, (HMENU)101, hThisInstance, NULL);


Skyzzz...
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 14:02
C'est la qu'est ton probleme, UPDOWN_CLASS est une definition dans le préprocesseur. Plus simplement ce n'est pas la chaine "UPDOWN_CLASS" qu'il faut utiliser mais la variable (ce n'est pas vraiment un variable, mais bon...) UPDOWN_CLASS qui contient "msctls_updown32".
Ton code devient alors :

HWND HWND_fleches = CreateWindowEx(0, UPDOWN_CLASS,...

et pas

HWND HWND_fleches = CreateWindowEx(0, "UPDOWN_CLASS",...

A+,
JP.
0
KuidZ Messages postés 13 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
24 août 2004 à 14:08
ah oui, ça marche, merci mais... encore un question, quand je clic sur les flèches, rien ne se passe, comment récupérer leur message ?

Skyzzz...
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 14:09
D'ailleurs si tu vérifie le handle renvoyé par CreateWindowEx, ton premier code doit renvoyer NULL.

C'est une bonne chose de vérifier si les fonctions ne renvoient pas de codes d'erreur :

HWND HWND_fleches;
HWND_fleches = CreateWindowEx(...);

if ( HWND_fleches == NULL ) {
     // Mauvais handle
}
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 14:15
Si tu utilise le style UDS_SETBUDDYINT, le controle updown mettra à jour tout seul le textbox.
Pour spécifier les bornes, il faut utiliser le message UDM_SETRANGE.

A+,
JP.

PS: MSDN est ton ami ;-)
0
KuidZ Messages postés 13 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
24 août 2004 à 14:27
ah oui mais... encore une question :-p ... quand je clic sur la flèche bas il augmente et quand je clic sur la flèche haut, il réduit... (et la MSDN ne dit rien il me semble) Comment inverser ?

Skyzzz...
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
24 août 2004 à 14:35
Ca vient sans doute des bornes : tu as du inverser les bornes max et min.
Voila ce que dit le sdk :

UDM_SETRANGE 
    wParam = 0; 
    lParam = (LPARAM) MAKELONG((short) nUpper, (short) nLower); 

Parameters
nUpper and nLower 
Maximum position and minimum position for the up-down control. Neither position can be greater than the UD_MAXVAL value or less than the UD_MINVAL value. In addition, the difference between the two positions cannot exceed UD_MAXVAL. 


A+,
JP.
0
KuidZ Messages postés 13 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 13 septembre 2004
24 août 2004 à 14:41
Ba voila, tout marche comme il faut, merci beacoup

@++

Skyzzz...
0
Rejoignez-nous