forked from bartvdbraak/blender
Windows: Clean-up win 8/8.1 API use
For 2.93 we bumped the minimum windows requirement to windows 8.1, but did not do any clean-up of any win 8/8.1 API usage we dynamically accessed though LoadLibrary/GetProcAddress. This patch bumps _WIN32_WINNT to 0x0603 (win 8.1) and cleans up any API use that was accessed in a more convoluted way than necessary Differential Revision: https://developer.blender.org/D11331 Reviewed by: harley, nicholas_rishel
This commit is contained in:
parent
d67c13ca76
commit
aebeb85fe0
@ -119,7 +119,7 @@ string(APPEND CMAKE_MODULE_LINKER_FLAGS " /SAFESEH:NO /ignore:4099")
|
||||
list(APPEND PLATFORM_LINKLIBS
|
||||
ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 Comctl32 version
|
||||
advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp Shlwapi
|
||||
pathcch
|
||||
pathcch Shcore
|
||||
)
|
||||
|
||||
if(WITH_INPUT_IME)
|
||||
@ -144,8 +144,8 @@ add_definitions(-D_ALLOW_KEYWORD_MACROS)
|
||||
# that both /GR and /GR- are specified.
|
||||
remove_cc_flag("/GR")
|
||||
|
||||
# We want to support Windows 7 level ABI
|
||||
add_definitions(-D_WIN32_WINNT=0x601)
|
||||
# Make the Windows 8.1 API available for use.
|
||||
add_definitions(-D_WIN32_WINNT=0x603)
|
||||
include(build_files/cmake/platform/platform_win32_bundle_crt.cmake)
|
||||
remove_cc_flag("/MDd" "/MD" "/Zi")
|
||||
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <commctrl.h>
|
||||
#include <psapi.h>
|
||||
#include <shellapi.h>
|
||||
#include <shellscalingapi.h>
|
||||
#include <shlobj.h>
|
||||
#include <tlhelp32.h>
|
||||
#include <windowsx.h>
|
||||
@ -97,41 +98,6 @@
|
||||
# define VK_GR_LESS 0xE2
|
||||
#endif // VK_GR_LESS
|
||||
|
||||
#ifndef VK_MEDIA_NEXT_TRACK
|
||||
# define VK_MEDIA_NEXT_TRACK 0xB0
|
||||
#endif // VK_MEDIA_NEXT_TRACK
|
||||
#ifndef VK_MEDIA_PREV_TRACK
|
||||
# define VK_MEDIA_PREV_TRACK 0xB1
|
||||
#endif // VK_MEDIA_PREV_TRACK
|
||||
#ifndef VK_MEDIA_STOP
|
||||
# define VK_MEDIA_STOP 0xB2
|
||||
#endif // VK_MEDIA_STOP
|
||||
#ifndef VK_MEDIA_PLAY_PAUSE
|
||||
# define VK_MEDIA_PLAY_PAUSE 0xB3
|
||||
#endif // VK_MEDIA_PLAY_PAUSE
|
||||
|
||||
// Window message newer than Windows 7
|
||||
#ifndef WM_DPICHANGED
|
||||
# define WM_DPICHANGED 0x02E0
|
||||
#endif // WM_DPICHANGED
|
||||
|
||||
// WM_POINTER API messages minimum Windows 7
|
||||
#ifndef WM_POINTERENTER
|
||||
# define WM_POINTERENTER 0x0249
|
||||
#endif // WM_POINTERENTER
|
||||
#ifndef WM_POINTERDOWN
|
||||
# define WM_POINTERDOWN 0x0246
|
||||
#endif // WM_POINTERDOWN
|
||||
#ifndef WM_POINTERUPDATE
|
||||
# define WM_POINTERUPDATE 0x0245
|
||||
#endif // WM_POINTERUPDATE
|
||||
#ifndef WM_POINTERUP
|
||||
# define WM_POINTERUP 0x0247
|
||||
#endif // WM_POINTERUP
|
||||
#ifndef WM_POINTERLEAVE
|
||||
# define WM_POINTERLEAVE 0x024A
|
||||
#endif // WM_POINTERLEAVE
|
||||
|
||||
/* Workaround for some laptop touchpads, some of which seems to
|
||||
* have driver issues which makes it so window function receives
|
||||
* the message, but PeekMessage doesn't pick those messages for
|
||||
@ -173,24 +139,6 @@ static void initRawInput()
|
||||
#undef DEVICE_COUNT
|
||||
}
|
||||
|
||||
#ifndef DPI_ENUMS_DECLARED
|
||||
typedef enum PROCESS_DPI_AWARENESS {
|
||||
PROCESS_DPI_UNAWARE = 0,
|
||||
PROCESS_SYSTEM_DPI_AWARE = 1,
|
||||
PROCESS_PER_MONITOR_DPI_AWARE = 2
|
||||
} PROCESS_DPI_AWARENESS;
|
||||
|
||||
typedef enum MONITOR_DPI_TYPE {
|
||||
MDT_EFFECTIVE_DPI = 0,
|
||||
MDT_ANGULAR_DPI = 1,
|
||||
MDT_RAW_DPI = 2,
|
||||
MDT_DEFAULT = MDT_EFFECTIVE_DPI
|
||||
} MONITOR_DPI_TYPE;
|
||||
|
||||
# define USER_DEFAULT_SCREEN_DPI 96
|
||||
|
||||
# define DPI_ENUMS_DECLARED
|
||||
#endif
|
||||
typedef HRESULT(API *GHOST_WIN32_SetProcessDpiAwareness)(PROCESS_DPI_AWARENESS);
|
||||
typedef BOOL(API *GHOST_WIN32_EnableNonClientDpiScaling)(HWND);
|
||||
|
||||
@ -205,15 +153,7 @@ GHOST_SystemWin32::GHOST_SystemWin32()
|
||||
|
||||
// Tell Windows we are per monitor DPI aware. This disables the default
|
||||
// blurry scaling and enables WM_DPICHANGED to allow us to draw at proper DPI.
|
||||
HMODULE m_shcore = ::LoadLibrary("Shcore.dll");
|
||||
if (m_shcore) {
|
||||
GHOST_WIN32_SetProcessDpiAwareness fpSetProcessDpiAwareness =
|
||||
(GHOST_WIN32_SetProcessDpiAwareness)::GetProcAddress(m_shcore, "SetProcessDpiAwareness");
|
||||
|
||||
if (fpSetProcessDpiAwareness) {
|
||||
fpSetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
|
||||
}
|
||||
}
|
||||
SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
|
||||
|
||||
// Check if current keyboard layout uses AltGr and save keylayout ID for
|
||||
// specialized handling if keys like VK_OEM_*. I.e. french keylayout
|
||||
@ -581,14 +521,7 @@ GHOST_TSuccess GHOST_SystemWin32::init()
|
||||
InitCommonControls();
|
||||
|
||||
/* Disable scaling on high DPI displays on Vista */
|
||||
HMODULE
|
||||
user32 = ::LoadLibraryA("user32.dll");
|
||||
typedef BOOL(WINAPI * LPFNSETPROCESSDPIAWARE)();
|
||||
LPFNSETPROCESSDPIAWARE SetProcessDPIAware = (LPFNSETPROCESSDPIAWARE)GetProcAddress(
|
||||
user32, "SetProcessDPIAware");
|
||||
if (SetProcessDPIAware)
|
||||
SetProcessDPIAware();
|
||||
FreeLibrary(user32);
|
||||
SetProcessDPIAware();
|
||||
initRawInput();
|
||||
|
||||
m_lfstart = ::GetTickCount();
|
||||
|
@ -84,9 +84,6 @@ GHOST_WindowWin32::GHOST_WindowWin32(GHOST_SystemWin32 *system,
|
||||
m_wantAlphaBackground(alphaBackground),
|
||||
m_normal_state(GHOST_kWindowStateNormal),
|
||||
m_user32(NULL),
|
||||
m_fpGetPointerInfoHistory(NULL),
|
||||
m_fpGetPointerPenInfoHistory(NULL),
|
||||
m_fpGetPointerTouchInfoHistory(NULL),
|
||||
m_parentWindowHwnd(parentwindow ? parentwindow->m_hWnd : HWND_DESKTOP),
|
||||
m_debug_context(is_debug)
|
||||
{
|
||||
@ -153,19 +150,7 @@ GHOST_WindowWin32::GHOST_WindowWin32(GHOST_SystemWin32 *system,
|
||||
m_user32 = ::LoadLibrary("user32.dll");
|
||||
|
||||
if (m_hWnd) {
|
||||
if (m_user32) {
|
||||
// Touch enabled screens with pen support by default have gestures
|
||||
// enabled, which results in a delay between the pointer down event
|
||||
// and the first move when using the stylus. RegisterTouchWindow
|
||||
// disables the new gesture architecture enabling the events to be
|
||||
// sent immediately to the application rather than being absorbed by
|
||||
// the gesture API.
|
||||
GHOST_WIN32_RegisterTouchWindow pRegisterTouchWindow = (GHOST_WIN32_RegisterTouchWindow)
|
||||
GetProcAddress(m_user32, "RegisterTouchWindow");
|
||||
if (pRegisterTouchWindow) {
|
||||
pRegisterTouchWindow(m_hWnd, 0);
|
||||
}
|
||||
}
|
||||
RegisterTouchWindow(m_hWnd, 0);
|
||||
|
||||
// Register this window as a droptarget. Requires m_hWnd to be valid.
|
||||
// Note that OleInitialize(0) has to be called prior to this. Done in GHOST_SystemWin32.
|
||||
@ -232,16 +217,6 @@ GHOST_WindowWin32::GHOST_WindowWin32(GHOST_SystemWin32 *system,
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize Windows Ink
|
||||
if (m_user32) {
|
||||
m_fpGetPointerInfoHistory = (GHOST_WIN32_GetPointerInfoHistory)::GetProcAddress(
|
||||
m_user32, "GetPointerInfoHistory");
|
||||
m_fpGetPointerPenInfoHistory = (GHOST_WIN32_GetPointerPenInfoHistory)::GetProcAddress(
|
||||
m_user32, "GetPointerPenInfoHistory");
|
||||
m_fpGetPointerTouchInfoHistory = (GHOST_WIN32_GetPointerTouchInfoHistory)::GetProcAddress(
|
||||
m_user32, "GetPointerTouchInfoHistory");
|
||||
}
|
||||
|
||||
// Initialize Wintab
|
||||
m_wintab.handle = ::LoadLibrary("Wintab32.dll");
|
||||
if (m_wintab.handle && m_system->getTabletAPI() != GHOST_kTabletNative) {
|
||||
@ -326,9 +301,6 @@ GHOST_WindowWin32::~GHOST_WindowWin32()
|
||||
if (m_user32) {
|
||||
FreeLibrary(m_user32);
|
||||
m_user32 = NULL;
|
||||
m_fpGetPointerInfoHistory = NULL;
|
||||
m_fpGetPointerPenInfoHistory = NULL;
|
||||
m_fpGetPointerTouchInfoHistory = NULL;
|
||||
}
|
||||
|
||||
if (m_customCursor) {
|
||||
@ -950,15 +922,14 @@ GHOST_TSuccess GHOST_WindowWin32::getPointerInfo(
|
||||
GHOST_SystemWin32 *system = (GHOST_SystemWin32 *)GHOST_System::getSystem();
|
||||
GHOST_TUns32 outCount;
|
||||
|
||||
if (!(m_fpGetPointerInfoHistory && m_fpGetPointerInfoHistory(pointerId, &outCount, NULL))) {
|
||||
if (!(GetPointerInfoHistory(pointerId, &outCount, NULL))) {
|
||||
return GHOST_kFailure;
|
||||
}
|
||||
|
||||
auto pointerPenInfo = std::vector<POINTER_PEN_INFO>(outCount);
|
||||
outPointerInfo.resize(outCount);
|
||||
|
||||
if (!(m_fpGetPointerPenInfoHistory &&
|
||||
m_fpGetPointerPenInfoHistory(pointerId, &outCount, pointerPenInfo.data()))) {
|
||||
if (!(GetPointerPenInfoHistory(pointerId, &outCount, pointerPenInfo.data()))) {
|
||||
return GHOST_kFailure;
|
||||
}
|
||||
|
||||
|
@ -53,177 +53,12 @@ typedef BOOL(API *GHOST_WIN32_WTPacket)(HCTX, UINT, LPVOID);
|
||||
typedef BOOL(API *GHOST_WIN32_WTEnable)(HCTX, BOOL);
|
||||
typedef BOOL(API *GHOST_WIN32_WTOverlap)(HCTX, BOOL);
|
||||
|
||||
// typedef to user32 functions to disable gestures on windows
|
||||
typedef BOOL(API *GHOST_WIN32_RegisterTouchWindow)(HWND hwnd, ULONG ulFlags);
|
||||
|
||||
// typedefs for user32 functions to allow dynamic loading of Windows 10 DPI scaling functions
|
||||
typedef UINT(API *GHOST_WIN32_GetDpiForWindow)(HWND);
|
||||
#ifndef USER_DEFAULT_SCREEN_DPI
|
||||
# define USER_DEFAULT_SCREEN_DPI 96
|
||||
#endif // USER_DEFAULT_SCREEN_DPI
|
||||
|
||||
// typedefs for user32 functions to allow pointer functions
|
||||
enum tagPOINTER_INPUT_TYPE {
|
||||
PT_POINTER = 1, // Generic pointer
|
||||
PT_TOUCH = 2, // Touch
|
||||
PT_PEN = 3, // Pen
|
||||
PT_MOUSE = 4, // Mouse
|
||||
#if (WINVER >= 0x0603)
|
||||
PT_TOUCHPAD = 5, // Touchpad
|
||||
#endif /* WINVER >= 0x0603 */
|
||||
};
|
||||
|
||||
typedef enum tagPOINTER_BUTTON_CHANGE_TYPE {
|
||||
POINTER_CHANGE_NONE,
|
||||
POINTER_CHANGE_FIRSTBUTTON_DOWN,
|
||||
POINTER_CHANGE_FIRSTBUTTON_UP,
|
||||
POINTER_CHANGE_SECONDBUTTON_DOWN,
|
||||
POINTER_CHANGE_SECONDBUTTON_UP,
|
||||
POINTER_CHANGE_THIRDBUTTON_DOWN,
|
||||
POINTER_CHANGE_THIRDBUTTON_UP,
|
||||
POINTER_CHANGE_FOURTHBUTTON_DOWN,
|
||||
POINTER_CHANGE_FOURTHBUTTON_UP,
|
||||
POINTER_CHANGE_FIFTHBUTTON_DOWN,
|
||||
POINTER_CHANGE_FIFTHBUTTON_UP,
|
||||
} POINTER_BUTTON_CHANGE_TYPE;
|
||||
|
||||
typedef DWORD POINTER_INPUT_TYPE;
|
||||
typedef UINT32 POINTER_FLAGS;
|
||||
|
||||
#define POINTER_FLAG_NONE 0x00000000
|
||||
#define POINTER_FLAG_NEW 0x00000001
|
||||
#define POINTER_FLAG_INRANGE 0x00000002
|
||||
#define POINTER_FLAG_INCONTACT 0x00000004
|
||||
#define POINTER_FLAG_FIRSTBUTTON 0x00000010
|
||||
#define POINTER_FLAG_SECONDBUTTON 0x00000020
|
||||
#define POINTER_FLAG_THIRDBUTTON 0x00000040
|
||||
#define POINTER_FLAG_FOURTHBUTTON 0x00000080
|
||||
#define POINTER_FLAG_FIFTHBUTTON 0x00000100
|
||||
#define POINTER_FLAG_PRIMARY 0x00002000
|
||||
#define POINTER_FLAG_CONFIDENCE 0x000004000
|
||||
#define POINTER_FLAG_CANCELED 0x000008000
|
||||
#define POINTER_FLAG_DOWN 0x00010000
|
||||
#define POINTER_FLAG_UPDATE 0x00020000
|
||||
#define POINTER_FLAG_UP 0x00040000
|
||||
#define POINTER_FLAG_WHEEL 0x00080000
|
||||
#define POINTER_FLAG_HWHEEL 0x00100000
|
||||
#define POINTER_FLAG_CAPTURECHANGED 0x00200000
|
||||
#define POINTER_FLAG_HASTRANSFORM 0x00400000
|
||||
|
||||
typedef struct tagPOINTER_INFO {
|
||||
POINTER_INPUT_TYPE pointerType;
|
||||
UINT32 pointerId;
|
||||
UINT32 frameId;
|
||||
POINTER_FLAGS pointerFlags;
|
||||
HANDLE sourceDevice;
|
||||
HWND hwndTarget;
|
||||
POINT ptPixelLocation;
|
||||
POINT ptHimetricLocation;
|
||||
POINT ptPixelLocationRaw;
|
||||
POINT ptHimetricLocationRaw;
|
||||
DWORD dwTime;
|
||||
UINT32 historyCount;
|
||||
INT32 InputData;
|
||||
DWORD dwKeyStates;
|
||||
UINT64 PerformanceCount;
|
||||
POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
|
||||
} POINTER_INFO;
|
||||
|
||||
typedef UINT32 PEN_FLAGS;
|
||||
#define PEN_FLAG_NONE 0x00000000 // Default
|
||||
#define PEN_FLAG_BARREL 0x00000001 // The barrel button is pressed
|
||||
#define PEN_FLAG_INVERTED 0x00000002 // The pen is inverted
|
||||
#define PEN_FLAG_ERASER 0x00000004 // The eraser button is pressed
|
||||
|
||||
typedef UINT32 PEN_MASK;
|
||||
#define PEN_MASK_NONE 0x00000000 // Default - none of the optional fields are valid
|
||||
#define PEN_MASK_PRESSURE 0x00000001 // The pressure field is valid
|
||||
#define PEN_MASK_ROTATION 0x00000002 // The rotation field is valid
|
||||
#define PEN_MASK_TILT_X 0x00000004 // The tiltX field is valid
|
||||
#define PEN_MASK_TILT_Y 0x00000008 // The tiltY field is valid
|
||||
|
||||
typedef struct tagPOINTER_PEN_INFO {
|
||||
POINTER_INFO pointerInfo;
|
||||
PEN_FLAGS penFlags;
|
||||
PEN_MASK penMask;
|
||||
UINT32 pressure;
|
||||
UINT32 rotation;
|
||||
INT32 tiltX;
|
||||
INT32 tiltY;
|
||||
} POINTER_PEN_INFO;
|
||||
|
||||
/*
|
||||
* Flags that appear in pointer input message parameters
|
||||
*/
|
||||
#define POINTER_MESSAGE_FLAG_NEW 0x00000001 // New pointer
|
||||
#define POINTER_MESSAGE_FLAG_INRANGE 0x00000002 // Pointer has not departed
|
||||
#define POINTER_MESSAGE_FLAG_INCONTACT 0x00000004 // Pointer is in contact
|
||||
#define POINTER_MESSAGE_FLAG_FIRSTBUTTON 0x00000010 // Primary action
|
||||
#define POINTER_MESSAGE_FLAG_SECONDBUTTON 0x00000020 // Secondary action
|
||||
#define POINTER_MESSAGE_FLAG_THIRDBUTTON 0x00000040 // Third button
|
||||
#define POINTER_MESSAGE_FLAG_FOURTHBUTTON 0x00000080 // Fourth button
|
||||
#define POINTER_MESSAGE_FLAG_FIFTHBUTTON 0x00000100 // Fifth button
|
||||
#define POINTER_MESSAGE_FLAG_PRIMARY 0x00002000 // Pointer is primary
|
||||
#define POINTER_MESSAGE_FLAG_CONFIDENCE \
|
||||
0x00004000 // Pointer is considered unlikely to be accidental
|
||||
#define POINTER_MESSAGE_FLAG_CANCELED 0x00008000 // Pointer is departing in an abnormal manner
|
||||
|
||||
typedef UINT32 TOUCH_FLAGS;
|
||||
#define TOUCH_FLAG_NONE 0x00000000 // Default
|
||||
|
||||
typedef UINT32 TOUCH_MASK;
|
||||
#define TOUCH_MASK_NONE 0x00000000 // Default - none of the optional fields are valid
|
||||
#define TOUCH_MASK_CONTACTAREA 0x00000001 // The rcContact field is valid
|
||||
#define TOUCH_MASK_ORIENTATION 0x00000002 // The orientation field is valid
|
||||
#define TOUCH_MASK_PRESSURE 0x00000004 // The pressure field is valid
|
||||
|
||||
typedef struct tagPOINTER_TOUCH_INFO {
|
||||
POINTER_INFO pointerInfo;
|
||||
TOUCH_FLAGS touchFlags;
|
||||
TOUCH_MASK touchMask;
|
||||
RECT rcContact;
|
||||
RECT rcContactRaw;
|
||||
UINT32 orientation;
|
||||
UINT32 pressure;
|
||||
} POINTER_TOUCH_INFO;
|
||||
|
||||
/*
|
||||
* Macros to retrieve information from pointer input message parameters
|
||||
*/
|
||||
#define GET_POINTERID_WPARAM(wParam) (LOWORD(wParam))
|
||||
#define IS_POINTER_FLAG_SET_WPARAM(wParam, flag) (((DWORD)HIWORD(wParam) & (flag)) == (flag))
|
||||
#define IS_POINTER_NEW_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_NEW)
|
||||
#define IS_POINTER_INRANGE_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INRANGE)
|
||||
#define IS_POINTER_INCONTACT_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INCONTACT)
|
||||
#define IS_POINTER_FIRSTBUTTON_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIRSTBUTTON)
|
||||
#define IS_POINTER_SECONDBUTTON_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_SECONDBUTTON)
|
||||
#define IS_POINTER_THIRDBUTTON_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_THIRDBUTTON)
|
||||
#define IS_POINTER_FOURTHBUTTON_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FOURTHBUTTON)
|
||||
#define IS_POINTER_FIFTHBUTTON_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIFTHBUTTON)
|
||||
#define IS_POINTER_PRIMARY_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_PRIMARY)
|
||||
#define HAS_POINTER_CONFIDENCE_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CONFIDENCE)
|
||||
#define IS_POINTER_CANCELED_WPARAM(wParam) \
|
||||
IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CANCELED)
|
||||
|
||||
typedef BOOL(WINAPI *GHOST_WIN32_GetPointerInfoHistory)(UINT32 pointerId,
|
||||
UINT32 *entriesCount,
|
||||
POINTER_INFO *pointerInfo);
|
||||
typedef BOOL(WINAPI *GHOST_WIN32_GetPointerPenInfoHistory)(UINT32 pointerId,
|
||||
UINT32 *entriesCount,
|
||||
POINTER_PEN_INFO *penInfo);
|
||||
typedef BOOL(WINAPI *GHOST_WIN32_GetPointerTouchInfoHistory)(UINT32 pointerId,
|
||||
UINT32 *entriesCount,
|
||||
POINTER_TOUCH_INFO *touchInfo);
|
||||
|
||||
struct GHOST_PointerInfoWin32 {
|
||||
GHOST_TInt32 pointerId;
|
||||
GHOST_TInt32 isPrimary;
|
||||
@ -576,9 +411,6 @@ class GHOST_WindowWin32 : public GHOST_Window {
|
||||
|
||||
/** `user32.dll` handle */
|
||||
HMODULE m_user32;
|
||||
GHOST_WIN32_GetPointerInfoHistory m_fpGetPointerInfoHistory;
|
||||
GHOST_WIN32_GetPointerPenInfoHistory m_fpGetPointerPenInfoHistory;
|
||||
GHOST_WIN32_GetPointerTouchInfoHistory m_fpGetPointerTouchInfoHistory;
|
||||
|
||||
HWND m_parentWindowHwnd;
|
||||
|
||||
|
@ -13,12 +13,6 @@
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
<dependency>
|
||||
|
Loading…
Reference in New Issue
Block a user