Subversion Repositories delphiutils

Rev

Rev 41 | Go to most recent revision | 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(LONG_PTR)}
  16. type
  17.   LONG_PTR = Pointer; // TODO: Wie genau definiert?
  18. {$IFEND}
  19.  
  20. {$IF NOT DECLARED(WNDPROC)}
  21. type
  22.   WNDPROC = TFNWndProc; // TODO: Wie genau definiert?
  23. {$IFeND}
  24.  
  25. {$IF NOT DECLARED(GetWindowLongPtr)}
  26.   {$DEFINE Do_Implement_GetWindowLongPtr}
  27.   function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
  28. {$IFEND}
  29.  
  30. {$IF NOT DECLARED(SetWindowLongPtr)}
  31.   {$DEFINE Do_Implement_SetWindowLongPtr}
  32.   function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
  33. {$IFEND}
  34.  
  35. implementation
  36.  
  37. {$IFDEF Do_Implement_GetWindowLongPtr}
  38.   {$IFNDEF _WIN64}
  39.     {$IFDEF UNICODE}
  40.       function GetWindowLongPtr; external user32 name 'GetWindowLongW';
  41.     {$ELSE}
  42.       function GetWindowLongPtr; external user32 name 'GetWindowLongA';
  43.     {$ENDIF}
  44.   {$ELSE}
  45.     {$IFDEF UNICODE}
  46.       function GetWindowLongPtr; external user32 name 'GetWindowLongPtrW';
  47.     {$ELSE}
  48.       function GetWindowLongPtr; external user32 name 'GetWindowLongPtrA';
  49.     {$ENDIF}
  50.   {$ENDIF}
  51. {$ENDIF}
  52.  
  53. {$IFDEF Do_Implement_SetWindowLongPtr}
  54.   {$IFNDEF _WIN64}
  55.     {$IFDEF UNICODE}
  56.       function SetWindowLongPtr; external user32 name 'SetWindowLongW';
  57.     {$ELSE}
  58.       function SetWindowLongPtr; external user32 name 'SetWindowLongA';
  59.     {$ENDIF}
  60.   {$ELSE}
  61.     {$IFDEF UNICODE}
  62.       function SetWindowLongPtr; external user32 name 'SetWindowLongPtrW';
  63.     {$ELSE}
  64.       function SetWindowLongPtr; external user32 name 'SetWindowLongPtrA';
  65.     {$ENDIF}
  66.   {$ENDIF}
  67. {$ENDIF}
  68.  
  69. end.
  70.