MoveWindow : scintillements
Bonjour à tous,
J'ai développé une application où les controles se déplacent et se dimensionnent selon la taille de la fenêtre. (Je ne sais pas si c'est important mais je travaille avec VS6 sous winXP)
Pour effectuer ces opérations, j'utilise MoveWindow. Le problème, c'est que lorsque je redimensionne ma fenêtre manuellement (cad avec le bord de la fenetre), mes controles scintillent.
Voici mon code si ça peut aider
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| case WM_SIZE:
rt.right = LOWORD(lParam);
rt.bottom = HIWORD(lParam);
rt.right -= OldRect.right; // Obtenir la différence de position
rt.bottom -= OldRect.bottom;
lvInfos.setRelSize(rt.right, rt.bottom); // Modifier la hauteur et la largeur
cboProcess.setRelSize(rt.right, 0); // -------- la largeur
gbProcess.setRelSize(rt.right, 0); // -------- la largeur
btnRefresh.move(rt.right, 0); // Déplacement horizontal
/***** Sauver le nouveau rectangle client *****/
OldRect.right += rt.right;
OldRect.bottom += rt.bottom;
break;
case WM_SIZING:
/****** Empecher une diminution trop forte *****/
#define RECTLPARAM ((LPRECT)lParam)
if((RECTLPARAM->right - RECTLPARAM->left) < 300)
RECTLPARAM->right = RECTLPARAM->left + 300;
if((RECTLPARAM->bottom - RECTLPARAM->top) < 300)
RECTLPARAM->bottom = RECTLPARAM->top + 300;
break; |
J'ai fait un essai en mettant le code de WM_SIZING en commentaire et celà scintillait toujours donc logiquement celà vient de WM_SIZE, mais on ne sait jamais.
lvInfos est une listview, gbProcess est un groupbox, cboProcess est un combobox et btnRefresh est un bouton. Les méthodes qu'ils utilisent utilisent toutes MoveWindow en interne (et il n'y a quasi pas de code supplémentaire).
Si quelqu'un sait comment empecher ou diminuer le scintillement je suis preneur :)
Merci d'avance,
Crisanar