OVH Cloud OVH Cloud

Savoir quand l'utilisateur redimensionne un composant

4 réponses
Avatar
Olivier Lando
Bonjour,

J'ai créé un composant ListView dans une fenêtre par
l'intermédiaire d'un "CreateWindowEx( ... WC_LISTVIEW ...
WS_CHILD | WS_BORDER | WS_SIZEBOX | WS_VISIBLE ... )" et
j'aimerais être averti lorsque l'utilisateur le redimensionne.
De la même manière que l'on est averti lorsqu'il redimensionne la
fenêtre principale grâce au WM_SIZE, mais pour le composant.
Savez-vous comment il est possible de faire cela ?

En vous remerciant par avance,

Olivier

4 réponses

Avatar
Christian ASTOR
Olivier Lando a écrit:


J'ai créé un composant ListView dans une fenêtre par l'intermédiaire
d'un "CreateWindowEx( ... WC_LISTVIEW ... WS_CHILD | WS_BORDER |
WS_SIZEBOX | WS_VISIBLE ... )" et j'aimerais être averti lorsque
l'utilisateur le redimensionne.
De la même manière que l'on est averti lorsqu'il redimensionne la
fenêtre principale grâce au WM_SIZE, mais pour le composant.
Savez-vous comment il est possible de faire cela ?



Normalement, on ne met pas WS_SIZEBOX pour une ListView.
Mais si tu veux vraiment, tu subclasses et traites aussi WM_SIZE.
Avatar
Olivier Lando
Merci pour votre réponse


Normalement, on ne met pas WS_SIZEBOX pour une ListView.



Quelle méthode me conseilleriez vous alors, pour que
l'utilisateur puisse redimensionner ce composant ?

Pour info, ma fenêtre principale est divisée en deux partie, avec
d'un côté une ListView et de l'autre un TreeView.
Je voudrais que l'utilisateur puisse déplacer la séparation entre
les deux comme bon lui semble.
J'avais pensé à redimensionner le second composant comme il se
doit quand le premier est resimensionné, mais il existe peut être
d'autres façons de faire cela.


Mais si tu veux vraiment, tu subclasses et traites aussi WM_SIZE.



Je ne sias pas ce que signifie "subclasser"
Avatar
Christian ASTOR
Olivier Lando a écrit:


Pour info, ma fenêtre principale est divisée en deux partie, avec d'un
côté une ListView et de l'autre un TreeView.
Je voudrais que l'utilisateur puisse déplacer la séparation entre les
deux comme bon lui semble.



C'est donc un Explorer-like.
Voir donc code de l'ex le plus connu qui est enumdesk.cpp ds la PSDK
(Splitter & resize ListView + TreeView sur WM_MOUSEMOVE après un
SetCapture() sur WM_LBUTTONDOW)

Je ne sias pas ce que signifie "subclasser"



LRESULT OldListViewProc;
LRESULT CALLBACK ListViewProc( HWND, UINT, WPARAM, LPARAM );

OldListViewProc = SetWindowLong(hListView, GWL_WNDPROC, (LONG) (WNDPROC)
ListViewProc);

LRESULT CALLBACK ListViewProc(HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
switch (uMsg)
{
case WM_SIZE:
{
//...
}
break;
//case ...
} return(CallWindowProc((WNDPROC)OldListViewProc , hWnd, uMsg, wParam,
lParam ));
}

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_subclas3.asp
Avatar
Olivier Lando
Christian ASTOR a ecrit le 11/07/2004 0:03 :
Voir donc code de l'ex le plus connu qui est enumdesk.cpp ds la PSDK
(Splitter & resize ListView + TreeView sur WM_MOUSEMOVE après un
SetCapture() sur WM_LBUTTONDOW)



Je n'ai malheureusement pas le PSDK, et ma connexion ne me permet
pas de le télécharger.


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_subclas3.asp



Merci beaucoup.