jerem3000
Messages postés52Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention 7 décembre 2011
-
14 févr. 2010 à 16:40
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 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.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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);
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 février 20218 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
}