Empécher redimentionement colonne List Control [Résolu]

Signaler
Messages postés
52
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
7 décembre 2011
-
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
-
Bonjour,

Je suis en train de développez une petite application dedans il y a une List Control, il y a 3 colonnes et j'aimerais quels ne puisse pas être redimensionné.

Cela fait maintenant quelque jour que je cherche a faire cela, et je n'est rien trouver appart en VB.

J'espère que quelqu'un aura une idée pour pouvoir faire cela, enfin si cela est possible.

Merci d'avance

Jérémy

3 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
Salut,
Une solution consiste à sous-classer l'en-tête de la list control pour empêcher la prise en compte des clics gauches et du changement de curseur:
WNDPROC OldHeaderProc;//déclaré en global
// Procédure de sous-classement:
LRESULT CALLBACK HeaderProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
return 0;
case WM_SETCURSOR:
return 0;
default:
break;
}
// Appeler la procédure originale:
return CallWindowProc(OldHeaderProc, hwnd, message, wParam, lParam);
}
Sous-classer l'en-tête à la fin de WM_INITDIALOG ou WM_CREATE:
HWND hHeader= (HWND)SendMessage(hwndlist,LVM_GETHEADER,0,0); OldHeaderProc=(WNDPROC)SetWindowLong(hHeader,GWL_WNDPROC,(LONG)HeaderProc);
Messages postés
52
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
7 décembre 2011

Merci beaucoup je ne savait pas qu'on pouver juste sous-classe l'en-tête de la liste.
cela marche parfaitement encore merci.

jérémy
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour,

j'ai utilisé ce code que j'avais trouvé lors de mes recherches:
BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;

if((pHDN->hdr.code HDN_BEGINTRACKW || pHDN->hdr.code HDN_BEGINTRACKA)
&& pHDN->iItem == 0) // Prevent only first (col# 0) from resizing
{
*pResult = TRUE; // disable tracking
return TRUE; // Processed message
}

return CListCtrl::OnNotify(wParam, lParam, pResult);
}


louis