Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#24

AW: proceduren (Events) aus Interface

  Alt 7. Sep 2016, 14:28
so sieht die class jetzt aus.

Delphi-Quellcode:
  ISkinMagnetic = interface
    ['{A00CB8B3-8433-4C58-9115-1845B29B3FF0}']
    function GetSnapWidth: Integer;
    procedure SetSnapWidth(const Value: Integer);
    property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
    function AddMagneticWindow(Handle: HWND; hWndParent: HWND): Boolean;
    function RemoveMagneticWindow(Handle: HWND): Boolean;
    function SetFullWindowDrag(HWND: DWORD; ShowFullWindow: Boolean): Boolean;
    function zSubclass_Proc(var Wnd: HWND; var Msg: UINT; var wParam: wParam;
      var lParam: lParam): LRESULT;
  end;

  TMagnetic = class(TInterfacedPersistent, ISkinMagnetic)
    constructor Create;
    destructor Destroy; override;

  private
    FSnapWidth: Integer;
    m_uWndInfo: array of TWND_INFO;
    m_rcWnd: array of TRect;
    m_lWndCount: Integer;
    m_ptAnchor: TPOINT;
    m_ptOffset: TPOINT;
    m_ptCurr: TPOINT;
    m_ptLast: TPOINT;
    lOldSetting: Integer;
    function GetSnapWidth: Integer;
    procedure SetSnapWidth(const Value: Integer);
    procedure pvSizeRect(Handle: HWND; var rcWnd: TRect; lfEdge: Integer);
    procedure pvMoveRect(Handle: HWND; var rcWnd: TRect);
    procedure pvCheckGlueing;
    function pvWndsConnected(const rcWnd1, rcWnd2: TRect): Boolean;
    function pvWndGetInfoIndex(Handle: HWND): Integer;
    function pvWndParentGetInfoIndex(hWndParent: HWND): Integer;
    function zSubclass_Proc(var Wnd: HWND; var Msg: UINT; var wParam: wParam;
      var lParam: lParam): LRESULT;
    function getWND_INFO(aHandle: HWND; var Wnd_info: TWND_INFO): Boolean;
    function AddWindow(Handle: HWND; hWndParent: HWND): Boolean;
  public
    function AddMagneticWindow(Handle: HWND; hWndParent: HWND): Boolean;
    function RemoveMagneticWindow(Handle: HWND): Boolean;
    property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
    function SetFullWindowDrag(HWND: DWORD; ShowFullWindow: Boolean): Boolean;
  end;


var
  MagneticWnd: ISkinMagnetic;
Es war zwingend nötig die zSubclass_Proc in das Interface mit zu übernehmen.
Ich habe diese aber an letzter stelle gesetzt so muss ich die in dem öffentlichen Interface nicht integrieren.

Das sieht dann so aus.
Delphi-Quellcode:
  ISkinMagnetic = interface
    ['{A00CB8B3-8433-4C58-9115-1845B29B3FF0}']
    function GetSnapWidth: Integer;
    procedure SetSnapWidth(const Value: Integer);
    property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
    function AddMagneticWindow(Handle: HWND; hWndParent: HWND): Boolean;
    function RemoveMagneticWindow(Handle: HWND): Boolean;
    function SetFullWindowDrag(HWND: DWORD; ShowFullWindow: Boolean): Boolean;
  end;
Durch die Umlenkung der TSubClass_Proc sind zusätzliche messagen\events in Formen oder in NonVCl erstellten Fenstern nicht mehr nötig.

gruss

Geändert von EWeiss ( 7. Sep 2016 um 15:56 Uhr)
  Mit Zitat antworten Zitat