Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Fenster flickert beim resize von Linker und Top seite

  Alt 14. Jun 2019, 23:27
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

Geändert von EWeiss (14. Jun 2019 um 23:55 Uhr)
  Mit Zitat antworten Zitat