diff --git a/Microsoft.Toolkit.Win32.UI.XamlApplication/Microsoft.Toolkit.Win32.UI.XamlApplication.vcxproj b/Microsoft.Toolkit.Win32.UI.XamlApplication/Microsoft.Toolkit.Win32.UI.XamlApplication.vcxproj index 481387a..0c5bfb8 100644 --- a/Microsoft.Toolkit.Win32.UI.XamlApplication/Microsoft.Toolkit.Win32.UI.XamlApplication.vcxproj +++ b/Microsoft.Toolkit.Win32.UI.XamlApplication/Microsoft.Toolkit.Win32.UI.XamlApplication.vcxproj @@ -1,6 +1,6 @@ - + true true @@ -99,9 +99,9 @@ Level4 %(AdditionalOptions) /bigobj 28204 - _WINRT_DLL;%(PreprocessorDefinitions) + _WINRT_DLL;%(PreprocessorDefinitions);WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - true + false Guard @@ -151,16 +151,23 @@ + + + Windows Desktop Extensions for the UWP + + - + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + + diff --git a/Microsoft.Toolkit.Win32.UI.XamlApplication/ReadMe.md b/Microsoft.Toolkit.Win32.UI.XamlApplication/ReadMe.md index 853365a..775f73c 100644 --- a/Microsoft.Toolkit.Win32.UI.XamlApplication/ReadMe.md +++ b/Microsoft.Toolkit.Win32.UI.XamlApplication/ReadMe.md @@ -1 +1,12 @@ -Xaml Application for Win32 \ No newline at end of file +# Xaml Application Object for Win32 Apps +Xaml Application object implementation, used in Xaml Island consuming projects (WinForms, WPF, C++) + +## To Build + +Install the .Net 3 SDK from [this location](https://dotnet.microsoft.com/download/visual-studio-sdks). + +## To Run + +- In the XamlHost\Samples node of Solution Explorer +- Set Microsoft.Toolkit.Sample.Forms.App or Microsoft.Toolkit.Sample.Wpf.App as the startup project. +- F5 diff --git a/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.cpp b/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.cpp index 1b07893..69bde3e 100644 --- a/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.cpp +++ b/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.cpp @@ -1,21 +1,18 @@ -#include "pch.h" +#include "pch.h" #include "XamlApplication.h" -namespace xaml = ::winrt::Windows::UI::Xaml; - -extern "C" { - WINBASEAPI HMODULE WINAPI LoadLibraryExW(_In_ LPCWSTR lpLibFileName, _Reserved_ HANDLE hFile, _In_ DWORD dwFlags); - WINBASEAPI HMODULE WINAPI GetModuleHandleW(_In_opt_ LPCWSTR lpModuleName); - WINUSERAPI BOOL WINAPI PeekMessageW(_Out_ LPMSG lpMsg, _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, _In_ UINT wRemoveMsg); - WINUSERAPI LRESULT WINAPI DispatchMessageW(_In_ CONST MSG* lpMsg); +namespace winrt +{ + using namespace winrt::Windows::UI::Xaml; + using namespace winrt::Windows::UI::Xaml::Hosting; } namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation { - XamlApplication::XamlApplication(winrt::Windows::Foundation::Collections::IVector providers) + XamlApplication::XamlApplication(const winrt::Windows::Foundation::Collections::IVector& providers) { - for(auto provider : providers) + for (auto&& provider : providers) { m_providers.Append(provider); } @@ -23,31 +20,16 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation Initialize(); } - XamlApplication::XamlApplication() - { - } - void XamlApplication::Initialize() { - const auto out = outer(); - if (out) - { - winrt::Windows::UI::Xaml::Markup::IXamlMetadataProvider provider(nullptr); - winrt::check_hresult(out->QueryInterface( - winrt::guid_of(), - reinterpret_cast(winrt::put_abi(provider)))); - m_providers.Append(provider); - } + winrt::Windows::UI::Xaml::Markup::IXamlMetadataProvider provider{ nullptr }; + winrt::check_hresult(outer()->QueryInterface(winrt::guid_of(), winrt::put_abi(provider))); + m_providers.Append(provider); const auto dispatcherQueue = winrt::Windows::System::DispatcherQueue::GetForCurrentThread(); if (!dispatcherQueue) { - m_executionMode = ExecutionMode::Win32; - m_windowsXamlManager = xaml::Hosting::WindowsXamlManager::InitializeForCurrentThread(); - } - else - { - m_executionMode = ExecutionMode::UWP; + m_windowsXamlManager = winrt::Hosting::WindowsXamlManager::InitializeForCurrentThread(); } } @@ -84,7 +66,7 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation Close(); } - xaml::Markup::IXamlType XamlApplication::GetXamlType(xaml::Interop::TypeName const& type) + winrt::Markup::IXamlType XamlApplication::GetXamlType(winrt::Interop::TypeName const& type) { for (const auto& provider : m_providers) { @@ -98,7 +80,7 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation return nullptr; } - xaml::Markup::IXamlType XamlApplication::GetXamlType(winrt::hstring const& fullName) + winrt::Markup::IXamlType XamlApplication::GetXamlType(winrt::hstring const& fullName) { for (const auto& provider : m_providers) { @@ -112,9 +94,9 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation return nullptr; } - winrt::com_array XamlApplication::GetXmlnsDefinitions() + winrt::com_array XamlApplication::GetXmlnsDefinitions() { - std::list definitions; + std::list definitions; for (const auto& provider : m_providers) { auto defs = provider.GetXmlnsDefinitions(); @@ -124,10 +106,10 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation } } - return winrt::com_array(definitions.begin(), definitions.end()); + return winrt::com_array(definitions.begin(), definitions.end()); } - winrt::Windows::Foundation::Collections::IVector XamlApplication::MetadataProviders() + winrt::Windows::Foundation::Collections::IVector XamlApplication::MetadataProviders() { return m_providers; } @@ -157,4 +139,4 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::factory_implementation ::FreeLibrary(module); } } -} \ No newline at end of file +} diff --git a/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.h b/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.h index 77097f8..6495efc 100644 --- a/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.h +++ b/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.h @@ -1,10 +1,7 @@ -#pragma once +#pragma once +#include "pch.h" #include "XamlApplication.g.h" -#include -#include -#include -#include namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation { @@ -17,8 +14,8 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation class XamlApplication : public XamlApplicationT { public: - XamlApplication(); - XamlApplication(winrt::Windows::Foundation::Collections::IVector providers); + XamlApplication() = default; + XamlApplication(const winrt::Windows::Foundation::Collections::IVector& providers); ~XamlApplication(); void Initialize(); @@ -38,7 +35,6 @@ namespace winrt::Microsoft::Toolkit::Win32::UI::XamlHost::implementation } private: - ExecutionMode m_executionMode = ExecutionMode::Win32; winrt::Windows::UI::Xaml::Hosting::WindowsXamlManager m_windowsXamlManager = nullptr; winrt::Windows::Foundation::Collections::IVector m_providers = winrt::single_threaded_vector(); bool m_bIsClosed = false; diff --git a/Microsoft.Toolkit.Win32.UI.XamlApplication/packages.config b/Microsoft.Toolkit.Win32.UI.XamlApplication/packages.config index cee5cec..215a653 100644 --- a/Microsoft.Toolkit.Win32.UI.XamlApplication/packages.config +++ b/Microsoft.Toolkit.Win32.UI.XamlApplication/packages.config @@ -1,4 +1,5 @@  - + + \ No newline at end of file diff --git a/Microsoft.Toolkit.Win32.UI.XamlApplication/pch.h b/Microsoft.Toolkit.Win32.UI.XamlApplication/pch.h index 6bd4c07..d853684 100644 --- a/Microsoft.Toolkit.Win32.UI.XamlApplication/pch.h +++ b/Microsoft.Toolkit.Win32.UI.XamlApplication/pch.h @@ -1,12 +1,14 @@ -#pragma once +#pragma once -#include -//#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -#include -#include - -#include // To enable support for non-WinRT interfaces, unknwn.h must be included before any C++/WinRT headers. +#include #include +#include +#undef GetCurrentTime #include +#include #include + +#include + +#include diff --git a/global.json b/global.json index e1f41b8..783ce27 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "3.1.409" + "version": "3.1.412" } }