繁体   English   中英

如何在WinRT C ++ Direct3D应用程序中以编程方式创建TextBox?

[英]How do you programatically create a TextBox in a WinRT C++ Direct3D app?

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

默认情况下,这会使用主应用程序类Direct3DApp1创建一个可工作的D3D应用程序,该类从Windows::ApplicationModel::Core::IFrameworkView

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

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

一个完全有效的VS2012解决方案,可以扩展Direct3D App默认项目。 谢谢!

Marble Maze示例(以及其他DirectX示例,因为它在DirectXApp类中)对此进行了证明。

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

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

当然,这已经很晚了,但以防万一,在使用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是否可以与这种初始化方案共存,因此您可能需要重构一下代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM