Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
e0996494
Commit
e0996494
authored
Jun 09, 2005
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved monitor functions to dlls/user/misc.c and finally got rid of the
windows/ directory.
parent
c5e98092
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
165 additions
and
210 deletions
+165
-210
DEVELOPERS-HINTS
DEVELOPERS-HINTS
+0
-9
configure
configure
+0
-5
configure.ac
configure.ac
+0
-1
Makefile.in
dlls/user/Makefile.in
+0
-2
misc.c
dlls/user/misc.c
+165
-0
multimon.c
windows/multimon.c
+0
-193
No files found.
DEVELOPERS-HINTS
View file @
e0996494
...
...
@@ -242,15 +242,6 @@ Support programs, libraries, etc:
tools/wrc/ - the resource compiler
Miscellaneous:
--------------
Note: these directories will ultimately get moved into their
respective dlls.
windows/ - USER window management
IMPLEMENTING NEW API CALLS
==========================
...
...
configure
View file @
e0996494
...
...
@@ -20065,8 +20065,6 @@ esac
ac_config_commands
=
"
$ac_config_commands
programs/regedit/tests"
ac_config_commands
=
"
$ac_config_commands
windows"
MAKE_RULES
=
Make.rules
...
...
@@ -20882,7 +20880,6 @@ do
"dlls/wineps/data" ) CONFIG_COMMANDS="
$CONFIG_COMMANDS
dlls/wineps/data" ;;
"include/wine" ) CONFIG_COMMANDS="
$CONFIG_COMMANDS
include/wine" ;;
"programs/regedit/tests" ) CONFIG_COMMANDS="
$CONFIG_COMMANDS
programs/regedit/tests" ;;
"windows" ) CONFIG_COMMANDS="
$CONFIG_COMMANDS
windows" ;;
"include/config.h" ) CONFIG_HEADERS="
$CONFIG_HEADERS
include/config.h" ;;
*) { { echo "
$as_me
:
$LINENO
: error: invalid argument:
$ac_config_target
" >&5
echo "
$as_me
: error: invalid argument:
$ac_config_target
" >&2;}
...
...
@@ -21680,8 +21677,6 @@ echo "$as_me: creating dlls/wineps/data" >&6;} && mkdir "dlls/wineps/data") ;;
echo "
$as_me
: creating include/wine" >&6;} && mkdir "include/wine") ;;
programs/regedit/tests ) test -d "programs/regedit/tests" || ({ echo "
$as_me
:
$LINENO
: creating programs/regedit/tests" >&5
echo "
$as_me
: creating programs/regedit/tests" >&6;} && mkdir "programs/regedit/tests") ;;
windows ) test -d "windows" || ({ echo "
$as_me
:
$LINENO
: creating windows" >&5
echo "
$as_me
: creating windows" >&6;} && mkdir "windows") ;;
esac
done
_ACEOF
...
...
configure.ac
View file @
e0996494
...
...
@@ -1515,7 +1515,6 @@ WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
WINE_CONFIG_EXTRA_DIR(include/wine)
WINE_CONFIG_EXTRA_DIR(programs/regedit/tests)
WINE_CONFIG_EXTRA_DIR(windows)
MAKE_RULES=Make.rules
AC_SUBST_FILE(MAKE_RULES)
...
...
dlls/user/Makefile.in
View file @
e0996494
...
...
@@ -16,7 +16,6 @@ SPEC_SRCS16 = \
user.exe.spec
C_SRCS
=
\
$(TOPOBJDIR)
/windows/multimon.c
\
button.c
\
caret.c
\
class.c
\
...
...
@@ -147,7 +146,6 @@ RC_SRCS16 = \
SUBDIRS
=
tests
EXTRASUBDIRS
=
\
$(TOPOBJDIR)
/windows
\
dde
\
resources
...
...
dlls/user/misc.c
View file @
e0996494
...
...
@@ -3,6 +3,7 @@
*
* Copyright 1995 Thomas Sandford
* Copyright 1997 Marcus Meissner
* Copyright 1998 Turchanov Sergey
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -28,6 +29,7 @@
#include "winuser.h"
#include "winnls.h"
#include "wine/unicode.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
win
);
...
...
@@ -53,6 +55,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(win);
#define USIG_PROCESS_RUNNING 0x0500
#define USIG_PROCESS_LOADED 0x0600
#define xPRIMARY_MONITOR ((HMONITOR)0x12340042)
/***********************************************************************
* SignalProc32 (USER.391)
...
...
@@ -307,6 +310,168 @@ BOOL WINAPI EnumDisplayDevicesW( LPVOID unused, DWORD i, LPDISPLAY_DEVICEW lpDis
}
/***********************************************************************
* MonitorFromPoint (USER32.@)
*/
HMONITOR
WINAPI
MonitorFromPoint
(
POINT
ptScreenCoords
,
DWORD
dwFlags
)
{
if
((
dwFlags
&
(
MONITOR_DEFAULTTOPRIMARY
|
MONITOR_DEFAULTTONEAREST
))
||
((
ptScreenCoords
.
x
>=
0
)
&&
(
ptScreenCoords
.
x
<
GetSystemMetrics
(
SM_CXSCREEN
))
&&
(
ptScreenCoords
.
y
>=
0
)
&&
(
ptScreenCoords
.
y
<
GetSystemMetrics
(
SM_CYSCREEN
))))
{
return
xPRIMARY_MONITOR
;
}
return
NULL
;
}
/***********************************************************************
* MonitorFromRect (USER32.@)
*/
HMONITOR
WINAPI
MonitorFromRect
(
LPRECT
lprcScreenCoords
,
DWORD
dwFlags
)
{
if
((
dwFlags
&
(
MONITOR_DEFAULTTOPRIMARY
|
MONITOR_DEFAULTTONEAREST
))
||
((
lprcScreenCoords
->
right
>
0
)
&&
(
lprcScreenCoords
->
bottom
>
0
)
&&
(
lprcScreenCoords
->
left
<
GetSystemMetrics
(
SM_CXSCREEN
))
&&
(
lprcScreenCoords
->
top
<
GetSystemMetrics
(
SM_CYSCREEN
))))
{
return
xPRIMARY_MONITOR
;
}
return
NULL
;
}
/***********************************************************************
* MonitorFromWindow (USER32.@)
*/
HMONITOR
WINAPI
MonitorFromWindow
(
HWND
hWnd
,
DWORD
dwFlags
)
{
WINDOWPLACEMENT
wp
;
if
(
dwFlags
&
(
MONITOR_DEFAULTTOPRIMARY
|
MONITOR_DEFAULTTONEAREST
))
return
xPRIMARY_MONITOR
;
if
(
IsIconic
(
hWnd
)
?
GetWindowPlacement
(
hWnd
,
&
wp
)
:
GetWindowRect
(
hWnd
,
&
wp
.
rcNormalPosition
))
{
return
MonitorFromRect
(
&
wp
.
rcNormalPosition
,
dwFlags
);
}
return
NULL
;
}
/***********************************************************************
* GetMonitorInfoA (USER32.@)
*/
BOOL
WINAPI
GetMonitorInfoA
(
HMONITOR
hMonitor
,
LPMONITORINFO
lpMonitorInfo
)
{
RECT
rcWork
;
if
((
hMonitor
==
xPRIMARY_MONITOR
)
&&
lpMonitorInfo
&&
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFO
))
&&
SystemParametersInfoA
(
SPI_GETWORKAREA
,
0
,
&
rcWork
,
0
))
{
SetRect
(
&
lpMonitorInfo
->
rcMonitor
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
lpMonitorInfo
->
rcWork
=
rcWork
;
lpMonitorInfo
->
dwFlags
=
MONITORINFOF_PRIMARY
;
if
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFOEXA
))
strcpy
(((
MONITORINFOEXA
*
)
lpMonitorInfo
)
->
szDevice
,
"DISPLAY"
);
return
TRUE
;
}
return
FALSE
;
}
/***********************************************************************
* GetMonitorInfoW (USER32.@)
*/
BOOL
WINAPI
GetMonitorInfoW
(
HMONITOR
hMonitor
,
LPMONITORINFO
lpMonitorInfo
)
{
static
const
WCHAR
displayW
[]
=
{
'D'
,
'I'
,
'S'
,
'P'
,
'L'
,
'A'
,
'Y'
,
0
};
RECT
rcWork
;
if
((
hMonitor
==
xPRIMARY_MONITOR
)
&&
lpMonitorInfo
&&
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFO
))
&&
SystemParametersInfoW
(
SPI_GETWORKAREA
,
0
,
&
rcWork
,
0
))
{
SetRect
(
&
lpMonitorInfo
->
rcMonitor
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
lpMonitorInfo
->
rcWork
=
rcWork
;
lpMonitorInfo
->
dwFlags
=
MONITORINFOF_PRIMARY
;
if
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFOEXW
))
strcpyW
(((
MONITORINFOEXW
*
)
lpMonitorInfo
)
->
szDevice
,
displayW
);
return
TRUE
;
}
return
FALSE
;
}
/***********************************************************************
* EnumDisplayMonitors (USER32.@)
*/
BOOL
WINAPI
EnumDisplayMonitors
(
HDC
hdcOptionalForPainting
,
LPRECT
lprcEnumMonitorsThatIntersect
,
MONITORENUMPROC
lpfnEnumProc
,
LPARAM
dwData
)
{
RECT
rcLimit
;
SetRect
(
&
rcLimit
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
if
(
!
lpfnEnumProc
)
return
FALSE
;
if
(
hdcOptionalForPainting
)
{
RECT
rcClip
;
POINT
ptOrg
;
switch
(
GetClipBox
(
hdcOptionalForPainting
,
&
rcClip
))
{
default:
if
(
!
GetDCOrgEx
(
hdcOptionalForPainting
,
&
ptOrg
))
return
FALSE
;
OffsetRect
(
&
rcLimit
,
-
ptOrg
.
x
,
-
ptOrg
.
y
);
if
(
IntersectRect
(
&
rcLimit
,
&
rcLimit
,
&
rcClip
)
&&
(
!
lprcEnumMonitorsThatIntersect
||
IntersectRect
(
&
rcLimit
,
&
rcLimit
,
lprcEnumMonitorsThatIntersect
)))
{
break
;
}
/* fall through */
case
NULLREGION
:
return
TRUE
;
case
ERROR
:
return
FALSE
;
}
}
else
{
if
(
lprcEnumMonitorsThatIntersect
&&
!
IntersectRect
(
&
rcLimit
,
&
rcLimit
,
lprcEnumMonitorsThatIntersect
))
{
return
TRUE
;
}
}
return
lpfnEnumProc
(
xPRIMARY_MONITOR
,
hdcOptionalForPainting
,
&
rcLimit
,
dwData
);
}
/***********************************************************************
* RegisterSystemThread (USER32.@)
*/
void
WINAPI
RegisterSystemThread
(
DWORD
flags
,
DWORD
reserved
)
...
...
windows/multimon.c
deleted
100644 → 0
View file @
c5e98092
/*
* Multimonitor APIs
*
* Copyright 1998 Turchanov Sergey
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "wine/unicode.h"
/**********************************************************************/
#define xPRIMARY_MONITOR ((HMONITOR)0x12340042)
/***********************************************************************
* MonitorFromPoint (USER32.@)
*/
HMONITOR
WINAPI
MonitorFromPoint
(
POINT
ptScreenCoords
,
DWORD
dwFlags
)
{
if
((
dwFlags
&
(
MONITOR_DEFAULTTOPRIMARY
|
MONITOR_DEFAULTTONEAREST
))
||
((
ptScreenCoords
.
x
>=
0
)
&&
(
ptScreenCoords
.
x
<
GetSystemMetrics
(
SM_CXSCREEN
))
&&
(
ptScreenCoords
.
y
>=
0
)
&&
(
ptScreenCoords
.
y
<
GetSystemMetrics
(
SM_CYSCREEN
))))
{
return
xPRIMARY_MONITOR
;
}
return
NULL
;
}
/***********************************************************************
* MonitorFromRect (USER32.@)
*/
HMONITOR
WINAPI
MonitorFromRect
(
LPRECT
lprcScreenCoords
,
DWORD
dwFlags
)
{
if
((
dwFlags
&
(
MONITOR_DEFAULTTOPRIMARY
|
MONITOR_DEFAULTTONEAREST
))
||
((
lprcScreenCoords
->
right
>
0
)
&&
(
lprcScreenCoords
->
bottom
>
0
)
&&
(
lprcScreenCoords
->
left
<
GetSystemMetrics
(
SM_CXSCREEN
))
&&
(
lprcScreenCoords
->
top
<
GetSystemMetrics
(
SM_CYSCREEN
))))
{
return
xPRIMARY_MONITOR
;
}
return
NULL
;
}
/***********************************************************************
* MonitorFromWindow (USER32.@)
*/
HMONITOR
WINAPI
MonitorFromWindow
(
HWND
hWnd
,
DWORD
dwFlags
)
{
WINDOWPLACEMENT
wp
;
if
(
dwFlags
&
(
MONITOR_DEFAULTTOPRIMARY
|
MONITOR_DEFAULTTONEAREST
))
return
xPRIMARY_MONITOR
;
if
(
IsIconic
(
hWnd
)
?
GetWindowPlacement
(
hWnd
,
&
wp
)
:
GetWindowRect
(
hWnd
,
&
wp
.
rcNormalPosition
))
{
return
MonitorFromRect
(
&
wp
.
rcNormalPosition
,
dwFlags
);
}
return
NULL
;
}
/***********************************************************************
* GetMonitorInfoA (USER32.@)
*/
BOOL
WINAPI
GetMonitorInfoA
(
HMONITOR
hMonitor
,
LPMONITORINFO
lpMonitorInfo
)
{
RECT
rcWork
;
if
((
hMonitor
==
xPRIMARY_MONITOR
)
&&
lpMonitorInfo
&&
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFO
))
&&
SystemParametersInfoA
(
SPI_GETWORKAREA
,
0
,
&
rcWork
,
0
))
{
SetRect
(
&
lpMonitorInfo
->
rcMonitor
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
lpMonitorInfo
->
rcWork
=
rcWork
;
lpMonitorInfo
->
dwFlags
=
MONITORINFOF_PRIMARY
;
if
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFOEXA
))
strcpy
(((
MONITORINFOEXA
*
)
lpMonitorInfo
)
->
szDevice
,
"DISPLAY"
);
return
TRUE
;
}
return
FALSE
;
}
/***********************************************************************
* GetMonitorInfoW (USER32.@)
*/
BOOL
WINAPI
GetMonitorInfoW
(
HMONITOR
hMonitor
,
LPMONITORINFO
lpMonitorInfo
)
{
static
const
WCHAR
displayW
[]
=
{
'D'
,
'I'
,
'S'
,
'P'
,
'L'
,
'A'
,
'Y'
,
0
};
RECT
rcWork
;
if
((
hMonitor
==
xPRIMARY_MONITOR
)
&&
lpMonitorInfo
&&
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFO
))
&&
SystemParametersInfoW
(
SPI_GETWORKAREA
,
0
,
&
rcWork
,
0
))
{
SetRect
(
&
lpMonitorInfo
->
rcMonitor
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
lpMonitorInfo
->
rcWork
=
rcWork
;
lpMonitorInfo
->
dwFlags
=
MONITORINFOF_PRIMARY
;
if
(
lpMonitorInfo
->
cbSize
>=
sizeof
(
MONITORINFOEXW
))
strcpyW
(((
MONITORINFOEXW
*
)
lpMonitorInfo
)
->
szDevice
,
displayW
);
return
TRUE
;
}
return
FALSE
;
}
/***********************************************************************
* EnumDisplayMonitors (USER32.@)
*/
BOOL
WINAPI
EnumDisplayMonitors
(
HDC
hdcOptionalForPainting
,
LPRECT
lprcEnumMonitorsThatIntersect
,
MONITORENUMPROC
lpfnEnumProc
,
LPARAM
dwData
)
{
RECT
rcLimit
;
SetRect
(
&
rcLimit
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
if
(
!
lpfnEnumProc
)
return
FALSE
;
if
(
hdcOptionalForPainting
)
{
RECT
rcClip
;
POINT
ptOrg
;
switch
(
GetClipBox
(
hdcOptionalForPainting
,
&
rcClip
))
{
default:
if
(
!
GetDCOrgEx
(
hdcOptionalForPainting
,
&
ptOrg
))
return
FALSE
;
OffsetRect
(
&
rcLimit
,
-
ptOrg
.
x
,
-
ptOrg
.
y
);
if
(
IntersectRect
(
&
rcLimit
,
&
rcLimit
,
&
rcClip
)
&&
(
!
lprcEnumMonitorsThatIntersect
||
IntersectRect
(
&
rcLimit
,
&
rcLimit
,
lprcEnumMonitorsThatIntersect
)))
{
break
;
}
/* fall through */
case
NULLREGION
:
return
TRUE
;
case
ERROR
:
return
FALSE
;
}
}
else
{
if
(
lprcEnumMonitorsThatIntersect
&&
!
IntersectRect
(
&
rcLimit
,
&
rcLimit
,
lprcEnumMonitorsThatIntersect
))
{
return
TRUE
;
}
}
return
lpfnEnumProc
(
xPRIMARY_MONITOR
,
hdcOptionalForPainting
,
&
rcLimit
,
dwData
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment