#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