Habe mal einen Versuch gemacht.
Verstehe die Technik nicht ganz.
Was verhindert nun das die Rechte Seite nachzieht?
Alle Rects sind gleich sehe keinen unterschied.
Hmm.. glaube das kann man nicht verhindern das ist ein Windows Problem.
gruss
Es ist definitv ein Windows-Problem, und die einzig brauchbare Lösung, die mir dafür bisher eingefallen ist, ist WM_NCHITTEST zu verarbeiten und einfach einen Drag nur für die linke oder untere Kante des Fensters zu erlauben, d.h. für HTRIGHT, HTTOP und die entsprechenden Ecken den Hittest einfach auf HTNOWHERE zu setzen.
Denke das ist die beste Lösung habe mir auch schon etwas ähnliches überlegt wollte nur mit Result 0 rausspringen.. wäre ja das gleiche gewesen nur mit Korrekter Benennung ist das besser.
Aber deine Lösung scheint dafür geeigneter zu sein.
Danke..
So geht's..
Delphi-Quellcode:
BORDER := GetSystemMetrics(32);
if ((P.X >= xF - BORDER) and ((P.Y >= yF - BORDER))) then
begin
HITTEST := HTBOTTOMRIGHT;
end
else
begin
// Linke Seite
if (P.X <= 8) then
begin
if (P.X <= BORDER) then
HITTEST := HTNOWHERE; //HTLEFT;
xSide := 1;
end;
// Rechte Seite
if (P.X >= xF - 8) then
begin
if (P.X >= xF - BORDER) then
HITTEST := HTRIGHT;
xSide := 2;
end;
// Obere Seite
if (P.Y <= BORDER) then
begin
HITTEST := HTNOWHERE; //HTTOP;
if (xSide = 1) then
HITTEST := HTNOWHERE //HTTOPLEFT
else if (xSide = 2) then
HITTEST := HTNOWHERE; //HTTOPRIGHT;
end;
// Untere Seite
if (P.Y >= yF - BORDER) then
begin
if (xSide = 1) then
HITTEST := HTNOWHERE //HTBOTTOMLEFT
else
HITTEST := HTBOTTOM;
end;
end;
Habe jetzt alles aus bis auf HTBOTTOM \ HTBOTTOMRIGHT \ HTRIGHT
Ist die Standard Bedienung und sollte reichen.
gruss