Positionnement fenetre

glipper Messages postés 246 Date d'inscription dimanche 2 juin 2002 Statut Membre Dernière intervention 11 septembre 2016 - 24 nov. 2003 à 18:10
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 25 nov. 2003 à 10:30
Bonjour,

j'ai un problème pour positionner une fenetre à un endroit de l'ecran. En fait, ca marche sur 2000/XP sans probleme, mais j'ai essayé à mon lycée (sous 98), et la, les fenetres sont placées n'importe comment, et n'ont plus du tout les bonnes dimensions.
Pour les placer, j'utilise le code ci-dessous :

int ScrX = GetSystemMetrics( SM_CXSCREEN );
int ScrY = GetSystemMetrics( SM_CYSCREEN );

WINDOWPLACEMENT WinPos;
GetWindowPlacement(hWnd, &WinPos);
WinPos.rcNormalPosition.left = ScrX/4;
WinPos.rcNormalPosition.right = (ScrX/4)+150;
WinPos.rcNormalPosition.top = ScrY/5;
WinPos.rcNormalPosition.bottom = ScrY/5+450;
SetWindowPlacement(hWnd, &WinPos);

Pourquoi cette portion de code marcherait sous 2000 et XP, et pas sous 98 ? (attention, je generalise, mais je n'ai essayé que sur un pc avec 2000, un avec XP et un seul aussi avec 98).

Glipper

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 nov. 2003 à 18:25
[out] Pointer to the WINDOWPLACEMENT structure that receives the show state and position information. Before calling GetWindowPlacement, set the length member of the WINDOWPLACEMENT structure to sizeof(WINDOWPLACEMENT). GetWindowPlacement fails if lpwndpl-> length is not set correctly.
BruNews, ciao...
0
glipper Messages postés 246 Date d'inscription dimanche 2 juin 2002 Statut Membre Dernière intervention 11 septembre 2016 1
25 nov. 2003 à 10:20
J'ai rajouté :

WinPos.length = sizeof(WINDOWPLACEMENT);

Mais ça ne change rien. :'(
Pourtant... j'ai fait ce qu'il fallait il me semble !

int ScrX = GetSystemMetrics( SM_CXSCREEN );
int ScrY = GetSystemMetrics( SM_CYSCREEN );

WINDOWPLACEMENT WinPos;
WinPos.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hWnd, &WinPos);
WinPos.rcNormalPosition.left = ScrX/4;
WinPos.rcNormalPosition.right = (ScrX/4)+150;
WinPos.rcNormalPosition.top = ScrY/5;
WinPos.rcNormalPosition.bottom = ScrY/5+450;
SetWindowPlacement(hWnd, &WinPos);
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 nov. 2003 à 10:30
Tu as lu la section 'Remarks' du MSDN sur la structure WINDOWPLACEMENT ? Tu devrais remplir tous les membres.
Je ne sais pas le but mais si est juste pour positionner la fenetre, tu as SetWindowPos qui est nettement mieux.
BruNews, ciao...
0
Rejoignez-nous