2 votes

Le contrôle List-View ignore les styles étendus

Je crée un contrôle de vue de liste avec l'option CreateWindowEx() fonction. Les styles étendus que je spécifie lors de la création ne s'appliquent pas au contrôle de la vue en liste.

Voici mon code :

INITCOMMONCONTROLSEX iccx;
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccx.dwICC  = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&iccx);

hWnd = CreateWindowExW( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES,    // Extended Styles
                        WC_LISTVIEWW,                               // Class Name
                        L"",                                        // Title
                        LVS_REPORT | WS_VISIBLE | WS_CHILD,         // Styles
                         10,    // x
                        320,    // y
                        480,    // w
                        200,    // h
                        hWndParent,
                        NULL,
                        hInstance,
                        NULL);

Après avoir ajouté du contenu, l'apparence de la vue en liste est celle de l'image ci-dessous.

appearance of my list-view

Comme vous le voyez, je ne peux pas sélectionner les lignes complètes, et les lignes de la grille ne sont pas affichées.

Qu'est-ce que je rate ? Comment faire pour que les styles étendus aient un effet ?

8voto

hkBattousai Points 1930

Pour les contrôles de type liste, les styles étendus sont explicitement définis en envoyant la commande LVM_SETEXTENDEDLISTVIEWSTYLE dans la fenêtre de contrôle. Cela est indiqué dans la documentation :

Styles de vue de liste étendus

Utilisez le message LVM_SETEXTENDEDLISTVIEWSTYLE ou l'une des macros ListView_SetExtendedListViewStyle ou ListView_SetExtendedListViewStyleEx pour utiliser ces styles de contrôle de vue de liste étendus.

Par exemple :

SendMessageW(   hWnd,
                LVM_SETEXTENDEDLISTVIEWSTYLE,
                LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES,
                LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

Les styles étendus ne s'appliquent qu'après l'envoi de ce message.

successfully creat

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X