Ok to apply?
Regards,
Kai
From 69984b415eb0212ac02e85c4a057e5899347f7c0 Mon Sep 17 00:00:00 2001
From: Kai Tietz <ktiet...@googlemail.com>
Date: Mon, 25 Aug 2014 11:52:58 +0200
Subject: Add winapifamily-check, correct Win Vista SP1 check, add missing
types ...
---
mingw-w64-headers/include/mxdc.h | 170 ++++++++++++++++++++++++--------------
1 files changed, 107 insertions(+), 63 deletions(-)
diff --git a/mingw-w64-headers/include/mxdc.h b/mingw-w64-headers/include/mxdc.h
index ecf6940..05d322c 100644
--- a/mingw-w64-headers/include/mxdc.h
+++ b/mingw-w64-headers/include/mxdc.h
@@ -1,75 +1,119 @@
/**
- * This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
*/
-#ifndef _INC_MXDC
-#define _INC_MXDC
-#if (_WIN32_WINNT >= 0x0600)
+
+#ifndef _MXDC_H_
+#define _MXDC_H_
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
#ifdef __cplusplus
extern "C" {
#endif
-typedef struct tagMxdcEscapeHeader {
- ULONG cbInput;
- ULONG cbOutput;
- ULONG opCode;
-} MXDC_ESCAPE_HEADER_T, *P_MXDC_ESCAPE_HEADER_T;
-
-typedef struct _tagMxdcGetFileNameData {
- ULONG cbOutput;
- wchar_t wszData[1];
-} MXDC_GET_FILENAME_DATA_T, *P_MXDC_GET_FILENAME_DATA_T;
-
-typedef struct tagMxdcPrintTicketData {
- DWORD dwDataSize;
- BYTE bData[1];
-} MXDC_PRINTTICKET_DATA_T, *P_MXDC_PRINTTICKET_DATA_T;
-
-typedef struct tagMxdcPrintTicketEscape {
- MXDC_ESCAPE_HEADER_T mxdcEscape;
- MXDC_PRINTTICKET_DATA_T printTicketData;
-} MXDC_PRINTTICKET_ESCAPE_T, *P_MXDC_PRINTTICKET_ESCAPE_T;
-
-typedef struct tagMxdcS0PageData {
- DWORD dwSize;
- BYTE bData[1];
-} MXDC_S0PAGE_DATA_T, *P_MXDC_S0PAGE_DATA_T;
-
-typedef struct tagMxdcS0PagePassthroughEscape {
- MXDC_ESCAPE_HEADER_T mxdcEscape;
- MXDC_S0PAGE_DATA_T xpsS0PageData;
-} MXDC_S0PAGE_PASSTHROUGH_ESCAPE_T, *P_MXDC_S0PAGE_PASSTHROUGH_ESCAPE_T;
-
-typedef struct tagMxdcXpsS0PageResource {
- DWORD dwSize;
- DWORD dwResourceType;
- BYTE szUri[MAX_PATH];
- DWORD dwDataSize;
- BYTE bData[1];
-} MXDC_XPS_S0PAGE_RESOURCE_T, *P_MXDC_XPS_S0PAGE_RESOURCE_T;
-
-typedef struct tagMxdcS0PageResourceEscape {
- MXDC_ESCAPE_HEADER_T mxdcEscape;
- MXDC_XPS_S0PAGE_RESOURCE_T xpsS0PageResourcePassthrough;
-} MXDC_S0PAGE_RESOURCE_ESCAPE_T, *P_MXDC_S0PAGE_RESOURCE_ESCAPE_T;
-
-typedef enum tagMxdcS0PageEnums {
- MXDC_RESOURCE_TTF,
- MXDC_RESOURCE_JPEG,
- MXDC_RESOURCE_PNG,
- MXDC_RESOURCE_TIFF,
- MXDC_RESOURCE_WDP,
- MXDC_RESOURCE_DICTIONARY,
- MXDC_RESOURCE_ICC_PROFILE,
- MXDC_RESOURCE_JPEG_THUMBNAIL,
- MXDC_RESOURCE_PNG_THUMBNAIL,
- MXDC_RESOURCE_MAX
-} MXDC_S0_PAGE_ENUMS;
+#include <pshpack1.h>
+
+ typedef enum tagMxdcS0PageEnums {
+ MXDC_RESOURCE_TTF = 0,
+ MXDC_RESOURCE_JPEG = 1,
+ MXDC_RESOURCE_PNG = 2,
+ MXDC_RESOURCE_TIFF = 3,
+ MXDC_RESOURCE_WDP = 4,
+ MXDC_RESOURCE_DICTIONARY = 5,
+ MXDC_RESOURCE_ICC_PROFILE = 6,
+ MXDC_RESOURCE_JPEG_THUMBNAIL = 7,
+ MXDC_RESOURCE_PNG_THUMBNAIL = 8,
+ MXDC_RESOURCE_MAX
+ } MXDC_S0_PAGE_ENUMS;
+
+#if NTDDI_VERSION >= 0x06000100
+ typedef enum tagMxdcLandscapeRotationEnums {
+ MXDC_LANDSCAPE_ROTATE_NONE = 0,
+ MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_90_DEGREES = 90,
+ MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES = -90
+ } MXDC_LANDSCAPE_ROTATION_ENUMS;
+
+ typedef enum tagMxdcImageTypeEnums {
+ MXDC_IMAGETYPE_JPEGHIGH_COMPRESSION = 1,
+ MXDC_IMAGETYPE_JPEGMEDIUM_COMPRESSION = 2,
+ MXDC_IMAGETYPE_JPEGLOW_COMPRESSION = 3,
+ MXDC_IMAGETYPE_PNG = 4
+ } MXDC_IMAGE_TYPE_ENUMS;
+#endif
+
+ typedef struct tagMxdcEscapeHeader {
+ ULONG cbInput;
+ ULONG cbOutput;
+ ULONG opCode;
+ } MXDC_ESCAPE_HEADER_T, *P_MXDC_ESCAPE_HEADER_T;
+
+ typedef struct tagMxdcGetFileNameData {
+ ULONG cbOutput;
+ wchar_t wszData[1];
+ } MXDC_GET_FILENAME_DATA_T, *P_MXDC_GET_FILENAME_DATA_T;
+
+ typedef struct tagMxdcS0PageData {
+ DWORD dwSize;
+ BYTE bData[1];
+ } MXDC_S0PAGE_DATA_T, *P_MXDC_S0PAGE_DATA_T;
+
+ typedef struct tagMxdcXpsS0PageResource {
+ DWORD dwSize;
+ DWORD dwResourceType;
+ BYTE szUri[MAX_PATH];
+ DWORD dwDataSize;
+ BYTE bData[1];
+ } MXDC_XPS_S0PAGE_RESOURCE_T, *P_MXDC_XPS_S0PAGE_RESOURCE_T;
+
+ typedef struct tagMxdcPrintTicketPassthrough {
+ DWORD dwDataSize;
+ BYTE bData[1];
+ } MXDC_PRINTTICKET_DATA_T, *P_MXDC_PRINTTICKET_DATA_T;
+
+ typedef struct tagMxdcPrintTicketEscape {
+ MXDC_ESCAPE_HEADER_T mxdcEscape;
+ MXDC_PRINTTICKET_DATA_T printTicketData;
+ } MXDC_PRINTTICKET_ESCAPE_T, *P_MXDC_PRINTTICKET_ESCAPE_T;
+
+ typedef struct tagMxdcS0PagePassthroughEscape {
+ MXDC_ESCAPE_HEADER_T mxdcEscape;
+ MXDC_S0PAGE_DATA_T xpsS0PageData;
+ } MXDC_S0PAGE_PASSTHROUGH_ESCAPE_T, *P_MXDC_S0PAGE_PASSTHROUGH_ESCAPE_T;
+
+ typedef struct tagMxdcS0PageResourceEscape {
+ MXDC_ESCAPE_HEADER_T mxdcEscape;
+ MXDC_XPS_S0PAGE_RESOURCE_T xpsS0PageResourcePassthrough;
+ } MXDC_S0PAGE_RESOURCE_ESCAPE_T, *P_MXDC_S0PAGE_RESOURCE_ESCAPE_T;
+
+#include <poppack.h>
+
+#define MXDC_ESCAPE 4122
+
+#define MXDCOP_GET_FILENAME 14
+#define MXDCOP_PRINTTICKET_FIXED_DOC_SEQ 22
+#define MXDCOP_PRINTTICKET_FIXED_DOC 24
+#define MXDCOP_PRINTTICKET_FIXED_PAGE 26
+#define MXDCOP_SET_S0PAGE 28
+#define MXDCOP_SET_S0PAGE_RESOURCE 30
+#define MXDCOP_SET_XPSPASSTHRU_MODE 32
+
+#if NTDDI_VERSION >= 0x06000100
+#define MXDC_IMAGEABLE_AREA_PROP_NAME_WSTR (L"MxdcImageableArea")
+#define MXDC_IMAGE_COMPRESSION_TYPE_PROP_NAME_WSTR
(L"MxdcImageCompressionType")
+#define MXDC_DOTS_PER_INCH_PROP_NAME_WSTR (L"MxdcDotsPerInch")
+#define MXDC_LANDSCAPE_ROTATION_PROP_NAME_WSTR (L"MxdcLandscapeRotation")
+#endif
+
+#if NTDDI_VERSION >= 0x06000100
+ HRESULT WINAPI MxdcGetPDEVAdjustment (HANDLE hPrinter, ULONG cbDevMode,
const DEVMODE *pDevMode, ULONG cbIn, const VOID *pvIn, ULONG
cbPrintPropertiesCollection, PrintPropertiesCollection
*pPrintPropertiesCollection);
+#endif
#ifdef __cplusplus
}
#endif
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_MXDC*/
+#endif
+#endif
--
1.7.9
From 4c6a85e6fd024d2b76324a1ed29de44e84e38b51 Mon Sep 17 00:00:00 2001
From: Kai Tietz <ktiet...@googlemail.com>
Date: Mon, 25 Aug 2014 12:44:32 +0200
Subject: Added winapifamily-check, and made COMPILE_MULTIMON_STUBS=1 mode
compilable.
---
mingw-w64-headers/include/multimon.h | 334 +++++++++++++++++-----------------
1 files changed, 166 insertions(+), 168 deletions(-)
diff --git a/mingw-w64-headers/include/multimon.h
b/mingw-w64-headers/include/multimon.h
index eb24cf2..4ad42aa 100644
--- a/mingw-w64-headers/include/multimon.h
+++ b/mingw-w64-headers/include/multimon.h
@@ -1,16 +1,18 @@
/**
- * This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
*/
-#include <_mingw_unicode.h>
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
#ifdef __cplusplus
extern "C" {
#endif
#ifndef SM_CMONITORS
+
#define SM_XVIRTUALSCREEN 76
#define SM_YVIRTUALSCREEN 77
#define SM_CXVIRTUALSCREEN 78
@@ -43,24 +45,31 @@ extern "C" {
typedef struct tagMONITORINFOEXW : public tagMONITORINFO {
WCHAR szDevice[CCHDEVICENAME];
} MONITORINFOEXW,*LPMONITORINFOEXW;
-
- __MINGW_TYPEDEF_AW(MONITORINFOEX)
- __MINGW_TYPEDEF_AW(LPMONITORINFOEX)
#else
typedef struct tagMONITORINFOEXA {
- MONITORINFO;
+ __C89_NAMELESS struct {
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
+ }; /* MONITORINFO */;
CHAR szDevice[CCHDEVICENAME];
} MONITORINFOEXA,*LPMONITORINFOEXA;
typedef struct tagMONITORINFOEXW {
- MONITORINFO;
+ __C89_NAMELESS struct {
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
+ }; /* MONITORINFO */;
WCHAR szDevice[CCHDEVICENAME];
} MONITORINFOEXW,*LPMONITORINFOEXW;
+#endif
__MINGW_TYPEDEF_AW(MONITORINFOEX)
__MINGW_TYPEDEF_AW(LPMONITORINFOEX)
-#endif
- typedef WINBOOL (CALLBACK *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
+ typedef WINBOOL (CALLBACK *MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM);
#ifndef DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
typedef struct _DISPLAY_DEVICEA {
@@ -105,136 +114,148 @@ extern "C" {
#ifndef MULTIMON_FNS_DEFINED
int (WINAPI *g_pfnGetSystemMetrics)(int) = NULL;
- HMONITOR (WINAPI *g_pfnMonitorFromWindow)(HWND,DWORD) = NULL;
- HMONITOR (WINAPI *g_pfnMonitorFromRect)(LPCRECT,DWORD) = NULL;
- HMONITOR (WINAPI *g_pfnMonitorFromPoint)(POINT,DWORD) = NULL;
- WINBOOL (WINAPI *g_pfnGetMonitorInfo)(HMONITOR,LPMONITORINFO) = NULL;
- WINBOOL (WINAPI
*g_pfnEnumDisplayMonitors)(HDC,LPCRECT,MONITORENUMPROC,LPARAM) = NULL;
- WINBOOL (WINAPI *g_pfnEnumDisplayDevices)(PVOID,DWORD,PDISPLAY_DEVICE,DWORD)
= NULL;
+ HMONITOR (WINAPI *g_pfnMonitorFromWindow)(HWND, DWORD) = NULL;
+ HMONITOR (WINAPI *g_pfnMonitorFromRect)(LPCRECT, DWORD) = NULL;
+ HMONITOR (WINAPI *g_pfnMonitorFromPoint)(POINT, DWORD) = NULL;
+ WINBOOL (WINAPI *g_pfnGetMonitorInfo)(HMONITOR, LPMONITORINFO) = NULL;
+ WINBOOL (WINAPI *g_pfnEnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC,
LPARAM) = NULL;
+ WINBOOL (WINAPI *g_pfnEnumDisplayDevices)(PVOID, DWORD, PDISPLAY_DEVICE,
DWORD) = NULL;
WINBOOL g_fMultiMonInitDone = FALSE;
WINBOOL g_fMultimonPlatformNT = FALSE;
#endif
WINBOOL IsPlatformNT() {
- OSVERSIONINFOA osvi = {0};
- osvi.dwOSVersionInfoSize = sizeof(osvi);
- GetVersionExA((OSVERSIONINFOA*)&osvi);
- return (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId);
+ OSVERSIONINFOA oi = { 0 };
+
+ oi.dwOSVersionInfoSize = sizeof (osvi);
+ GetVersionExA ((OSVERSIONINFOA *) &oi);
+ return (oi.dwPlatformId == VER_PLATFORM_WIN32_NT);
}
WINBOOL InitMultipleMonitorStubs(void) {
- HMODULE hUser32;
- if(g_fMultiMonInitDone) return g_pfnGetMonitorInfo!=NULL;
- g_fMultimonPlatformNT = IsPlatformNT();
- hUser32 = GetModuleHandle(TEXT("USER32"));
- if(hUser32 &&
- (*(FARPROC*)&g_pfnGetSystemMetrics =
GetProcAddress(hUser32,"GetSystemMetrics"))!=NULL &&
- (*(FARPROC*)&g_pfnMonitorFromWindow =
GetProcAddress(hUser32,"MonitorFromWindow"))!=NULL &&
- (*(FARPROC*)&g_pfnMonitorFromRect =
GetProcAddress(hUser32,"MonitorFromRect"))!=NULL &&
- (*(FARPROC*)&g_pfnMonitorFromPoint =
GetProcAddress(hUser32,"MonitorFromPoint"))!=NULL &&
- (*(FARPROC*)&g_pfnEnumDisplayMonitors =
GetProcAddress(hUser32,"EnumDisplayMonitors"))!=NULL &&
- (*(FARPROC*)&g_pfnEnumDisplayDevices =
GetProcAddress(hUser32,"EnumDisplayDevices" __MINGW_PROCNAMEEXT_AW))!=NULL &&
- (*(FARPROC*)&g_pfnGetMonitorInfo = g_fMultimonPlatformNT ?
GetProcAddress(hUser32,"GetMonitorInfo" __MINGW_PROCNAMEEXT_AW) :
- GetProcAddress(hUser32,"GetMonitorInfoA"))!=NULL
- ) {
- g_fMultiMonInitDone = TRUE;
- return TRUE;
- } else {
- g_pfnGetSystemMetrics = NULL;
- g_pfnMonitorFromWindow = NULL;
- g_pfnMonitorFromRect = NULL;
- g_pfnMonitorFromPoint = NULL;
- g_pfnGetMonitorInfo = NULL;
- g_pfnEnumDisplayMonitors = NULL;
- g_pfnEnumDisplayDevices = NULL;
+ HMODULE h;
+
+ if (g_fMultiMonInitDone)
+ return g_pfnGetMonitorInfo != NULL;
+
+ g_fMultimonPlatformNT = IsPlatformNT ();
+ h = GetModuleHandle (TEXT ("USER32"));
+
+ if (h
+ && (*((FARPROC *) &g_pfnGetSystemMetrics) = GetProcAddress (h,
"GetSystemMetrics")) != NULL
+ && (*((FARPROC *) &g_pfnMonitorFromWindow) = GetProcAddress (h,
"MonitorFromWindow")) != NULL
+ && (*((FARPROC *) &g_pfnMonitorFromRect) = GetProcAddress (h,
"MonitorFromRect")) != NULL
+ && (*((FARPROC *) &g_pfnMonitorFromPoint) = GetProcAddress (h,
"MonitorFromPoint")) != NULL
+ && (*((FARPROC *) &g_pfnEnumDisplayMonitors) = GetProcAddress (h,
"EnumDisplayMonitors")) != NULL
+#ifdef UNICODE
+ && (*((FARPROC *) &g_pfnEnumDisplayDevices) = GetProcAddress (h,
"EnumDisplayDevicesW")) != NULL
+ && (*((FARPROC *) &g_pfnGetMonitorInfo) = (g_fMultimonPlatformNT ?
GetProcAddress (h, "GetMonitorInfoW") : GetProcAddress (h, "GetMonitorInfoA")))
!= NULL
+#else
+ && (*((FARPROC *) &g_pfnGetMonitorInfo) = GetProcAddress (h,
"GetMonitorInfoA")) != NULL
+ && (*((FARPROC *) &g_pfnEnumDisplayDevices) = GetProcAddress (h,
"EnumDisplayDevicesA")) != NULL
+#endif
+ ) {
g_fMultiMonInitDone = TRUE;
- return FALSE;
+ return TRUE;
}
+
+ g_pfnGetSystemMetrics = NULL;
+ g_pfnMonitorFromWindow = NULL;
+ g_pfnMonitorFromRect = NULL;
+ g_pfnMonitorFromPoint = NULL;
+ g_pfnGetMonitorInfo = NULL;
+ g_pfnEnumDisplayMonitors = NULL;
+ g_pfnEnumDisplayDevices = NULL;
+ g_fMultiMonInitDone = TRUE;
+ return FALSE;
}
- int WINAPI xGetSystemMetrics(int nIndex) {
- if(InitMultipleMonitorStubs()) return g_pfnGetSystemMetrics(nIndex);
- switch(nIndex) {
- case SM_CMONITORS:
- case SM_SAMEDISPLAYFORMAT:
- return 1;
- case SM_XVIRTUALSCREEN:
- case SM_YVIRTUALSCREEN:
- return 0;
- case SM_CXVIRTUALSCREEN:
- nIndex = SM_CXSCREEN;
- break;
- case SM_CYVIRTUALSCREEN:
- nIndex = SM_CYSCREEN;
- break;
+ int WINAPI xGetSystemMetrics(int n) {
+ if (InitMultipleMonitorStubs ())
+ return g_pfnGetSystemMetrics (n);
+
+ switch (n) {
+ case SM_CMONITORS:
+ case SM_SAMEDISPLAYFORMAT:
+ return 1;
+ case SM_XVIRTUALSCREEN:
+ case SM_YVIRTUALSCREEN:
+ return 0;
+ case SM_CXVIRTUALSCREEN:
+ return GetSystemMetrics (SM_CXSCREEN);
+ case SM_CYVIRTUALSCREEN:
+ return GetSystemMetrics (SM_CYSCREEN);
+ default:
+ break;
}
- return GetSystemMetrics(nIndex);
+
+ return GetSystemMetrics (n);
}
#define xPRIMARY_MONITOR ((HMONITOR)0x12340042)
- HMONITOR WINAPI xMonitorFromPoint(POINT ptScreenCoords,DWORD dwFlags) {
- if(InitMultipleMonitorStubs()) return
g_pfnMonitorFromPoint(ptScreenCoords,dwFlags);
- if((dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) ||
- ((ptScreenCoords.x >= 0) &&
- (ptScreenCoords.x < GetSystemMetrics(SM_CXSCREEN)) &&
- (ptScreenCoords.y >= 0) &&
- (ptScreenCoords.y < GetSystemMetrics(SM_CYSCREEN))))
- {
+ HMONITOR WINAPI xMonitorFromPoint (POINT pt, DWORD flags) {
+ if (InitMultipleMonitorStubs ())
+ return g_pfnMonitorFromPoint (pt, flags);
+
+ if ((flags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) != 0
+ || (pt.x >= 0 && pt.y >= 0 && pt.x < GetSystemMetrics (SM_CXSCREEN) &&
pt.y < GetSystemMetrics (SM_CYSCREEN)))
return xPRIMARY_MONITOR;
- }
+
return NULL;
}
- HMONITOR WINAPI xMonitorFromRect(LPCRECT lprcScreenCoords,DWORD dwFlags)
- {
- if(InitMultipleMonitorStubs()) return
g_pfnMonitorFromRect(lprcScreenCoords,dwFlags);
- if((dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) ||
- ((lprcScreenCoords->right > 0) &&
- (lprcScreenCoords->bottom > 0) &&
- (lprcScreenCoords->left < GetSystemMetrics(SM_CXSCREEN)) &&
- (lprcScreenCoords->top < GetSystemMetrics(SM_CYSCREEN))))
- {
+ HMONITOR WINAPI xMonitorFromRect (LPCRECT pr, DWORD flags) {
+ if (InitMultipleMonitorStubs ())
+ return g_pfnMonitorFromRect (pr, flags);
+
+ if ((flags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) != 0
+ || (pr->right > 0 && pr->bottom > 0 && pr->left < GetSystemMetrics
(SM_CXSCREEN) && pr->top < GetSystemMetrics (SM_CYSCREEN)))
return xPRIMARY_MONITOR;
- }
+
return NULL;
}
- HMONITOR WINAPI xMonitorFromWindow(HWND hWnd,DWORD dwFlags) {
+ HMONITOR WINAPI xMonitorFromWindow (HWND hw, DWORD flags) {
WINDOWPLACEMENT wp;
- if(InitMultipleMonitorStubs()) return g_pfnMonitorFromWindow(hWnd,dwFlags);
- if(dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) return
xPRIMARY_MONITOR;
- if(IsIconic(hWnd) ? GetWindowPlacement(hWnd,&wp) :
GetWindowRect(hWnd,&wp.rcNormalPosition)) return
xMonitorFromRect(&wp.rcNormalPosition,dwFlags);
+
+ if (InitMultipleMonitorStubs ())
+ return g_pfnMonitorFromWindow (hw, flags);
+
+ if ((flags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) != 0)
+ return xPRIMARY_MONITOR;
+
+ if ((IsIconic (hw) ? GetWindowPlacement (hw, &wp) : GetWindowRect (hw,
&wp.rcNormalPosition)) != 0)
+ return xMonitorFromRect (&wp.rcNormalPosition, flags);
+
return NULL;
}
- WINBOOL WINAPI xGetMonitorInfo(HMONITOR hMonitor,LPMONITORINFO
lpMonitorInfo) {
- RECT rcWork;
- if(InitMultipleMonitorStubs()) {
- WINBOOL f = g_pfnGetMonitorInfo(hMonitor,lpMonitorInfo);
-#if defined(UNICODE)
- if(f && !g_fMultimonPlatformNT && (lpMonitorInfo->cbSize >=
sizeof(MONITORINFOEX))) {
-
MultiByteToWideChar(CP_ACP,0,(LPSTR)((MONITORINFOEX*)lpMonitorInfo)->szDevice,-1,((MONITORINFOEX*)lpMonitorInfo)->szDevice,(sizeof(((MONITORINFOEX*)lpMonitorInfo)->szDevice)/sizeof(TCHAR)));
- }
+ WINBOOL WINAPI xGetMonitorInfo (HMONITOR hmon, LPMONITORINFO pmi) {
+ RECT r;
+ WINBOOL f;
+
+ if (InitMultipleMonitorStubs ()) {
+ f = g_pfnGetMonitorInfo (hmon, pmi);
+#ifdef UNICODE
+ if (f && !g_fMultimonPlatformNT && pmi->cbSize >= sizeof (MONITORINFOEX))
+ MultiByteToWideChar (CP_ACP, 0, (LPSTR) ((MONITORINFOEX
*)pmi)->szDevice, -1, ((MONITORINFOEX *)pmi)->szDevice, (sizeof
(((MONITORINFOEX *)pmi)->szDevice) / 2));
#endif
return f;
}
- if((hMonitor==xPRIMARY_MONITOR) &&
- lpMonitorInfo &&
- (lpMonitorInfo->cbSize >= sizeof(MONITORINFO)) &&
- SystemParametersInfoA(SPI_GETWORKAREA,0,&rcWork,0))
- {
- 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;
- if(lpMonitorInfo->cbSize >= sizeof(MONITORINFOEX)) {
-#if defined(UNICODE)
-
MultiByteToWideChar(CP_ACP,0,"DISPLAY",-1,((MONITORINFOEX*)lpMonitorInfo)->szDevice,(sizeof(((MONITORINFOEX*)lpMonitorInfo)->szDevice)/sizeof(TCHAR)));
+
+ if ((hmon == xPRIMARY_MONITOR) && pmi &&(pmi->cbSize >= sizeof
(MONITORINFO)) && SystemParametersInfoA (SPI_GETWORKAREA, 0,&r, 0)) {
+ pmi->rcMonitor.left = 0;
+ pmi->rcMonitor.top = 0;
+ pmi->rcMonitor.right = GetSystemMetrics (SM_CXSCREEN);
+ pmi->rcMonitor.bottom = GetSystemMetrics (SM_CYSCREEN);
+ pmi->rcWork = r;
+ pmi->dwFlags = MONITORINFOF_PRIMARY;
+ if (pmi->cbSize >= sizeof (MONITORINFOEX)) {
+#ifdef UNICODE
+ MultiByteToWideChar (CP_ACP, 0, "DISPLAY", -1, ((MONITORINFOEX
*)pmi)->szDevice, (sizeof (((MONITORINFOEX *)pmi)->szDevice) / 2));
#else
-
lstrcpyn(((MONITORINFOEX*)lpMonitorInfo)->szDevice,TEXT("DISPLAY"),(sizeof(((MONITORINFOEX*)lpMonitorInfo)->szDevice)/sizeof(TCHAR)));
+ lstrcpyn (((MONITORINFOEX *)pmi)->szDevice, "DISPLAY", sizeof
(((MONITORINFOEX *)pmi)->szDevice));
#endif
}
@@ -244,95 +265,70 @@ extern "C" {
return FALSE;
}
- WINBOOL WINAPI
- xEnumDisplayMonitors(HDC hdcOptionalForPainting,LPCRECT
lprcEnumMonitorsThatIntersect,MONITORENUMPROC lpfnEnumProc,LPARAM dwData)
- {
- RECT rcLimit;
+ WINBOOL WINAPI xEnumDisplayMonitors (HDC hdcOptionalForPainting, LPCRECT
lprcEnumMonitorsThatIntersect, MONITORENUMPROC lpfnEnumProc, LPARAM dwData) {
+ RECT rcLimit, rcClip;
+ POINT ptOrg;
- if(InitMultipleMonitorStubs()) {
- return
g_pfnEnumDisplayMonitors(hdcOptionalForPainting,lprcEnumMonitorsThatIntersect,lpfnEnumProc,dwData);
- }
+ if (InitMultipleMonitorStubs ())
+ return g_pfnEnumDisplayMonitors (hdcOptionalForPainting,
lprcEnumMonitorsThatIntersect, lpfnEnumProc, dwData);
- if(!lpfnEnumProc)
+ if (!lpfnEnumProc)
return FALSE;
- rcLimit.left = 0;
- rcLimit.top = 0;
- rcLimit.right = GetSystemMetrics(SM_CXSCREEN);
- rcLimit.bottom = GetSystemMetrics(SM_CYSCREEN);
-
- if(hdcOptionalForPainting)
- {
- RECT rcClip;
- POINT ptOrg;
+ rcLimit.left = rcLimit.top = 0;
+ rcLimit.right = GetSystemMetrics (SM_CXSCREEN);
+ rcLimit.bottom = GetSystemMetrics (SM_CYSCREEN);
- switch (GetClipBox(hdcOptionalForPainting,&rcClip))
- {
+ if (hdcOptionalForPainting) {
+ switch (GetClipBox (hdcOptionalForPainting,&rcClip)) {
default:
- if(!GetDCOrgEx(hdcOptionalForPainting,&ptOrg))
+ if (!GetDCOrgEx (hdcOptionalForPainting,&ptOrg))
return FALSE;
- OffsetRect(&rcLimit,-ptOrg.x,-ptOrg.y);
- if(IntersectRect(&rcLimit,&rcLimit,&rcClip) &&
- (!lprcEnumMonitorsThatIntersect ||
- IntersectRect(&rcLimit,&rcLimit,lprcEnumMonitorsThatIntersect))) {
+ OffsetRect (&rcLimit, -ptOrg.x, -ptOrg.y);
- break;
- }
+ if (IntersectRect (&rcLimit, &rcLimit, &rcClip)
+ && (!lprcEnumMonitorsThatIntersect || IntersectRect (&rcLimit,
&rcLimit, lprcEnumMonitorsThatIntersect)))
+ break;
case NULLREGION:
return TRUE;
case ERROR:
return FALSE;
}
- } else {
- if(lprcEnumMonitorsThatIntersect &&
- !IntersectRect(&rcLimit,&rcLimit,lprcEnumMonitorsThatIntersect)) {
-
- return TRUE;
- }
- }
+ } else if (lprcEnumMonitorsThatIntersect && !IntersectRect (&rcLimit,
&rcLimit, lprcEnumMonitorsThatIntersect))
+ return TRUE;
- return
lpfnEnumProc(xPRIMARY_MONITOR,hdcOptionalForPainting,&rcLimit,dwData);
+ return lpfnEnumProc (xPRIMARY_MONITOR, hdcOptionalForPainting, &rcLimit,
dwData);
}
- WINBOOL WINAPI
- xEnumDisplayDevices(PVOID Unused,DWORD iDevNum,PDISPLAY_DEVICE
lpDisplayDevice,DWORD dwFlags)
- {
- if(InitMultipleMonitorStubs())
- return g_pfnEnumDisplayDevices(Unused,iDevNum,lpDisplayDevice,dwFlags);
-
- if(Unused!=NULL)
- return FALSE;
-
- if(iDevNum!=0)
- return FALSE;
-
- if(!lpDisplayDevice || lpDisplayDevice->cb < sizeof(DISPLAY_DEVICE))
+ WINBOOL WINAPI xEnumDisplayDevices (PVOID Unused, DWORD iDevNum,
PDISPLAY_DEVICE lpDisplayDevice, DWORD flags) {
+ if (InitMultipleMonitorStubs ())
+ return g_pfnEnumDisplayDevices (Unused, iDevNum, lpDisplayDevice, flags);
+ if (Unused || iDevNum || lpDisplayDevice == NULL || lpDisplayDevice->cb <
sizeof (DISPLAY_DEVICE))
return FALSE;
-
-#if defined(UNICODE)
-
MultiByteToWideChar(CP_ACP,0,"DISPLAY",-1,lpDisplayDevice->DeviceName,(sizeof(lpDisplayDevice->DeviceName)/sizeof(TCHAR)));
-
MultiByteToWideChar(CP_ACP,0,"DISPLAY",-1,lpDisplayDevice->DeviceString,(sizeof(lpDisplayDevice->DeviceString)/sizeof(TCHAR)));
+#ifdef UNICODE
+ MultiByteToWideChar (CP_ACP, 0, "DISPLAY", -1,
lpDisplayDevice->DeviceName, (sizeof (lpDisplayDevice->DeviceName) / 2));
+ MultiByteToWideChar (CP_ACP, 0, "DISPLAY", -1,
lpDisplayDevice->DeviceString, (sizeof (lpDisplayDevice->DeviceString) / 2));
#else
-
lstrcpyn((LPTSTR)lpDisplayDevice->DeviceName,TEXT("DISPLAY"),(sizeof(lpDisplayDevice->DeviceName)/sizeof(TCHAR)));
-
lstrcpyn((LPTSTR)lpDisplayDevice->DeviceString,TEXT("DISPLAY"),(sizeof(lpDisplayDevice->DeviceString)/sizeof(TCHAR)));
+ lstrcpyn ((LPTSTR)lpDisplayDevice->DeviceName, "DISPLAY", sizeof
(lpDisplayDevice->DeviceName));
+ lstrcpyn ((LPTSTR)lpDisplayDevice->DeviceString, "DISPLAY", sizeof
(lpDisplayDevice->DeviceString));
#endif
lpDisplayDevice->StateFlags = DISPLAY_DEVICE_ATTACHED_TO_DESKTOP |
DISPLAY_DEVICE_PRIMARY_DEVICE;
+
return TRUE;
}
#undef xPRIMARY_MONITOR
#undef COMPILE_MULTIMON_STUBS
#else
-
- extern int WINAPI xGetSystemMetrics(int);
- extern HMONITOR WINAPI xMonitorFromWindow(HWND,DWORD);
- extern HMONITOR WINAPI xMonitorFromRect(LPCRECT,DWORD);
- extern HMONITOR WINAPI xMonitorFromPoint(POINT,DWORD);
- extern WINBOOL WINAPI xGetMonitorInfo(HMONITOR,LPMONITORINFO);
- extern WINBOOL WINAPI
xEnumDisplayMonitors(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
- extern WINBOOL WINAPI xEnumDisplayDevices(PVOID,DWORD,PDISPLAY_DEVICE,DWORD);
+ extern int WINAPI xGetSystemMetrics (int);
+ extern HMONITOR WINAPI xMonitorFromWindow (HWND, DWORD);
+ extern HMONITOR WINAPI xMonitorFromRect (LPCRECT, DWORD);
+ extern HMONITOR WINAPI xMonitorFromPoint (POINT, DWORD);
+ extern WINBOOL WINAPI xGetMonitorInfo (HMONITOR, LPMONITORINFO);
+ extern WINBOOL WINAPI xEnumDisplayMonitors (HDC, LPCRECT, MONITORENUMPROC,
LPARAM);
+ extern WINBOOL WINAPI xEnumDisplayDevices (PVOID, DWORD, PDISPLAY_DEVICE,
DWORD);
#endif
#define GetSystemMetrics xGetSystemMetrics
@@ -346,3 +342,5 @@ extern "C" {
#ifdef __cplusplus
}
#endif
+
+#endif
--
1.7.9
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public