创建一个最小的 Hello World UWP 应用

Create a Minimal Hello World UWP app

我正在使用 Visual Studio 2017 创建一个简单的 C++/Cx 通用 Windows 平台应用程序。我需要从头开始,没有任何装饰。

当我创建一个新的 "blank" 项目时,我最终得到 2 个 XAML 文件(每个文件都有一个 .cpp 和一个 .h 文件链接)和一个完整的目录生成的代码。其中一些文件甚至是在第一次编译后生成的。这对我来说不合适,我希望有一个单一的 main() 函数,代码最少 运行 一个 Hello World 应用程序,没有自动生成的代码。

在其中一个生成的文件 (App.g.hpp) 中,我找到了 main() 方法,但我没有找到在非生成文件中编写自己的方法的方法:

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 ::MinimalUWP::App();
        }));
}

是否有可用于 true 空白 UWP 项目的模板?

我终于用这段代码自己解决了:

ref class UwpApp : public ::Windows::UI::Xaml::Application
{
protected:
   virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) override
   {
      // Use e->Arguments as main arguments
   }
};

int __cdecl main(::Platform::Array<::Platform::String^>^ args)
{
   ::Windows::UI::Xaml::Application::Start(ref new ::Windows::UI::Xaml::ApplicationInitializationCallback(
      [](::Windows::UI::Xaml::ApplicationInitializationCallbackParams^ p) {
      auto app = ref new UwpApp();
   }));
}

感谢@IInspectable,最后我坚持使用 C++/CX,它成功了!