"Falsche" Größe von Fensterelementen

17/09/2007 - 18:49 von Daniel Kruge | Report spam
Hallo NG!

Gerade musste ich feststellen, dass einige Fensterinhalte meines
Programms von der vorgesehenen größe abweichen.

hier ein Ausschnitt aus meinem Programm, der Code stammt aus dem case
der WM_CREATE-Message:

elem1 = CreateWindowEx(
WS_EX_CLIENTEDGE,
RICHEDIT_CLASS,
0,
WS_CHILD | WS_VISIBLE | ES_AUTOVSCROLL | ES_AUTOHSCROLL |
ES_LEFT | ES_MULTILINE | ES_WANTRETURN | ES_READONLY,
1, 1,
((LPCREATESTRUCT)lp)->cx - 1,
((LPCREATESTRUCT)lp)->cy - 1,
wnd,
0,
((LPCREATESTRUCT)lp)->hInstance,
0
);

Worauf ich genau hinaus will: Das Fensterelement wird auf Pixel 1.1
des Parent-Windows erzeugt und hat jeweils die Höhe und Breite des
Parent-Windows -1. Trotzdem merkt man beim Maximieren des Fensters,
dass dieses Fensterelement viel größer ist als das Parent-Fenster.

Wo ist da mein Fehler?

Danke schonmal an alle geduldigen Helfer :)
lg, DK
 

Lesen sie die antworten

#1 Stefan Reuther
17/09/2007 - 22:41 | Warnen spam
Daniel Kruge wrote:
elem1 = CreateWindowEx(


[...]
1, 1,
((LPCREATESTRUCT)lp)->cx - 1,
((LPCREATESTRUCT)lp)->cy - 1,


[...]
);

Worauf ich genau hinaus will: Das Fensterelement wird auf Pixel 1.1
des Parent-Windows erzeugt und hat jeweils die Höhe und Breite des
Parent-Windows -1. Trotzdem merkt man beim Maximieren des Fensters,
dass dieses Fensterelement viel größer ist als das Parent-Fenster.



Die Werte in der LPCREATESTRUCT sind die Größe des Fensters außen. Um
die Größe des Innenraumes (=für das Kindfenster verfügbarer Platz) zu
ermitteln, brauchst du GetClientRect. Da geht ja neben dem Rahmen noch
Titelzeile und Menü ab.


Stefan

Ähnliche fragen