vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 4 déc. 2005 à 15:40
C'est quoi la "la gestion des gestion"?
J'ai pas compris le but de WM_GETDIR. Même quand tu recois le message, comment retrouves-tu la structure (si tu as plusieurs boutons dans ton application)?
Pour connaitre la direction, tu peux attacher une valeur à ton bouton:
SetWindowLong(hbtn, GWL_USERDATA, &drButton);
J'imagine que tu vois comment la récupérer
Si tu n'aimes pas la méthode, tu peux aussi utiliser un conteneur associatif:
map<HWND, int> qui te donnera la direction en fonction du bouton
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 4 déc. 2005 à 16:10
Tu connais pas SetWindowLong? Dommage, c'est très utile. Mais laissons la source de ymca de coté si tu veux bien (SetWindowLong set a faire plein de trucs différents).
Ta structure ne sert en fait a rien. Avec SetWindowLong, tu associe directement une valeur à un bouton.
Par exemple, tu pourrais utiliser ces deux fonction, fournies gratuitement par moi:
void SetButtonDirection(HWND hBtn, DIRECTION d)
{
SetWindowLong(hBtn, GWL_USERDATA, d);
}
DIRECTION GetButtonDirection(HWND hBtn)
{
return GetWindowLong(hBtn, GWL_USERDATA);
}
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 4 déc. 2005 à 15:47
La gestion de gestion c'était la gestion des messages mais écrit en trop vite lol :)
Donc je reprend :)
J'ai une structure de bouton
typedef struct
{
HWND hButton;
HINSTANCE hInst;
DIRECTION dirButton;
}drButton, *LP_drButton;
avec enum DIRECTION
{
LEFT,
RIGHT,
};
Et donc dans mon application je créer un bouton vers la gauche et un bouton vers la droite
Mais seulement voilà ! aucun moyen de récupèrer la direction dans WM_PAINT
Ainsi, j'ai fait le message WM_GETDIR qui fait ça :
case WM_GETDIR:
MyButt = NewButton(hWnd, (DIRECTION)wParam);
SendMessage(hWnd, WM_PAINT, wParam, lParam);
return 0;
Comme ça j'ai l'objet associé ! mais seulement il ne passe qu'une fois par la donc ça sert à rien lol.
Si tu pouvais expliquer un peu plus pour le SetWindowLong parce que
j'ai vu dans la source de ymca sur les splitter la même méthode, donc
ça m'intéresserai de la comprendre :)