Intercepter les messages de notification envoyés par un spin (=up-down)

Signaler
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007
-
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007
-
re-bonjour,

est-ce que quelqu'un pourrait m'expliquer en détails les étapes utiles à intercepter et à gérer soi-même les messages de notifications envoyés par un spin, svp ?
car sur MSDN, c'est assez flou je trouve...

merci

3 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Tu dois sous classer ton composants.
C'est a dire lui attribuer sa propre fonction de callback qui lui permettra de gérer ses messages.
Fais une rechercher sur les mots clés "sous classer" et "subclassing".

De mémoire; il y a des exemples sur le site.

Shell
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

Pas besoin de sous classer pour un message de notification, puisqu'il est envoyé a la fenetre parente..
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

ok merci pour vos réponses mais j'ai trouvé par moi même, dsl pour le poste inutile. Je mets ma source au cas où ca rende service à quelqu'un :

BOOL CALLBACK DialogProc(HWND hDialogBox, UINT message, WPARAM wParam, LPARAM lParam)
{
//variable modifiée lorsqu'on appuie sur une des fléches du up-down
static short fonc;

switch (message)
{
case WM_INITDIALOG:
{
//Création du controle up-down
CreateUpDownControl( WS_CHILD|WS_VISIBLE|UDS_ALIGNRIGHT|UDS_NOTHOUSANDS|UDS_ARROWKEYS,
0, 0, 20, 30,
hDialogBox, IDC_SPIN,
hTInst, GetDlgItem(hDialogBox, IDC_EDITTEXT),
coordRep.nbDroite, 1, 1
);

fonc = 1;

return FALSE;
}
case WM_NOTIFY:

switch (LOWORD(wParam))
{
case IDC_SPINDELETEF:


case UDN_DELTAPOS:
{
NMUPDOWN * lpnmud = (LPNMUPDOWN) lParam;

//On récupére la postion du controle spinner (variable int)
fonc = lpnmud->iPos;


return TRUE;
}
}
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hDialogBox, 0);
return TRUE;
case IDOK:

//...

EndDialog(hDialogBox, 0);
return TRUE;
}
break;
}
return FALSE;
}