Emmetre un NM_CUSTOMDRAW a un listView

pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009 - 25 févr. 2009 à 20:21
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 26 févr. 2009 à 22:02
bonjour a tous et merci pour votre temps,
Jaimerai savoir comment on fait pour triggerer un NM_CUSTOMDRAW dans un listView.
En fait, comment on fait pour que le listView envois par lui mm se message.
Jespere avoir ete clair, sinon, laisse moi le savoir, il me fera plaisir de me clarifier.
Merci bcp!


Pepsidrinker

5 réponses

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
25 févr. 2009 à 23:26
Salut,
Si j'ai bien compris la msdn, cette notification est envoyée automatiquement à la fenêtre parent du contrôle. Il suffirait donc de l'intercepter via l'événement WM_NOTIFY.
Je ferais un truc du genre (en imaginant que la fenêtre n'est pas une "dialogbox") :

LRESULT CALLBACK MainWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    switch (uMsg) {
        case WM_NOTIFY:{
            LPNMHDR pnmhdr= (LPNMHDR)lParam;            if ((pnmhdr->code NM_CUSTOMDRAW) && (pnmhdr->hwndFrom hwnd_ListView)) {
                NMLVCUSTOMDRAW <gras>lp =(</gras>NMLVCUSTOMDRAW)lParam;
                //Ton code ici
            }
            break;
        }
        default: return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
}

Je ne suis absolument pas sûr (surtout concernant la ligne en gras), mais essaye toujours.

Cordialement, uaip.
0
pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009
26 févr. 2009 à 15:04
Salut et merci pour ta reponse!
Malheureusement, je cherche un moyen de generer ce message, donc, un moyen que ce message se fasse emettre dans MainWndProc.

Mon probleme est que mon background image dans mon listView ne se fait voir quèau 2ieme message NM_CUSTOMDRAW (pour je ne sais quel raison), donc, je doit clicker sur mon lsitView pour que le background apparaisse.
Voila pourquoi jaimerai avoir un moyen de generer le MN_CUSTOMDRAW, car au moin, mon background image apparaiterai aussitot, sana que jai besion de clicker dessus.

Pepsidrinker
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
26 févr. 2009 à 16:21
RedrawWindow() devrait marcher.
0
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
26 févr. 2009 à 18:36
Ah d'accord, je n'avais pas bien compris
A l'inverse de RedrawWindow(); (qui est faite pour rafraichir une zone rectangulaire d'un handle), tu peux aussi essayer UpdateWindow(); (qui raffraichit toute la surface du handle).

Cordialement, uaip.
0

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

Posez votre question
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
26 févr. 2009 à 22:02
Par contre, avec UpdateWindow(), faut utiliser InvalidateRect() avant sinon il ne repeindra rien (la région marquée update sera vide); d'où l'intérêt d'utiliser RedrawWindow() qui possède un tas de flags pour faire un peu tout et n'importe quoi.
0
Rejoignez-nous