Subversion Repositories delphiutils

Rev

Rev 42 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. unit WindowsCompat;
  2.  
  3. // Ref: http://qc.embarcadero.com/wc/qcmain.aspx?d=48771
  4.  
  5. interface
  6.  
  7. uses
  8.   Windows;
  9.  
  10. {$IF NOT DECLARED(GWLP_WNDPROC)}
  11. const
  12.   GWLP_WNDPROC = -4;
  13. {$IFEND}
  14.  
  15. {$IF NOT DECLARED(PtrInt)}
  16. type
  17.   {$IFDEF WIN32}
  18.   PtrInt = Longint;
  19.   {$ELSE}
  20.   PtrInt = Int64;
  21.   {$ENDIF}
  22. {$IFEND}
  23.  
  24. {$IF NOT DECLARED(LONG_PTR)}
  25. type
  26.   LONG_PTR = PtrInt; // Offizielle Deklaration?
  27. {$IFEND}
  28.  
  29. {$IF NOT DECLARED(WNDPROC)}
  30. type
  31.   WNDPROC = TFNWndProc; // Offizielle Deklaration?
  32. {$IFeND}
  33.  
  34. {$IF NOT DECLARED(GetWindowLongPtr)}
  35.   {$DEFINE Do_Implement_GetWindowLongPtr}
  36.   function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
  37. {$IFEND}
  38.  
  39. {$IF NOT DECLARED(SetWindowLongPtr)}
  40.   {$DEFINE Do_Implement_SetWindowLongPtr}
  41.   function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
  42. {$IFEND}
  43.  
  44. implementation
  45.  
  46. {$IFDEF Do_Implement_GetWindowLongPtr}
  47.   {$IFNDEF _WIN64}
  48.     {$IFDEF UNICODE}
  49.       function GetWindowLongPtr; external user32 name 'GetWindowLongW';
  50.     {$ELSE}
  51.       function GetWindowLongPtr; external user32 name 'GetWindowLongA';
  52.     {$ENDIF}
  53.   {$ELSE}
  54.     {$IFDEF UNICODE}
  55.       function GetWindowLongPtr; external user32 name 'GetWindowLongPtrW';
  56.     {$ELSE}
  57.       function GetWindowLongPtr; external user32 name 'GetWindowLongPtrA';
  58.     {$ENDIF}
  59.   {$ENDIF}
  60. {$ENDIF}
  61.  
  62. {$IFDEF Do_Implement_SetWindowLongPtr}
  63.   {$IFNDEF _WIN64}
  64.     {$IFDEF UNICODE}
  65.       function SetWindowLongPtr; external user32 name 'SetWindowLongW';
  66.     {$ELSE}
  67.       function SetWindowLongPtr; external user32 name 'SetWindowLongA';
  68.     {$ENDIF}
  69.   {$ELSE}
  70.     {$IFDEF UNICODE}
  71.       function SetWindowLongPtr; external user32 name 'SetWindowLongPtrW';
  72.     {$ELSE}
  73.       function SetWindowLongPtr; external user32 name 'SetWindowLongPtrA';
  74.     {$ENDIF}
  75.   {$ENDIF}
  76. {$ENDIF}
  77.  
  78. end.
  79.