From 9430f5e3e613a43c7ba62434382e1bb29d9f5ccf Mon Sep 17 00:00:00 2001 From: paul Date: Wed, 6 Jan 2010 17:26:04 +0000 Subject: [PATCH] win32: cleanup win32extra git-svn-id: trunk@23393 - --- lcl/interfaces/win32/win32extra.pas | 170 +------------------------- lcl/interfaces/win32/win32int.pp | 2 +- lcl/interfaces/win32/win32winapi.inc | 14 +-- lcl/interfaces/win32/win32winapih.inc | 2 +- lcl/lcltype.pp | 2 +- 5 files changed, 11 insertions(+), 179 deletions(-) diff --git a/lcl/interfaces/win32/win32extra.pas b/lcl/interfaces/win32/win32extra.pas index bac88d90ba..2a62db5501 100644 --- a/lcl/interfaces/win32/win32extra.pas +++ b/lcl/interfaces/win32/win32extra.pas @@ -36,13 +36,6 @@ uses { Win32 API constants not included in windows.pp } const - // progress bar - PBM_SETMARQUEE = WM_USER + 10; - PBS_MARQUEE = $08; - - // missed messages - WM_NCMOUSELEAVE = $2A2; // declared in fpc 2.3.1 - // Layout orientation LAYOUT_RTL = $00000001; // Right to left LAYOUT_BTT = $00000002; // Bottom to top @@ -85,11 +78,6 @@ var GetComboBoxInfo: function(hwndCombo: HWND; pcbi: PComboboxInfo): BOOL; stdcall; GetMenuBarInfo: function(hwnd: HWND; idObject: LONG; idItem: LONG; pmbi: PMENUBARINFO): BOOL; stdcall; GetWindowInfo: function(hwnd: HWND; pwi: PWINDOWINFO): BOOL; stdcall; - EnumDisplayMonitors: function(hdc: HDC; lprcClip: PRect; lpfnEnum: MonitorEnumProc; dwData: LPARAM): LongBool; stdcall; - GetMonitorInfo: function(hMonitor: HMONITOR; lpmi: PMonitorInfo): Boolean; stdcall; - MonitorFromWindow: function(hWnd: HWND; dwFlags: DWORD): HMONITOR; stdcall; - MonitorFromRect: function(lprcScreenCoords: PRect; dwFlags: DWord): HMONITOR; stdcall; - MonitorFromPoint: function(ptScreenCoords: TPoint; dwFlags: DWord): HMONITOR; stdcall; SetLayout: function(dc: HDC; l: DWord): DWord; stdcall; const @@ -126,9 +114,6 @@ implementation uses Win32Proc; -const - xPRIMARY_MONITOR = $12340042; - {$PACKRECORDS NORMAL} function _AlphaBlend(hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest, nHeightDest: Integer; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: Integer; blendFunction: TBlendFunction): BOOL; stdcall; @@ -550,128 +535,6 @@ begin Result := False; end; -function _EnumDisplayMonitors(hdcOptionalForPainting: HDC; - lprcEnumMonitorsThatIntersect: PRect; - lpfnEnumProc: MonitorEnumProc; - dwData: LPARAM): LongBool; stdcall; -var - rcLimit, rcClip: TRect; - ptOrg: TPoint; - Cb: Integer; -begin - // from MultiMon.h - rcLimit.left := 0; - rcLimit.top := 0; - rcLimit.right := GetSystemMetrics(SM_CXSCREEN); - rcLimit.bottom := GetSystemMetrics(SM_CYSCREEN); - - if (hdcOptionalForPainting <> 0) then - begin - Cb := GetClipBox(hdcOptionalForPainting, @rcClip); - if not GetDCOrgEx(hdcOptionalForPainting, @ptOrg) then - Exit(False); - - OffsetRect(rcLimit, -ptOrg.x, -ptOrg.y); - if (IntersectRect(rcLimit, rcLimit, rcClip) and - ((lprcEnumMonitorsThatIntersect = nil) or - IntersectRect(rcLimit, rcLimit, lprcEnumMonitorsThatIntersect^))) then - begin - if Cb = NULLREGION then - Exit(True) - else - if Cb = ERROR then - Exit(False); - end - end - else - if ((lprcEnumMonitorsThatIntersect <> nil) and - not IntersectRect(rcLimit, rcLimit, lprcEnumMonitorsThatIntersect^)) then - Exit(True); - - Result := lpfnEnumProc( - xPRIMARY_MONITOR, - hdcOptionalForPainting, - @rcLimit, - dwData); -end; - -function _GetMonitorInfo(hMonitor: HMONITOR; lpMonitorInfo: PMonitorInfo): Boolean; stdcall; -var - rcWork: TRect; -begin - // from MultiMon.h - if ((hMonitor = xPRIMARY_MONITOR) and - (lpMonitorInfo <> nil) and - (lpMonitorInfo^.cbSize >= sizeof(TMonitorInfo)) and - SystemParametersInfo(SPI_GETWORKAREA, 0, @rcWork, 0)) then - begin - lpMonitorInfo^.rcMonitor.left := 0; - lpMonitorInfo^.rcMonitor.top := 0; - lpMonitorInfo^.rcMonitor.right := GetSystemMetrics(SM_CXSCREEN); - lpMonitorInfo^.rcMonitor.bottom := GetSystemMetrics(SM_CYSCREEN); - lpMonitorInfo^.rcWork := rcWork; - lpMonitorInfo^.dwFlags := MONITORINFOF_PRIMARY; - - {$IFDEF WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - if (lpMonitorInfo^.cbSize >= sizeof(TMonitorInfoExW)) then - PMonitorInfoExW(lpMonitorInfo)^.szDevice := 'DISPLAY' - end - else - {$ENDIF} - if (lpMonitorInfo^.cbSize >= sizeof(TMonitorInfoEx)) then - PMonitorInfoEx(lpMonitorInfo)^.szDevice := 'DISPLAY'; - - Result := True; - end - else - Result := False; -end; - -function _MonitorFromPoint(ptScreenCoords: TPoint; dwFlags: DWord): HMONITOR; stdcall; -begin - if ((dwFlags and (MONITOR_DEFAULTTOPRIMARY or MONITOR_DEFAULTTONEAREST) <> 0 ) or - ((ptScreenCoords.x >= 0) and - (ptScreenCoords.x < GetSystemMetrics(SM_CXSCREEN)) and - (ptScreenCoords.y >= 0) and - (ptScreenCoords.y < GetSystemMetrics(SM_CYSCREEN)))) then - Result := xPRIMARY_MONITOR - else - Result := 0; -end; - -function _MonitorFromRect(lprcScreenCoords: PRect; dwFlags: DWord): HMONITOR; stdcall; -begin - if ((dwFlags and (MONITOR_DEFAULTTOPRIMARY or MONITOR_DEFAULTTONEAREST) <> 0) or - ((lprcScreenCoords^.right > 0) and - (lprcScreenCoords^.bottom > 0) and - (lprcScreenCoords^.left < GetSystemMetrics(SM_CXSCREEN)) and - (lprcScreenCoords^.top < GetSystemMetrics(SM_CYSCREEN)))) then - Result := xPRIMARY_MONITOR - else - Result := 0; -end; - -function _MonitorFromWindow(hWnd: HWND; dwFlags: DWord): HMONITOR; stdcall; -var - wp: TWindowPlacement; - B: Boolean; -begin - if (dwFlags and (MONITOR_DEFAULTTOPRIMARY or MONITOR_DEFAULTTONEAREST) <> 0) then - Exit(xPRIMARY_MONITOR); - - if IsIconic(hWnd) then - B := GetWindowPlacement(hWnd, @wp) - else - B := GetWindowRect(hWnd, @wp.rcNormalPosition); - - if B then - Result := _MonitorFromRect(@wp.rcNormalPosition, dwFlags) - else - Result := 0; -end; - function _SHGetStockIconInfo(siid: integer; uFlags: UINT; psii: PSHSTOCKICONINFO): HResult; stdcall; begin Result := E_NOTIMPL; @@ -732,12 +595,7 @@ begin Pointer(GetComboboxInfo) := @_GetComboboxInfo; Pointer(GetMenuBarInfo) := @_GetMenuBarInfo; Pointer(GetWindowInfo) := @_GetWindowInfo; - Pointer(EnumDisplayMonitors) := @_EnumDisplayMonitors; - Pointer(GetMonitorInfo) := @_GetMonitorInfo; - Pointer(MonitorFromWindow) := @_MonitorFromWindow; - Pointer(MonitorFromRect) := @_MonitorFromRect; - Pointer(MonitorFromPoint) := @_MonitorFromPoint; - + user32handle := LoadLibrary(user32lib); if user32handle <> 0 then begin @@ -752,32 +610,6 @@ begin p := GetProcAddress(user32handle, 'GetWindowInfo'); if p <> nil then Pointer(GetWindowInfo) := p; - - p := GetProcAddress(user32handle, 'EnumDisplayMonitors'); - if p <> nil - then Pointer(EnumDisplayMonitors) := p; - - {$IFDEF WindowsUnicodeSupport} - if UnicodeEnabledOS - then p := GetProcAddress(user32handle, 'GetMonitorInfoW') - else p := GetProcAddress(user32handle, 'GetMonitorInfoA'); - {$ELSE} - p := GetProcAddress(user32handle, 'GetMonitorInfoA'); - {$ENDIF} - if p <> nil - then Pointer(GetMonitorInfo) := p; - - p := GetProcAddress(user32handle, 'MonitorFromWindow'); - if p <> nil - then Pointer(MonitorFromWindow) := p; - - p := GetProcAddress(user32handle, 'MonitorFromRect'); - if p <> nil - then Pointer(MonitorFromRect) := p; - - p := GetProcAddress(user32handle, 'MonitorFromPoint'); - if p <> nil - then Pointer(MonitorFromPoint) := p; end; // Defaults diff --git a/lcl/interfaces/win32/win32int.pp b/lcl/interfaces/win32/win32int.pp index 360a313a9a..e420ac39b9 100644 --- a/lcl/interfaces/win32/win32int.pp +++ b/lcl/interfaces/win32/win32int.pp @@ -37,7 +37,7 @@ uses Windows, ActiveX, Classes, Translations, ComCtrls, Controls, Buttons, ExtCtrls, Forms, GraphMath, GraphType, InterfaceBase, LCLIntf, LCLType, LMessages, StdCtrls, SysUtils, Win32Def, Graphics, Menus, CommCtrl, - Themes{, Win32Debug}; + MultiMon, Themes{, Win32Debug}; const // standard windows cursors diff --git a/lcl/interfaces/win32/win32winapi.inc b/lcl/interfaces/win32/win32winapi.inc index 98c46bc97c..6c22dc30e8 100644 --- a/lcl/interfaces/win32/win32winapi.inc +++ b/lcl/interfaces/win32/win32winapi.inc @@ -1328,7 +1328,7 @@ end; function TWin32WidgetSet.EnumDisplayMonitors(hdc: HDC; lprcClip: PRect; lpfnEnum: MonitorEnumProc; dwData: LPARAM): LongBool; begin - Result := Win32Extra.EnumDisplayMonitors(hdc, lprcClip, lpfnEnum, dwData); + Result := MultiMon.EnumDisplayMonitors(hdc, lprcClip, lpfnEnum, dwData); end; function TWin32WidgetSet.EnumFontFamilies(DC: HDC; Family: Pchar; @@ -1923,7 +1923,7 @@ begin Result := Windows.GetMapMode(DC); end; -function TWin32WidgetSet.GetMonitorInfo(hMonitor: HMONITOR; lpmi: PMonitorInfo): Boolean; +function TWin32WidgetSet.GetMonitorInfo(hMonitor: HMONITOR; lpmi: LCLType.PMonitorInfo): Boolean; {$IFDEF WindowsUnicodeSupport} var LocalInfo: TMonitorInfoExW; @@ -1935,7 +1935,7 @@ begin if UnicodeEnabledOS then begin LocalInfo.cbSize := SizeOf(TMonitorInfoExW); - Result := Win32Extra.GetMonitorInfo(hMonitor, @LocalInfo); + Result := MultiMon.GetMonitorInfo(hMonitor, @LocalInfo); lpmi^.rcMonitor := LocalInfo.rcMonitor; lpmi^.rcWork := LocalInfo.rcWork; lpmi^.dwFlags := LocalInfo.dwFlags; @@ -1946,7 +1946,7 @@ begin end else {$ENDIF} - Result := Win32Extra.GetMonitorInfo(hMonitor, lpmi); + Result := MultiMon.GetMonitorInfo(hMonitor, LPMonitorInfo(lpmi)); end; {------------------------------------------------------------------------------ @@ -2568,17 +2568,17 @@ end; function TWin32WidgetSet.MonitorFromPoint(ptScreenCoords: TPoint; dwFlags: DWord): HMONITOR; begin - Result := Win32Extra.MonitorFromPoint(ptScreenCoords, dwFlags); + Result := MultiMon.MonitorFromPoint(ptScreenCoords, dwFlags); end; function TWin32WidgetSet.MonitorFromRect(lprcScreenCoords: PRect; dwFlags: DWord): HMONITOR; begin - Result := Win32Extra.MonitorFromRect(lprcScreenCoords, dwFlags); + Result := MultiMon.MonitorFromRect(lprcScreenCoords, dwFlags); end; function TWin32WidgetSet.MonitorFromWindow(hWnd: HWND; dwFlags: DWord): HMONITOR; begin - Result := Win32Extra.MonitorFromWindow(hWnd, dwFlags); + Result := MultiMon.MonitorFromWindow(hWnd, dwFlags); end; {------------------------------------------------------------------------------ diff --git a/lcl/interfaces/win32/win32winapih.inc b/lcl/interfaces/win32/win32winapih.inc index c0a1f3e703..244b6ece6c 100644 --- a/lcl/interfaces/win32/win32winapih.inc +++ b/lcl/interfaces/win32/win32winapih.inc @@ -108,7 +108,7 @@ function GetFocus: HWND; override; function GetForegroundWindow: HWND; override; function GetKeyState(NVirtKey: Integer): SmallInt; override; function GetMapMode(DC: HDC): Integer; override; -function GetMonitorInfo(hMonitor: HMONITOR; lpmi: PMonitorInfo): Boolean; override; +function GetMonitorInfo(hMonitor: HMONITOR; lpmi: LCLType.PMonitorInfo): Boolean; override; function GetObject(GDIObj: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer; override; function GetParent(Handle: HWND): HWND; override; function GetProp(Handle: HWND; Str: PChar): Pointer; override; diff --git a/lcl/lcltype.pp b/lcl/lcltype.pp index ef6c7570e7..d4ce811899 100644 --- a/lcl/lcltype.pp +++ b/lcl/lcltype.pp @@ -133,7 +133,7 @@ type HBITMAP = Windows.HBITMAP; HPALETTE = Windows.HPALETTE; HBRUSH = Windows.HBRUSH; - HMONITOR = Windows.HANDLE; // define as Windows.HMONITOR when fpc have it + HMONITOR = HANDLE; WPARAM = Windows.WPARAM; LPARAM = Windows.LPARAM;