Ich erstelle ein Fenster und möchte dieses ausfahren und zwar so das es an der Top Position stehen bleibt.
Irgendwie will das mal wieder nicht.
Wie kann ich das am besten bewerkstelligen.
So ist meine Vorgehensweise.
Delphi-Quellcode:
WM_NCMOUSEMOVE:
begin
GetClientRect(WinHandle, rc);
GetCursorPos(p);
ScreenToClient(WinHandle, p);
if (p.y > 40) and (p.y < 128) then
begin
if Prop.Panel = 0 then
Prop.Panel := CreatePanel(Prop.MainHandle);
Prop.PanelHeight := 128;
Prop.HeightOffset := Prop.PanelHeight;
GetWindowRect(WinHandle, rc);
MoveWindow(Prop.Panel, rc.left, rc.Top + 40,
(rc.right - rc.left), Prop.PanelHeight, False); // << Das passt nicht möchte hier das Fenster rausfahren nicht komplett Anzeigen.
ShowWindow(Prop.Panel, SW_SHOW);
Prop.bPanel := True;
end else
begin
if Prop.bPanel then
SetTimer(Prop.MainHandle, SKAERO_ANIM_TIMER, 16, nil);
end;
end;
Delphi-Quellcode:
WM_TIMER:
begin
if wP = SKAERO_ANIM_TIMER then
begin
if Prop.Panel <> 0 then
begin
GetWindowRect(Prop.Panel, rc);
if (Prop.HeightOffset > 0 ) then
begin
MoveWindow(Prop.Panel, rc.Left, rc.Top, rc.right - rc.left, Prop.HeightOffset, true);
Prop.HeightOffset := Prop.HeightOffset - 10; // sollte umgekehrt sein das Fenster soll reinfahren bis es nicht mehr sichtbar ist.
end
else
begin
ShowWindow(Prop.Panel, SW_HIDE);
KillTimer(WinHandle, SKAERO_ANIM_TIMER);
Prop.bPanel := False;
DestroyWindow(Prop.Panel);
end;
end;
end;
Es geht um den Bereich wo die Thumbnails zu sehen sind.
gruss