Add NanaZip.Shared.ModernExperienceShims project.

This commit is contained in:
MouriNaruto
2022-01-30 12:56:39 +08:00
parent ec7eaf3b93
commit 226551d1ea
10 changed files with 172 additions and 0 deletions

View File

@@ -0,0 +1,103 @@
/*
* PROJECT: NanaZip
* FILE: ModernWin32MessageBox.cpp
* PURPOSE: Implementation for Modern Win32 Message Box
*
* LICENSE: The MIT License
*
* DEVELOPER: Mouri_Naruto (Mouri_Naruto AT Outlook.com)
*/
#include <Windows.h>
#include <CommCtrl.h>
#pragma comment(lib,"comctl32.lib")
EXTERN_C int WINAPI ModernMessageBoxW(
_In_opt_ HWND hWnd,
_In_opt_ LPCWSTR lpText,
_In_opt_ LPCWSTR lpCaption,
_In_ UINT uType)
{
if (uType != (uType & (MB_ICONMASK | MB_TYPEMASK)))
{
return ::MessageBoxW(hWnd, lpText, lpCaption, uType);
}
TASKDIALOGCONFIG TaskDialogConfig = { 0 };
TaskDialogConfig.cbSize = sizeof(TASKDIALOGCONFIG);
TaskDialogConfig.hwndParent = hWnd;
TaskDialogConfig.dwFlags = TDF_ALLOW_DIALOG_CANCELLATION;
TaskDialogConfig.pszWindowTitle = lpCaption;
TaskDialogConfig.pszMainInstruction = lpText;
switch (uType & MB_TYPEMASK)
{
case MB_OK:
TaskDialogConfig.dwCommonButtons =
TDCBF_OK_BUTTON;
break;
case MB_OKCANCEL:
TaskDialogConfig.dwCommonButtons =
TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON;
break;
case MB_YESNOCANCEL:
TaskDialogConfig.dwCommonButtons =
TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON;
break;
case MB_YESNO:
TaskDialogConfig.dwCommonButtons =
TDCBF_YES_BUTTON | TDCBF_NO_BUTTON;
break;
case MB_RETRYCANCEL:
TaskDialogConfig.dwCommonButtons =
TDCBF_RETRY_BUTTON | TDCBF_CANCEL_BUTTON;
break;
default:
return ::MessageBoxW(hWnd, lpText, lpCaption, uType);
}
switch (uType & MB_ICONMASK)
{
case MB_ICONHAND:
TaskDialogConfig.pszMainIcon = TD_ERROR_ICON;
break;
case MB_ICONQUESTION:
TaskDialogConfig.dwFlags |= TDF_USE_HICON_MAIN;
TaskDialogConfig.hMainIcon = ::LoadIconW(nullptr, IDI_QUESTION);
break;
case MB_ICONEXCLAMATION:
TaskDialogConfig.pszMainIcon = TD_WARNING_ICON;
break;
case MB_ICONASTERISK:
TaskDialogConfig.pszMainIcon = TD_INFORMATION_ICON;
break;
default:
break;
}
int ButtonID = 0;
HRESULT hr = ::TaskDialogIndirect(
&TaskDialogConfig,
&ButtonID,
nullptr,
nullptr);
if (ButtonID == 0)
{
::SetLastError(hr);
}
return ButtonID;
}
#if defined(_M_IX86)
#pragma warning(suppress:4483)
extern "C" __declspec(selectany) void const* const __identifier("_imp__MessageBoxW@16") = reinterpret_cast<void const*>(::ModernMessageBoxW);
#pragma comment(linker, "/include:__imp__MessageBoxW@16")
#else
extern "C" __declspec(selectany) void const* const __imp_MessageBoxW = reinterpret_cast<void const*>(::ModernMessageBoxW);
#pragma comment(linker, "/include:__imp_MessageBoxW")
#endif

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="NanaZip.Shared.ModernExperienceShims.props" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>$(MSBuildThisFileDirectory);$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>$(MileProjectObjectsPath)$(Configuration)\NanaZip.Shared.ModernExperienceShims\$(Platform)\ModernWin32MessageBox.obj;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
</Project>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Platform.Win32.props" />
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Platform.x64.props" />
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Platform.ARM64.props" />
<PropertyGroup Label="Globals">
<ProjectGuid>{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}</ProjectGuid>
<RootNamespace>NanaZip.Shared.ModernExperienceShims</RootNamespace>
<MileProjectType>StaticLibrary</MileProjectType>
</PropertyGroup>
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.props" />
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Runtime.VC-LTL.props" />
<Import Project="..\Mile.Cpp\Mile.Library\Mile.Library.props" />
<ItemGroup>
<None Include="NanaZip.Shared.ModernExperienceShims.props" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="ModernWin32MessageBox.cpp" />
</ItemGroup>
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.targets" />
</Project>

