我在Windows 8上的VS2012中创建了一个新项目: Visual C ++ | Windows Metro风格| Direct3D App 。
默认情况下,这会创建一个有效的应用类Direct3DApp1
的D3D应用,该应用来自Windows::ApplicationModel::Core::IFrameworkView
。
我需要以编程方式创建Windows::UI::Xaml::Controls::TextBox
并以某种方式将其插入此视图中。这似乎在定义XAML的其他项目类型中很容易,但是这个Direct3D App项目类型没有XAML。
如何在Direct3D图形上叠加TextBox,允许用户弹出键盘并输入文字?
扩展Direct3D App
默认项目的全面运行的VS2012解决方案非常棒。谢谢!
答案 0 :(得分:1)
这在大理石迷宫样本中得到证明(可能是其他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
答案 1 :(得分: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是否可以与此初始化方案共存,因此您可能需要稍微重构一下代码。