Autor Beitrag
nepleurepas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164

Win XP

BeitragVerfasst: So 20.04.08 16:17 
Hallo,
ich möchte die größe eines fensters herausfinden. Nun hab ich in der msdn library nachgeschaut. Meine frage: Wie kann ich UINT in integer oder etwas ähnliches umwandeln?

Und weiter, was bedeutet :
cbSize
The size of the structure, in bytes. The caller must set this to sizeof(WINDOWINFO).

könnte mir da vllt jemand ein codebsp geben, wie das mit setzen der größe funktioniert? Ich verstehe den sinn nicht. Ich kenne doch die größe von dem fenster noch gar nicht bevor ich die funktion aufrufe...


thx für antworten
stefan
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.04.08 16:44 
GetWindowRect dürfte hier wohl einfacher sein.
nepleurepas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164

Win XP

BeitragVerfasst: So 20.04.08 16:54 
user profile iconLuckie hat folgendes geschrieben:
GetWindowRect dürfte hier wohl einfacher sein.


gleiches problem für mich. Wie kann ich mit lprect an greifbare daten kommen? Ich weiß dass es ein pointer ist, aber wie kann dann direkt die werte als integer erhalten??

thx stefan
Biergeneral
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

WIN XP
Delphi 7 Ent., Delphi 2007 Ent., C/C++ (Eclipse)
BeitragVerfasst: So 20.04.08 20:14 
Ich glaub da liegen dir ein paar Missverständnisse vor.

Also der aufruf von GetWindowInfo ist im Prinzip ganz einfach:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure Machet(handle: HWND);
var
  wndInfo: TWindowInfo;
begin
  wndInfo.cbSize := sizeOf(TWindowInfo); 
  { die cbSize gibt hier keine Größe an, die irgendwas mit dem Fenster zu tun hat, sondern ist notwendig für
    die Methode and die du die wndInfo übergibts.
    Du schreibst dort also rein, wie groß das Record in Bytes ist. }

  if GetWindowInfo(handle, wndInfo) then
  begin
    MachIrgendwas;
  end;
end;


Und ja, in diesem Fall ist GetWindowRect wohl die einfachere Variante. Funktioniert so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure Machet(handle: HWND);
var
  wndRect: TRect;
begin
  {Das lpRect ist in dem Sinne kein Pointer. Delphi deklariert das ganze als Var parameter.
   Also ein Übergabewert, der in der aufgerufenen nur Referenziert wird. Sprich Wenn GetWindowRect etwas
   in dem Übergabewert wndRect verändert, ist das wndRect danach in der Methode Machet auch verändert}

  if GetWindowRect(handle, wndRect) then
  begin
    MachWas;
  ShowMessage(format('Left: %d; Right: %d; Top: %d, Bottom: %d', 
                     [wndRect.Left, wndRect.Right, wndRect.Top, wndRect.Bottom]));
  end;
end;
nepleurepas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164

Win XP

BeitragVerfasst: Mi 30.04.08 17:05 
ok, alles klar

Danke