问题标签 [c++-winrt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
886 浏览

windows-runtime - 什么是可组合的运行时类?

我正在尝试使用 C++/WinRT 创建一个简单的 xaml 应用程序。

我来自 WPF 背景,拥有一个实现 INotifyPropertyChanged 的​​基类并让其他类继承自它是很常见的。

当我尝试对 C++-WinRT 执行相同操作时,我失败并出现错误

以下是其余相关代码供参考:

ObservableObject.idl:

MainViewModel.idl:

那么究竟什么是可组合的运行时类呢?有没有办法用 C++/WinRT 实现这一点?我真的不想每次定义一个新的可绑定类时都重复 INotifyPropertyChanged 实现。

0 投票
0 回答
280 浏览

windows-10-universal - 是否可以使用 nvidia Nsight 调试 cppwinrt directx12 应用程序?

我有一个 UWP cppwinrt 应用程序,它使用 directx12 来渲染带有基本着色器的立方体。我想使用图形调试器来检查发送到此着色器的数据。

首先,我尝试将 Nvidia Nsight 调试器用于 Visual Studio 2017。问题是,当我从 Nsight 菜单转到“开始图形调试”时,应用程序立即停止并显示错误消息:“无法启动 UWP 应用程序(可能不终止现有进程)”。

我能够在从 Visual Studio 模板创建的 DirectX12 UWP 应用程序 (C++/CX) 上启动 Nsight 调试器,尽管这令人鼓舞。

我的 cppWinRT 应用程序正在渲染到使用如下创建的交换链IDXGIFactory2::CreateSwapChainForComposition

swapChainPanel()是一个winrt::Windows::UI::Xaml::Controls::SwapChainPanelxaml 控件。

有谁知道如何做到这一点?

2018 年 8 月 13 日更新:

我尝试将 Nsight 与 Microsoft 的另一个项目一起使用,该项目与我的非常相似,您可以在此处找到:https ://github.com/Microsoft/DirectX-Graphics-Samples/tree/feature_xaml_template/Templates/DirectX12XamlApp

它与我的项目有完全相同的问题,所以看起来swapChainPanelXAML 控件是问题所在。

我怀疑一种可能的解决方法是在调试时使用不同的交换链,例如使用创建的交换链IDXGIFactory2::CreateSwapChainForCoreWindow

0 投票
1 回答
175 浏览

visual-c++ - 我们可以从 WINRT/头文件中生成 CPP 文件吗?

我看到我们在 windows 10 SDK 中有一堆头文件和引用(winmd)。有什么办法可以从这些文件中生成 cpp 文件,以便我可以将它们全部编译在一起并从中创建一个库?

基本上,我想要的是:我不想直接在我的应用程序中包含公开可用的 WINRT 头文件。相反,我想创建一个 WINRT 库,其中包含可以在我的应用程序中引用/链接的所有 WINRT 定义。我将通过一些头文件子集公开所需的定义。

让我知道这是否可能。

提前致谢。

0 投票
1 回答
132 浏览

collections - Winrt 和 PhotoEditor 示例中的集合范围

  1. Winrt::Windows::Foundation::Collection 只有接口,没有具体的集合类型。

  2. 我被告知要使用 Platorm::Collections,但不确定您是如何从 Winrt::Windows::????? 获得的。我以为它只适用于 C++/Cx

3.我在 PhotoEditor 示例中复制并使用了 Observable_Vector,但在构建时出现错误,说我的向量类型没有实现 GetTrustLevel()。

  1. 如果我不能在 WInrt 中使用 Platform::Collections,这意味着目前只有一个示例说明如何将集合与 Winrt (PhotoEditor) 一起使用,这也意味着 Winrt 中的唯一具体集合是 phtotEditor 中的 Observable_Vector。

需要帮助澄清 c++-Winrt 中的集合范围。以及在使用来自 PhotoEditor 的相同 Observable_vector 时为什么会出现信任级别错误的任何帮助。

谢谢

0 投票
1 回答
1365 浏览

c++-winrt - 从 C++/Winrt UWP 应用调用旧版 Win32 API

是否可以从使用 C++/WinRT 编写的 UWP 应用调用旧版 Win32 API?我正在尝试从 BluetoothApis.h 调用旧版 API。

这可能吗?应用程序是一个纯桌面应用程序。谢了。

0 投票
1 回答
361 浏览

notifications - 从 C++/WinRT DLL 激活

我正在尝试将 Windows 10 通知的通用包装器编写为 DLL。我已经设法编写了一个 DLL,它几乎可以完成 API 提供的所有功能,但我无法收到移动到操作中心的通知。据我所知,我需要注册 COM INotificationActivationCallback 才能让通知留在操作中心,尽管我不明白为什么。

我希望这个库可以从旧的 MinGW 编译的代码库中访问,因此制作了一个基于使用 C 样式函数访问 C++ 类的 API。支持实现如下,为简洁起见,省略了一些错误处理和其他细节。

除了提到的缺少 Action Center 持久性之外,这非常有效。由于 DLL 是通用的(不是特定于我的一个应用程序),我想避免将 COM 激活烘焙到 DLL 中。我不需要让通知在调用过程的生命周期之外持续存在,但如果通知在 5 秒后没有永远消失,那就太好了。

如果需要,我可以使用 Visual Studio 2017 解决方案创建一个要点。

0 投票
1 回答
394 浏览

c++-winrt - 是否可以使用 C++/winrt 来构建 COM 对象而不是例如使用 ATL?

有没有人尝试使用 C++/winrt 创建 Win32 COM 对象?C++/winrt 文档说明使用它们是可能的,当然也可以创建“新的”UWP COM 对象。我想知道对于一些简单的场景是否可以使用 C++/winrt 头文件而不是 ATL 来生成一些简单的 COM 对象。

0 投票
1 回答
663 浏览

uwp - 无法在 cppWinRT UWP 应用中激活 CoreWindow

我有一个从“空白应用程序”Visual Studio 模板创建的简单 cppWinRT 应用程序。我使用以下处理程序添加了 2 个按钮:

我希望当我单击 button1 并输入时ClickHandler,会创建一个新视图并准备好激活,这样当我单击 button2 并输入时ClickHandler2,我新创建的视图会被激活并因此变得可见。

相反,视图没有改变,我在控制台中得到以下输出:

我点击 Button1

我点击 Button2

现在奇怪的是,如果我在ClickHandleror中的任何位置放置一个断点ClickHandler2,然后按 F10 跳过,然后按 F5 继续,它确实有效,并且新视图以新标题可见。输出如下所示:

我点击 Button1

我单击 Button2,在 中换行ClickHandler2,跳过并继续。

此时,新视图可见并且可以正常工作。

为什么我必须闯入代码才能使我的新视图可见?

0 投票
0 回答
671 浏览

interop - 从 C# 调用 c++WinRt 运行时类

鉴于最近 windows 平台的变化和 C++Winrt 是它自己的平台,从 c++ Winrt 项目中使用 C# 双向 introp 的最新最好方法是什么。

  1. 目前还没有针对 Winrt 的 DLL 项目模板,是因为未来是 Run-time 组件,我们不应该期待 winrt 的 dll 项目。

  2. 是否有显示 c++ winrt 运行时组件的实现和使用的 winrt 示例。

  3. 我仍然可以将 c# 中的 pinvoke 用于 c++ winrt 项目吗,与运行时组件相比,任何性能信息都与 pinvoke 有关。

  4. 考虑到 winrt 没有 dll 项目类型,反向 pinvoke 怎么样

  5. 任何关于编组的 winrt c++ 细节

  6. 托管由 dotnet 提供的托管上下文 API 怎么样,是否有等效的可访问形式 Winrt::Windows。供调用 C# API 的 C++ Winrt 应用程序使用。我认为 .Net 中的类名是 ClrRunTimeHost,这是在 winrt::windows 中。

干杯

0 投票
1 回答
116 浏览

c++ - 包含 Windows 标头时难以解决循环依赖问题

我是使用 COM 接口的新手,我特别想在我的 cppWinRT 应用程序中调用一种方法:

ICompositionGraphicsDeviceInterop::GetRenderingDevice()

#include <windows.ui.composition.interop.h>我遇到的第一个问题是当我尝试添加到 my时似乎是循环依赖问题pch.h,目前看起来像这样:

我收到以下编译器错误:

c:\program files (x86)\windows kits\10\include\10.0.17744.0\winrt\windows.ui.composition.interop.h(100):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

我试图找出导致问题的类型,但我无法确定第 100 行的哪一个windows.ui.composition.interop.h有问题。

我该如何解决这个问题?