Bonjour,
Je cherche comment déterminer la hauteur par défaut d'une fenêtre de barre d'état (i.e. une fenêtre crée avec CreateWindowEx ayant reçu comme 2ème argument STATUSBARCLASSNAME).
J'aimerrais pouvoir obtenir la hauteur de ladite barre avant même de la créer. Comment serais-ce possible?
J'ai essayé avec qqch du genre:
où _DivMul correspond à cette déclaration:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 NONCLIENTMETRICS ncm; SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, (ncm.cbSize = sizeof(NONCLIENTMETRICS)), &ncm, 0x0); UINT sfheight = _DivMul(abs(ncm.lfStatusFont.lfHeight), GetDeviceCaps(GetDC(0x0), LOGPIXELSY), 72); printf("%u\n", sfheight);
Je croyais que ceci me permettrait d'obtenir la hauteur de la police, et que je pourrais par la suite ajouter simplement la hauteur des bordures (que l'on peut obtenir avec GetSystemMetrics()). Mais... le printf du code ci-dessus affiche 8, ce qui est en fait, je crois, la taille de la police en points
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 int _DivMul(const int n, const int d, const int m) { const float _n = n; const float _d = d; const float _m = m; double r = _n * _m; r /= _d; return (r); }
Je me suis inspiré du code que l'on peut retrouver sur cette page. Mais ce n'est de toute façon pas ce que je cherchais. J'ai aussi vu des méthodes très faciles avec GetWindowRect(hWndStatus), mais, il faut avoir le hwnd de la barre d'état, ce que je ne peux faire sans créer la barre d'état avant...
Donc, je ne sais plus trop quoi faire... Il devrait pourtant y avoir un moyen... En effet, quand le "WndProc" d'une barre d'état reçoit WM_SIZE, le calcul s'effectue sûrement suivant les paramètres par défaut du système... Comment pourrais-je reproduire ce calcul?
Sur mon système, la fenêtre de la barre d'état a par défaut une hauteur de 20 pixels... Mais, si jamais je changeais certains paramètres de Windows, ce serait plus. Je ne peux donc pas simplement assumer que toutes les barres d'état ont par défaut une hauteur de 20 px.
Merci,
Cordialement,
Array
EDIT: No C++/MFC please!
Partager