1

我在 Windows 8 上的 VS2012 中创建了一个新项目:Visual C++ | Windows Metro 风格 | Direct3D 应用程序

默认情况下,这会创建一个工作 D3D 应用程序,其主应用程序类Direct3DApp1派生自Windows::ApplicationModel::Core::IFrameworkView.

我需要以编程方式创建一个Windows::UI::Xaml::Controls::TextBox并以某种方式将其插入到这个视图中。这在定义 XAML 的其他项目类型中似乎很容易做到,但这种 Direct3D App 项目类型没有 XAML。

如何在允许用户弹出键盘并输入文本的 Direct3D 图形上覆盖 TextBox?

扩展默认项目的完整工作 VS2012 解决方案Direct3D App会很棒。谢谢!

4

2 回答 2

1

这在 Marble Maze 示例中得到了证明(可能还有其他 DirectX 示例,因为它在 DirectXApp 类中)

http://code.msdn.microsoft.com/windowsapps/DirectX-Marble-Maze-Game-e4806345

http://msdn.microsoft.com/en-us/library/windows/apps/br230257(v=vs.110).aspx

于 2012-08-31T17:11:58.533 回答
0

当然,为时已晚,但以防万一,您需要先初始化 XAML 应用程序,然后再使用 XAML 控件:

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

并设置 Windows::UI::Xaml::Window::Current->Content

有关更多信息,请参阅http://developernote.com/2015/12/initialization-of-uwp-c-xaml-application/

我不确定 Windows::ApplicationModel::Core::IFrameworkView 是否可以与此初始化场景共存,因此您可能需要稍微重构代码。

于 2015-12-07T22:48:40.497 回答