UWP C++ applications based on “DirectX 11 and XAML App” or “XAML App for OpenGL ES“ project templates have some partial App class defined in user code and in generated file App.g.h:
partial ref class App : public ::Windows::UI::Xaml::Application, public ::Windows::UI::Xaml::Markup::IXamlMetadataProvider { public: void InitializeComponent(); [Windows::Foundation::Metadata::DefaultOverload] virtual ::Windows::UI::Xaml::Markup::IXamlType^ GetXamlType(::Windows::UI::Xaml::Interop::TypeName type); virtual ::Windows::UI::Xaml::Markup::IXamlType^ GetXamlType(::Platform::String^ fullName); virtual ::Platform::Array<::Windows::UI::Xaml::Markup::XmlnsDefinition>^ GetXmlnsDefinitions(); private: ::XamlTypeInfo::InfoProvider::XamlTypeInfoProvider^ _provider; bool _contentLoaded; };
the user code:
ref class App sealed { public: App(); virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) override; ... };
App object is created in main function defined in generated App.g.hpp file:
int __cdecl main(::Platform::Array<::Platform::String^>^ args) { (void)args; // Unused parameter ::Windows::UI::Xaml::Application::Start(ref new ::Windows::UI::Xaml::ApplicationInitializationCallback( [](::Windows::UI::Xaml::ApplicationInitializationCallbackParams^ p) { (void)p; // Unused parameter auto app = ref new ::MyApp::App(); })); }
Looks like that this code sets up Windows::UI::Xaml::Window::Current, so App class sets up its content from App::OnLaunched handler:
void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) { ... if (mPage == nullptr) { mPage = ref new MainPage(); } // Place the page in the current window and ensure that it is active. Windows::UI::Xaml::Window::Current->Content = mPage; Windows::UI::Xaml::Window::Current->Activate(); }
Do not mix this Windows::UI::Xaml::Window::Current with CoreWindow, because CoreWindow does not relate to XAML somehow and does not have any kind of Content property. Looks like that CoreWindow is a system-level surrounding application window that servers as the application event source and can be used for DirectX drawing, for example, cross platform “OpenGLES 2 Application (Androis, iOS, Windows Universal)” (that finally works via DirectX) does not have XAML and uses another initialization scenario. Its App class implements interface Windows::ApplicationModel::Core::IFrameworkView and its main function defined in user code does the following:
// Implementation of the IFrameworkViewSource interface, necessary to run our app. ref class SimpleApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource { public: virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView() { return ref new App(); } }; // The main function creates an IFrameworkViewSource for our app, and runs the app. [Platform::MTAThread] int main(Platform::Array<Platform::String^>^) { auto simpleApplicationSource = ref new SimpleApplicationSource(); CoreApplication::Run(simpleApplicationSource); return 0; }