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 aiderJ'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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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
Partager