Messages au Listbox [Win32]

Résolu
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 - 19 juin 2006 à 17:12
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 - 19 juin 2006 à 19:11
Salut,

Je voudrais intercepter le double-click dans un listbox. Je sais qu'il y a des dizaines de posts pour ca mais je les ai tous lus et ca ne marche pas ...

J'ai essayer de traiter le message WM_LBUTTONDBLCLK mais ca ne marche que dans la fenetre et pas dans le list-box.

J'ai essayer le message LBN_DBLCLK ... Ca ne marhce pas du tout !!

J'ai essayer de sous-classer le listbox et traiter les messages WM_LBUTTONDBLCLK ou LBN_DBLCLK dans ma procedure de listbox ... Rien du tout !!!

Je ne sais plus quoi faire !! Si quelqu'un pouvais m'aider !!!

Merci à l'avance

11 réponses

gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
19 juin 2006 à 18:27
Ahhh... J'ai trouvé !! ;)

Je ne peut pas faire le GetDlgItem dans le case WM_INITDIALOG. Je le fais dans la fonction WinMain juste avant le ShowWindow.

Je ne sais pas pourquoi exactement mais chaque fois que j'essaie de faire une operation sur un item du dialog dans le case WM_INITDIALOG, comme par exemple envoyer un SetDlgItemText ou SendMessage cela ne marche pas. Il y a surement une explication logique ;a tout cela et si quelqu'un le sais j'aimerais bien savoir :P

Pour l'instant je contourne le problème et je me dis que c'est p-e parce que les controles ne sont pas encore initialisés lorsque le message WM_INITDIALOG est recu et c'est pour cela que ca ne marche pas ...

En tout cas, le problème est résolu pour l'instant

Merci beaucoup vecchio56 pour ton aide et à la prochaine
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
19 juin 2006 à 19:04
Salut,

L'explication logique, c'est que le message WM_INITDIALOG est recu
pendant l'appel a DialogBox()/CreateDialog(), et donc a ce moment la
hMainWnd n'a pas encore été affecté. Il faut que tu fasses tes
GetDlgItem()/SendMessage() en utilisant hwnd (le 1er param de ta
dialogproc).
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 juin 2006 à 17:15
Si tu sous-classes, ca marche a tous les coups normalement
Essaie de te baser sur ce code
_____________________________________
Un éditeur de ressources gratuit pour Windows
0
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
19 juin 2006 à 17:22
d'accord jai regarder mais mon code resseble pas mal a sa et ca ne marche pas !!

Voila ce que j'ai :

WNDPROC OldListBoxProc;

BOOL CALLBACK ListBoxProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    if ( message == WM_LBUTTONDBLCLK )
    {
        // Code ...
        return 0;
    }
    return CallWindowProc(OldListBoxProc, hwnd, message, wParam, lParam);
}

BOOL CALLBACK MainDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
/***************  Initialisation du dialogue principal  ***************/
    case WM_INITDIALOG:
        OldListBoxProc = (WNDPROC)SetWindowLong(GetDlgItem(hMainWnd,IDC_PLAYLIST),GWL_WNDPROC, (LPARAM)ListBoxProc);
        break;
     }
       .....
}

Selon ce que jai pu voir dans ton code, le miens devrait marcher !! Mais non :P

Tu saurait me dire ce qui ne va pas ?
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 juin 2006 à 17:32
Dans mon code, je remplace WM_RBUTTONUP par WM_LBUTTONDBLCLK et ca va très bien
Si ca se trouve ton code est exécuté sans que tu le voies

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
19 juin 2006 à 17:39
J'ai tester en mettant un Beep(2000,20);    ui me sert souvent pour debugguer :P et puis non il ne passe jamais dans ce bout de code ...
0
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
19 juin 2006 à 17:52
Le problème ne pourrait-il pas venir de GetDlgItem(hMainWnd,IDC_PLAYLIST); ???

Je ne sais pas trop la , je cherche seulement des possibilités :P
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 juin 2006 à 17:57
Ca c'est plutot a toi de me le dire. Regarde le retour de tes appels d'API, pour voir a quel endroit ca cloche

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
19 juin 2006 à 18:32
La j'ai un autre probleme !!!

Le list-box ne traite plus les messages que je ne traite pas moi meme !

J'ai pourtant mis return CallWindowProc(OldListBoxProc, hwnd, message, wParam, lParam); à la fin de ma procédure de listbox ..
0
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
19 juin 2006 à 18:57
Ok on oublie sa javais changé une propriété de mon listbox et c'est pour sa que ca marchait pas
0
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
19 juin 2006 à 19:11
Ok ! Merci
________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !
0
Rejoignez-nous