Add DPI Awareness option to CMake
For VS solutions, the DPI aware manifest is added as additional manifest. For makefiles, the DPI aware manifest is included via the resource file. Set the default DPI Awareness to per-monitor.
This commit is contained in:
@@ -658,7 +658,27 @@ function(wx_add_sample name)
|
||||
else()
|
||||
set(exe_type WIN32 MACOSX_BUNDLE)
|
||||
endif()
|
||||
|
||||
if (WXMSW AND DEFINED wxUSE_DPI_AWARE_MANIFEST)
|
||||
set(wxDPI_MANIFEST_PRFIX "wx")
|
||||
if (wxARCH_SUFFIX)
|
||||
set(wxDPI_MANIFEST_PRFIX "amd64")
|
||||
endif()
|
||||
set(wxUSE_DPI_AWARE_MANIFEST_VALUE 0)
|
||||
if (${wxUSE_DPI_AWARE_MANIFEST} MATCHES "system")
|
||||
set(wxUSE_DPI_AWARE_MANIFEST_VALUE 1)
|
||||
list(APPEND src_files "${wxSOURCE_DIR}/include/wx/msw/${wxDPI_MANIFEST_PRFIX}-dpi-aware.manifest")
|
||||
elseif(${wxUSE_DPI_AWARE_MANIFEST} MATCHES "per-monitor")
|
||||
set(wxUSE_DPI_AWARE_MANIFEST_VALUE 2)
|
||||
list(APPEND src_files "${wxSOURCE_DIR}/include/wx/msw/${wxDPI_MANIFEST_PRFIX}-dpi-aware-pmv2.manifest")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_executable(${target_name} ${exe_type} ${src_files})
|
||||
|
||||
if (DEFINED wxUSE_DPI_AWARE_MANIFEST_VALUE)
|
||||
target_compile_definitions(${target_name} PRIVATE wxUSE_DPI_AWARE_MANIFEST=${wxUSE_DPI_AWARE_MANIFEST_VALUE})
|
||||
endif()
|
||||
endif()
|
||||
# All samples use at least the base library other libraries
|
||||
# will have to be added with wx_link_sample_libraries()
|
||||
|
@@ -23,6 +23,10 @@ wx_option(wxBUILD_COMPATIBILITY
|
||||
set(wxBUILD_CUSTOM_SETUP_HEADER_PATH "" CACHE PATH "Include path containing custom wx/setup.h")
|
||||
mark_as_advanced(wxBUILD_CUSTOM_SETUP_HEADER_PATH)
|
||||
|
||||
if(WIN32)
|
||||
wx_option(wxUSE_DPI_AWARE_MANIFEST "DPI Awareness" "per-monitor" STRINGS "none" "system" "per-monitor")
|
||||
endif()
|
||||
|
||||
wx_option(wxBUILD_DEBUG_LEVEL "Debug Level" Default STRINGS Default 0 1 2)
|
||||
mark_as_advanced(wxBUILD_DEBUG_LEVEL)
|
||||
|
||||
|
35
include/wx/msw/amd64-dpi-aware-pmv2.manifest
Normal file
35
include/wx/msw/amd64-dpi-aware-pmv2.manifest
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df" language="*" />
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, system</dpiAwareness>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
34
include/wx/msw/amd64-dpi-aware.manifest
Normal file
34
include/wx/msw/amd64-dpi-aware.manifest
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df" language="*" />
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
35
include/wx/msw/wx-dpi-aware-pmv2.manifest
Normal file
35
include/wx/msw/wx-dpi-aware-pmv2.manifest
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" />
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, system</dpiAwareness>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
34
include/wx/msw/wx-dpi-aware.manifest
Normal file
34
include/wx/msw/wx-dpi-aware.manifest
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" />
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
@@ -100,17 +100,17 @@ wxBITMAP_STD_COLOURS BITMAP "wx/msw/colours.bmp"
|
||||
|
||||
// see "about isolated applications" topic in MSDN
|
||||
#ifdef ISOLATION_AWARE_ENABLED
|
||||
#define wxMANIFEST_ID 2
|
||||
#define wxMANIFEST_ID ISOLATIONAWARE_MANIFEST_RESOURCE_ID
|
||||
#else
|
||||
#define wxMANIFEST_ID 1
|
||||
#define wxMANIFEST_ID CREATEPROCESS_MANIFEST_RESOURCE_ID
|
||||
#endif
|
||||
|
||||
#if defined(WX_CPU_AMD64)
|
||||
wxMANIFEST_ID 24 "wx/msw/amd64.manifest"
|
||||
#define wxMANIFEST_CPU "amd64"
|
||||
#elif defined(WX_CPU_IA64)
|
||||
wxMANIFEST_ID 24 "wx/msw/ia64.manifest"
|
||||
#define wxMANIFEST_CPU "ia64"
|
||||
#elif defined(WX_CPU_X86)
|
||||
wxMANIFEST_ID 24 "wx/msw/wx.manifest"
|
||||
#define wxMANIFEST_CPU "wx"
|
||||
#else
|
||||
// Notice that if the manifest is included, WX_CPU_XXX constant corresponding
|
||||
// to the architecture we're compiling for must be defined. This can be done
|
||||
@@ -118,9 +118,20 @@ wxMANIFEST_ID 24 "wx/msw/wx.manifest"
|
||||
// compiler paths to search in $(WXWIN)/lib/$(COMPILER_PREFIX)_lib/mswu[d]
|
||||
// directory for its include files, as wx/msw/rcdefs.h file in this directory
|
||||
// is generated during wxWidgets build and contains the correct definition.
|
||||
#error "One of WX_CPU_XXX constants must be defined. See comment above."
|
||||
#error "One of WX_CPU_XXX constants must be defined. See comment above."
|
||||
#endif
|
||||
|
||||
#if !defined(wxUSE_DPI_AWARE_MANIFEST) || wxUSE_DPI_AWARE_MANIFEST == 0
|
||||
#define wxMANIFEST_DPI ""
|
||||
#elif wxUSE_DPI_AWARE_MANIFEST == 1
|
||||
#define wxMANIFEST_DPI "-dpi-aware"
|
||||
#elif wxUSE_DPI_AWARE_MANIFEST == 2
|
||||
#define wxMANIFEST_DPI "-dpi-aware-pmv2"
|
||||
#endif
|
||||
|
||||
#define wxMANIFEST_FILE "wx/msw/" wxMANIFEST_CPU wxMANIFEST_DPI ".manifest"
|
||||
wxMANIFEST_ID RT_MANIFEST wxMANIFEST_FILE
|
||||
|
||||
#endif // wxUSE_RC_MANIFEST
|
||||
|
||||
#endif // !defined(wxUSE_NO_MANIFEST) || (wxUSE_NO_MANIFEST == 0)
|
||||
|
Reference in New Issue
Block a user