问题标签 [wrl]

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 回答
626 浏览

c++ - WinRT WRL ABI 集合

我尝试与 WRL 合作并坚持收藏。

我需要传递其他属性:

但 IIterable 没有方法来填充它,并且与IVector<T>(它有填充方法,但它是抽象接口)。

我需要像那里一样实现我自己的向量还是存在更简单的方法来处理集合?什么样的集合在这些接口下返回 ABI 函数?

0 投票
1 回答
333 浏览

c++ - 如何激活 ref 类的实例

说我有这门课:

我可以像这样激活这个类的一个实例:

但是我将如何在原始 C++ 中做到这一点?

我已经尝试过了,但它不起作用:

当我指定 Windows 运行时类名称(例如“Windows.UI.Xaml.Controls.Button”)时,上面的代码确实有效,而不是我自己的引用类“App1.Page1”。


或者,假设我已经声明了一个Page1App1命名空间中命名的公共 ref 类,我如何IInspectable*从 HSTRING“App1.Page1”中激活该类的实例?

0 投票
1 回答
504 浏览

c++ - 使用 C++ WRL 打开 UsbDevice - ERROR_INVALID_HANDLE

我正在尝试获取一个Windows::Devices::Usb::UsbDevice引用我拥有的特定 USB 设备的对象,以便将其传递给第 3 方插件。由于项目限制,我无法使用该C++/CX扩展程序。

在查看了无数线程、答案和参考资料后,我想出了一个初始实现,它使用一些黑魔法来调用我需要的 WinRT 类的静态方法。唯一的问题是,即使没有调用结果为 failed HRESULT,最后一次调用FromIdAsync也不起作用,给我ERROR_INVALID_HANDLE( 6) 作为GetLastError().

简单地阅读错误名称会让我觉得错误在于获取设备的 ID,因为这是我在该调用中传递的唯一句柄,但我尝试传递一个常量字符串(我知道这是正确的)并且它产生了相同的结果。

这就是我调用FromIdAsync* 的方式:

这就是我得到devId*的方式:

另外,我确实以这种方式初始化 WinRT:


*if (FAILED(hr)) return nullptr;为简洁起见,删除了多个。

0 投票
1 回答
220 浏览

c++ - D3D12 项目:取消引用 nullptr

我正在使用他们 GitHub 页面上的 Microsoft 示例,即使我的代码基于他们的代码,我也没有达到相同的结果。这两个项目都有这些 ComPtrs,但在我的项目中它们都是空的(0x0000000000000000),而在示例中它们工作得很好。

具体来说,这一行会导致调试器中断。

编辑:我的代码错误地创建了导致错误的 m_device。

0 投票
1 回答
127 浏览

c++ - Calling Microsoft::WRL::Make for a constructor with more than 9 arguments

Microsoft::WRL::Make seems to be defined with a maximum of 9 arguments that will get forwarded to the object's constructor. std::tuple is an obvious solution, but far from ideal. Is there a more elegant way of solving this problem?

If any maintainers of WRL are lurking around, please add variadic template support to Make (as well as RuntimeClass, etc. while you're at it)

0 投票
2 回答
295 浏览

uwp - UWP 是否支持 WRL

我有一个基于 WRL 的旧媒体扩展示例代码库,它在 Windows 8.1 上运行良好。但是移植到 UWP 时,合并元数据时报错。

UWP 现在支持 WRL 吗?

0 投票
0 回答
173 浏览

c++11 - 用于 Windows 运行时的现代 C++

我想构建一个 C++ 通用 Windows GUI 应用程序。
我只想使用 C++11,而不是 C++/CX,我为 Windows Runtime
下载了 Modern C++ ,但只有一个简单的应用程序使用在 App::OnLaunched() 中硬编码的 xaml。是否有更完整的示例,比如 VS2015 中的 UWP 应用模板?

0 投票
1 回答
84 浏览

c++-cx - 如何通过 WRL 注册 IClipboardStatics 活动

我可以通过以下方式获得 IClipboardStatics:

但是如何调用 add_ContentChanged()?不确定如何传递我的 lambda 函数?

谢谢您的帮助。

0 投票
0 回答
169 浏览

c++ - C++ ComPtr 回调的范围

我一直在阅读 WRL,特别是使用 Callback 和 ComPtr 来实现异步操作。但是,以这种方式使用时,我似乎无法得到关于 ComPtr 生命周期的明确答案。回调利用异步函数返回的信息,但不依赖应用程序的任何其他信息,所以我不想等待它的完成。例如:

我的印象是,由于 ComPtr 是一个智能指针,所以在回调完成并且 refcount == 0 之前它不会被垃圾收集,这是正确的吗?

0 投票
1 回答
983 浏览

c++ - 如何为 C++/WRL 初始化 IVectorView 的实例?

我正在尝试使用C++/WRLget_Skus() (不是 C++/CX)调用方法IStoreProduct来检索其Skus属性,但找不到任何合适的代码示例。该方法是这样定义的(我从 Visual Studio 的头文件中得到它):

所以当我尝试这样做时:

它给了我一个错误:

'ABI::Windows::Foundation::Collections::IVectorView':无法实例化抽象类

我对WRL. 有人可以告诉我我应该如何调用该方法吗?