gtk: implement TMonitor support

git-svn-id: trunk@19260 -
This commit is contained in:
paul 2009-04-07 01:37:50 +00:00
parent 906426f562
commit ddf2b15e66
3 changed files with 23 additions and 1 deletions

View File

@ -3404,6 +3404,12 @@ begin
ReleaseDC(Handle, PS.HDC);
end;
function TGTKWidgetSet.EnumDisplayMonitors(hdc: HDC; lprcClip: PRect;
lpfnEnum: MonitorEnumProc; dwData: LPARAM): LongBool;
begin
Result := lpfnEnum(0, 0, nil, dwData);
end;
{.$define VerboseEnumFonts}
{$IFDEF VerboseGtkToDos}{$note: compare TGtkWidgetSet.EnumFontFamilies with gtkproc.FillScreenFonts}{$ENDIF}
function TGtkWidgetSet.EnumFontFamilies(DC: HDC; Family: Pchar;
@ -5361,6 +5367,15 @@ begin
//Assert(False, Format('Trace:[TGtkWidgetSet.GetKeyState] %d -> 0x%x', [nVirtKey, Result]));
end;
function TGTKWidgetSet.GetMonitorInfo(Monitor: HMONITOR; lpmi: PMonitorInfo): Boolean;
begin
Result := (lpmi <> nil) and (lpmi^.cbSize >= SizeOf(TMonitorInfo)) and (Monitor = 0);
if not Result then Exit;
lpmi^.rcMonitor := Bounds(0, 0, gdk_screen_width, gdk_screen_height);
lpmi^.rcWork := lpmi^.rcMonitor;
lpmi^.dwFlags := MONITORINFOF_PRIMARY
end;
{------------------------------------------------------------------------------
Function: GetObject
Params: GDIObj - handle, BufSize - size of Buf argument, Buf - buffer
@ -9745,6 +9760,7 @@ begin
ACritSec:=System.PRTLCriticalSection(CritSection);
System.EnterCriticalsection(ACritSec^);
end;
{var
Crit,
tmp : ppthread_mutex_t;

View File

@ -76,6 +76,7 @@ function EnableScrollBar(Wnd: HWND; wSBflags, wArrows: Cardinal): Boolean; overr
function EnableWindow(hWnd: HWND; bEnable: Boolean): Boolean; override;
function EndPaint(Handle : hwnd; var PS : TPaintStruct): Integer; override;
procedure EnterCriticalSection(var CritSection: TCriticalSection); Override;
function EnumDisplayMonitors(hdc: HDC; lprcClip: PRect; lpfnEnum: MonitorEnumProc; dwData: LPARAM): LongBool; override;
function EnumFontFamilies(DC: HDC; Family: Pchar; EnumFontFamProc: FontEnumProc; LParam:Lparam):longint; override;
function EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont; Callback: FontEnumExProc; Lparam: LParam; Flags: dword): longint; override;
function ExcludeClipRect(dc: hdc; Left, Top, Right, Bottom : Integer) : Integer; override;
@ -109,6 +110,7 @@ function GetDIBits(DC: HDC; Bitmap: HBitmap; StartScan, NumScans: UINT; Bits: Po
function GetFocus: HWND; override;
function GetFontLanguageInfo(DC: HDC): DWord; override;
function GetKeyState(nVirtKey: Integer): Smallint; override;
function GetMonitorInfo(Monitor: HMONITOR; lpmi: 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;

View File

@ -357,8 +357,12 @@ function TGtk2WidgetSet.EnumDisplayMonitors(hdc: HDC; lprcClip: PRect;
var
i: integer;
begin
Result := True;
for i := 0 to gdk_screen_get_n_monitors(gdk_screen_get_default) - 1 do
lpfnEnum(i, 0, nil, dwData);
begin
Result := Result and lpfnEnum(i, 0, nil, dwData);
if not Result then break;
end;
end;
{------------------------------------------------------------------------------