#ifdef _MSC_VER
#pragma once
#endif // _MSC_VER
#include <shtypes.h>
#include <winapifamily.h>
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#ifndef SCALING_ENUMS_DECLARED
typedef
enum
{
=
0
,
=
1
,
}
;
typedef
enum
{
=
0x00
,
=
0x01
,
=
0x02
,
}
;
DEFINE_ENUM_FLAG_OPERATORS(SCALE_CHANGE_FLAGS);
extern
"C++"
{
inline
constexpr
(
,
)
throw
() {
return
(((
<
>::
)
) | ((
<
>::
)
)); }
inline
&
(
&
,
)
throw
() {
return
(
&)(((
<
>::
&)
) |= ((
<
>::
)
)); }
inline
constexpr
(
,
)
throw
() {
return
(((
<
>::
)
) & ((
<
>::
)
)); }
inline
&
(
&
,
)
throw
() {
return
(
&)(((
<
>::
&)
) &= ((
<
>::
)
)); }
inline
constexpr
(
)
throw
() {
return
(~((
<
>::
)
)); }
inline
constexpr
(
,
)
throw
() {
return
(((
<
>::
)
) ^ ((
<
>::
)
)); }
inline
&
(
&
,
)
throw
() {
return
(
&)(((
<
>::
&)
) ^= ((
<
>::
)
)); } };
#define SCALING_ENUMS_DECLARED
#endif
#if (NTDDI_VERSION >= NTDDI_WIN8)
STDAPI_(DEVICE_SCALE_FACTOR) GetScaleFactorForDevice(_In_ DISPLAY_DEVICE_TYPE deviceType);
extern
"C"
__stdcall
(
);
STDAPI RegisterScaleChangeNotifications(_In_ DISPLAY_DEVICE_TYPE displayDevice, _In_ HWND hwndNotify, _In_ UINT uMsgNotify, _Out_ DWORD *pdwCookie);
extern
"C"
__stdcall
RegisterScaleChangeNotifications
(
,
,
,
*
);
STDAPI RevokeScaleChangeNotifications(_In_ DISPLAY_DEVICE_TYPE displayDevice, _In_ DWORD dwCookie);
extern
"C"
__stdcall
RevokeScaleChangeNotifications
(
,
);
#endif // (NTDDI_VERSION >= NTDDI_WIN8)
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
STDAPI GetScaleFactorForMonitor(_In_ HMONITOR hMon, _Out_ DEVICE_SCALE_FACTOR *pScale);
extern
"C"
__stdcall
(
,
*
);
STDAPI RegisterScaleChangeEvent(_In_ HANDLE hEvent, _Out_ DWORD_PTR *pdwCookie);
extern
"C"
__stdcall
(
,
*
);
STDAPI UnregisterScaleChangeEvent(_In_ DWORD_PTR dwCookie);
extern
"C"
__stdcall
UnregisterScaleChangeEvent
(
);
#endif // (NTDDI_VERSION >= NTDDI_WINBLUE)
#ifndef DPI_ENUMS_DECLARED
typedef
enum
{
=
0
,
=
1
,
PROCESS_PER_MONITOR_DPI_AWARE
=
2
}
;
typedef
enum
{
=
0
,
=
1
,
=
2
,
=
}
;
#define DPI_ENUMS_DECLARED
#endif // (DPI_ENUMS_DECLARED)
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
STDAPI SetProcessDpiAwareness(
_In_ PROCESS_DPI_AWARENESS value);
STDAPI GetProcessDpiAwareness(
_In_opt_ HANDLE hprocess,
_Out_ PROCESS_DPI_AWARENESS *value);
_In_ MONITOR_DPI_TYPE dpiType,
#endif // (NTDDI_VERSION >= NTDDI_WINBLUE)
#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
#ifndef SHELL_UI_COMPONENT_ENUMS_DECLARED
typedef
enum
{
SHELL_UI_COMPONENT_TASKBARS
=
0
,
SHELL_UI_COMPONENT_NOTIFICATIONAREA
=
1
,
SHELL_UI_COMPONENT_DESKBAND
=
2
,
}
;
#define SHELL_UI_COMPONENT_ENUMS_DECLARED
#endif // (SHELL_UI_COMPONENT_ENUMS_DECLARED)
STDAPI_(UINT) GetDpiForShellUIComponent(
extern
"C"
__stdcall
GetDpiForShellUIComponent
(
_In_ SHELL_UI_COMPONENT);
#endif // (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion