Empécher redimentionement colonne List Control

Résolu
jerem3000 Messages postés 52 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 7 décembre 2011 - 14 févr. 2010 à 16:40
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 - 15 févr. 2010 à 09:50
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

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
14 févr. 2010 à 18:05
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);
3
jerem3000 Messages postés 52 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 7 décembre 2011
14 févr. 2010 à 18:46
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
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
15 févr. 2010 à 09:50
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
0