Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

BUG: Suite à [MFC] J'ai un CTreeView fainéant, solution bizarre.

4 réponses
Avatar
Patrick Brunet
Bonsoir.

Dans le post précédent, j'expliquais que je rencontrais un comportement
incompréhensible d'un CTreeView pourtant utilisé conformément à la doc et à
tous les tutoriaux que j'ai pu trouver :

- le SelectDropTarget() n'a aucun effet,
- bien que le Tree soit largement bien rempli, la scrollbar verticale
n'apparaît pas et bien sûr même avec le clavier la partie de l'arbre qui
déborde par le bas est inaccessible.

J'ai finalement trouvé comment contrer ce problème :

- l'arbre doit être construit sans déployer le noeud racine,
- le noeud racine doit alors être déployé par une action clavier [flèche
droite] (par une expansion logicielle ou en cliquant sur le bouton [+], il
se déploie mais le problème persiste).

Ainsi déployé par action clavier, le CTreeView devient fonctionnel : le
SelectDropTarget() fonctionne et la scrollbar aussi.

Donc après remplissage, je lui fais désormais un SendMessage( ...,
WM_KEYDOWN, VK_RIGHT, NULL);

Beuâââârk!, pas vrai ?

Pour info, il ne contient que 500 items environ, pour une profondeur max de
15 items environ.

Auriez-vous une explication à ce phénomène ? Le SendMessage c'est pas
vraiment propre, même si ça marche. Je travaille avec VC++ 6.0 Pro, sous
Win98se.

Merci,

Cordialement,

Patrick BRUNET

4 réponses

Avatar
patrox
Essaye InvalidateRect( hwndtreeView, NULL , true ) ;

pat;

"Patrick Brunet" <Patrick.Brunet @ cned.fr> a écrit dans le message de
news:3f4625a6$0$26434$
Bonsoir.

Dans le post précédent, j'expliquais que je rencontrais un comportement
incompréhensible d'un CTreeView pourtant utilisé conformément à la doc et


à
tous les tutoriaux que j'ai pu trouver :

- le SelectDropTarget() n'a aucun effet,
- bien que le Tree soit largement bien rempli, la scrollbar verticale
n'apparaît pas et bien sûr même avec le clavier la partie de l'arbre qui
déborde par le bas est inaccessible.

J'ai finalement trouvé comment contrer ce problème :

- l'arbre doit être construit sans déployer le noeud racine,
- le noeud racine doit alors être déployé par une action clavier [flèche
droite] (par une expansion logicielle ou en cliquant sur le bouton [+], il
se déploie mais le problème persiste).

Ainsi déployé par action clavier, le CTreeView devient fonctionnel : le
SelectDropTarget() fonctionne et la scrollbar aussi.

Donc après remplissage, je lui fais désormais un SendMessage( ...,
WM_KEYDOWN, VK_RIGHT, NULL);

Beuâââârk!, pas vrai ?

Pour info, il ne contient que 500 items environ, pour une profondeur max


de
15 items environ.

Auriez-vous une explication à ce phénomène ? Le SendMessage c'est pas
vraiment propre, même si ça marche. Je travaille avec VC++ 6.0 Pro, sous
Win98se.

Merci,

Cordialement,

Patrick BRUNET




Avatar
patrox
J'oubliai, suivi d'un UpdateWindow( hwndTreeView );

pat
Avatar
Patrick BRUNET
Bonsoir.

Tu te doutes bien que j'ai essayé de forcer le retraçage par tous les
moyens.
Ca se retrace, mais en l'état, sans résolution du problème.

C'est comme si le TreeCtrl ne faisait pas ses redimensionnements et autres
calculs internes (scrollbars, etc.) tant qu'il n'a pas été déployé une fois
au moins de la manière décrite !

Merci, cordialement,

PB
Avatar
patrox
Je vois, j'ai le meme probleme avec les toolbars

je le resoud comme ca :
SendMessage( hwndToolBar , WM_SIZE ,0,0 ) ;

je ne sais pas pourquoi ca marche, mais ca marche :)
pat.