View File

@@ -6,6 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipShellExtension", "NanaZipShellExtension\NanaZipShellExtension.vcxproj", "{F17D4837-7943-4361-9527-2AF9CACE477D}"
ProjectSection(ProjectDependencies) = postProject
{84E27A16-CBC7-466C-971F-2A4E0F2F95BE} = {84E27A16-CBC7-466C-971F-2A4E0F2F95BE}
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C} = {501956AB-67C3-47FA-BE2B-8AEFF463AF1C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mile.Library", "Mile.Cpp\Mile.Library\Mile.Library.vcxproj", "{84E27A16-CBC7-466C-971F-2A4E0F2F95BE}"
@@ -14,6 +15,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipSfxWindows", "NanaZi
ProjectSection(ProjectDependencies) = postProject
{84E27A16-CBC7-466C-971F-2A4E0F2F95BE} = {84E27A16-CBC7-466C-971F-2A4E0F2F95BE}
{6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6} = {6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6}
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C} = {501956AB-67C3-47FA-BE2B-8AEFF463AF1C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipSfxConsole", "NanaZipSfxConsole\NanaZipSfxConsole.vcxproj", "{96C0A1A0-D964-4725-AFDC-73EBF7FC1416}"
@@ -26,6 +28,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipSfxSetup", "NanaZipS
ProjectSection(ProjectDependencies) = postProject
{84E27A16-CBC7-466C-971F-2A4E0F2F95BE} = {84E27A16-CBC7-466C-971F-2A4E0F2F95BE}
{6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6} = {6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6}
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C} = {501956AB-67C3-47FA-BE2B-8AEFF463AF1C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipCore", "NanaZipCore\NanaZipCore.vcxproj", "{86D65350-E2AE-47BC-AE05-FC35D3BAAE6C}"
@@ -40,6 +43,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZip", "NanaZip\NanaZip.
{D33E771E-6B30-4EFB-9DEC-A9148D50080D} = {D33E771E-6B30-4EFB-9DEC-A9148D50080D}
{F17D4837-7943-4361-9527-2AF9CACE477D} = {F17D4837-7943-4361-9527-2AF9CACE477D}
{86D65350-E2AE-47BC-AE05-FC35D3BAAE6C} = {86D65350-E2AE-47BC-AE05-FC35D3BAAE6C}
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C} = {501956AB-67C3-47FA-BE2B-8AEFF463AF1C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipWindows", "NanaZipWindows\NanaZipWindows.vcxproj", "{D33E771E-6B30-4EFB-9DEC-A9148D50080D}"
@@ -47,6 +51,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipWindows", "NanaZipWi
{84E27A16-CBC7-466C-971F-2A4E0F2F95BE} = {84E27A16-CBC7-466C-971F-2A4E0F2F95BE}
{86D65350-E2AE-47BC-AE05-FC35D3BAAE6C} = {86D65350-E2AE-47BC-AE05-FC35D3BAAE6C}
{C11F288B-9E3C-4DA9-8206-852BB91C7E4C} = {C11F288B-9E3C-4DA9-8206-852BB91C7E4C}
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C} = {501956AB-67C3-47FA-BE2B-8AEFF463AF1C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZipConsole", "NanaZipConsole\NanaZipConsole.vcxproj", "{D866CA04-DF51-4660-BA4D-F82426A3A522}"
@@ -70,6 +75,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZip.Shared.SevenZipZSta
{84E27A16-CBC7-466C-971F-2A4E0F2F95BE} = {84E27A16-CBC7-466C-971F-2A4E0F2F95BE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NanaZip.Shared.ModernExperienceShims", "NanaZip.Shared\NanaZip.Shared.ModernExperienceShims.vcxproj", "{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}"
ProjectSection(ProjectDependencies) = postProject
{84E27A16-CBC7-466C-971F-2A4E0F2F95BE} = {84E27A16-CBC7-466C-971F-2A4E0F2F95BE}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
@@ -218,12 +228,25 @@ Global
{6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6}.Release|x64.Build.0 = Release|x64
{6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6}.Release|x86.ActiveCfg = Release|Win32
{6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6}.Release|x86.Build.0 = Release|Win32
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Debug|ARM64.ActiveCfg = Debug|ARM64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Debug|ARM64.Build.0 = Debug|ARM64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Debug|x64.ActiveCfg = Debug|x64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Debug|x64.Build.0 = Debug|x64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Debug|x86.ActiveCfg = Debug|Win32
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Debug|x86.Build.0 = Debug|Win32
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Release|ARM64.ActiveCfg = Release|ARM64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Release|ARM64.Build.0 = Release|ARM64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Release|x64.ActiveCfg = Release|x64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Release|x64.Build.0 = Release|x64
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Release|x86.ActiveCfg = Release|Win32
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{6F0E7455-ECE1-440D-9EA2-8C18E4F1CBE6} = {685BAF3E-2C48-4904-B37E-EBEA67680327}
{501956AB-67C3-47FA-BE2B-8AEFF463AF1C} = {685BAF3E-2C48-4904-B37E-EBEA67680327}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DE2C16C4-5306-4103-9C2A-749DC32B5CA6}

View File

@@ -14,6 +14,7 @@
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.props" />
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Runtime.VC-LTL.props" />
<Import Project="..\Mile.Cpp\Mile.Library\Mile.Library.props" />
<Import Project="..\NanaZip.Shared\NanaZip.Shared.ModernExperienceShims.props" />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalOptions>%(AdditionalOptions) /Wv:18</AdditionalOptions>

View File

@@ -10,6 +10,7 @@
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Runtime.VC-LTL.props" />
<Import Project="..\Mile.Cpp\Mile.Library\Mile.Library.props" />
<Import Project="..\NanaZip.Shared\NanaZip.Shared.SevenZipZStandard.props" />
<Import Project="..\NanaZip.Shared\NanaZip.Shared.ModernExperienceShims.props" />
<PropertyGroup>
<TargetName>NanaZipSetup</TargetName>
<TargetExt>.sfx</TargetExt>

View File

@@ -10,6 +10,7 @@
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Runtime.VC-LTL.props" />
<Import Project="..\Mile.Cpp\Mile.Library\Mile.Library.props" />
<Import Project="..\NanaZip.Shared\NanaZip.Shared.SevenZipZStandard.props" />
<Import Project="..\NanaZip.Shared\NanaZip.Shared.ModernExperienceShims.props" />
<PropertyGroup>
<TargetName>NanaZipWindows</TargetName>
<TargetExt>.sfx</TargetExt>

View File

@@ -15,6 +15,7 @@
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Runtime.VC-LTL.props" />
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Library.CppWinRT.props" />
<Import Project="..\Mile.Cpp\Mile.Library\Mile.Library.props" />
<Import Project="..\NanaZip.Shared\NanaZip.Shared.ModernExperienceShims.props" />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalOptions>%(AdditionalOptions) /Wv:18</AdditionalOptions>

View File

@@ -15,6 +15,7 @@
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.props" />
<Import Project="..\Mile.Cpp\Mile.Project\Mile.Project.Runtime.VC-LTL.props" />
<Import Project="..\Mile.Cpp\Mile.Library\Mile.Library.props" />
<Import Project="..\NanaZip.Shared\NanaZip.Shared.ModernExperienceShims.props" />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalOptions>%(AdditionalOptions) /Wv:18</AdditionalOptions>