Einzelnen Beitrag anzeigen

Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Schnittrahmen proportional - WM_SysCommand

  Alt 16. Jul 2013, 14:01
Hi,

Hatte da mal ein Problem mit Resize und musste das manuell erledigen. Für die Interresierten:

Messages fangen:
Im FormCreate:
Application.OnMessage := OnMessageHandlingHook; Wenn ein Klick auf den Rahmen erfolgt, dann lokalisieren auf welchen Teil und dann den gewünschten Resize Befehl abschicken. Konstanten sind in der Windows.pas zu finden.

Delphi-Quellcode:
procedure Tmainform.OnMessageHandlingHook(var Msg: TMsg; var Handled: Boolean);
var
Direction : Integer;
begin
Handled := False;
 if (MSG.message = 161) then begin //WM_NCLBUTTONDOWN = 161
    if (MSG.hwnd = Mainform.Handle) then begin
      if ((MSG.wParam = 8) or (MSG.wParam = 9) or (MSG.wParam = 20)) then
        Handled:=true
      else begin
        Direction := -1;
        case MSG.wParam of
          HTLEFT : Direction := WMSZ_LEFT;
          HTRIGHT : Direction := WMSZ_RIGHT;
          HTTOP : Direction := WMSZ_TOP;
          HTBOTTOM : Direction := WMSZ_BOTTOM;
          HTTOPLEFT : Direction := WMSZ_TOPLEFT;
          HTTOPRIGHT : Direction := WMSZ_TOPRIGHT;
          HTBOTTOMLEFT : Direction := WMSZ_BOTTOMLEFT;
          HTBOTTOMRIGHT : Direction := WMSZ_BOTTOMRIGHT;
        end;
        if Direction <> -1 then begin
          ReleaseCapture;
          DefWindowProc(mainform.Handle,WM_SYSCOMMAND,SC_SIZE+Direction,0);
          Handled:=true;
        end;
      end;
    end;
 end;
end;
Grüße!
Chris
  Mit Zitat antworten Zitat