问题标签 [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.
c++ - 如何取消 C++/WRL 中的异步回调函数?
我正在使用我不熟悉的C++/WRL编写 Windows 10 Store / WinRT 代码。我很想知道如何取消长期挂起的异步操作?
说明它的最好方法是用这个例子:
编辑:当我尝试opAppLic->Cancel()
按照以下答案中的建议添加时,它给了我以下编译器错误:
我需要QueryInterface
那个IAsyncInfo
,还是什么?
EDIT2:这就是我得到的opAppLic
变量类型:
不,它没有Cancel
方法:
c++ - 当 Windows 10 应用商店应用的试用许可证到期时,永远不会引发 OfflineLicensesChanged 事件
我正在尝试为我的 Win32 应用程序转换为 Windows 10 应用商店的 UWP 的以下代码。该应用程序根据试用许可证在商店中发布 7 天。
以下代码的目标是在应用程序的试用期到期时收到通知:
我让应用程序运行并等待许可证过期,但从未引发OfflineLicensesChanged 事件。
知道我在做什么错吗?
c++ - 如何正确等待异步 WinRT 回调函数停止?
我之前问过类似的问题,但那里的答案不符合我的要求。让我解释。
我从 DLL 调用以下代码,以从 Windows 应用商店应用程序在 Windows 10 上执行 WinRT 操作。该代码使用WRL:
但是当我调用该IAsyncInfo::Cancel()
方法并立即卸载 DLL 时,这会导致竞争条件,有时会导致应用程序崩溃。
纯粹是实验性的,我注意到在调用IAsyncInfo::Cancel()
框架后调用我的onAppLicCompletedCallback
方法status
set to AsyncStatus::Canceled
。IAsyncInfo::Cancel()
但是这个调用也会在方法返回后很长时间异步发生。
所以我想知道,有没有办法等待所有 WinRT 异步回调完成运行,然后才能继续卸载我的 DLL?
c++ - WRL SystemMediaTransportControls E_NOINTERFACE
我正在尝试使用 WRL(工具包 v140)在 Visual C++ 中使用 SystemMediaTransportControls,但遇到以下问题:
上面的代码返回 E_NOINTERFACE,但如果我按照 MSDN 教程激活 IUriRuntimeClassFactory,它就可以工作。
编辑:我在调用这些函数之前已经对其进行了初始化。
c++ - 本机 C++ 将 IIterable 传递给 WinRT
我有一个使用 WRL(Windows 运行时模板库)访问 WinRT API 的 Win32 应用程序。
如何调用IIterable
从本机 C++ 获取的函数?我的问题是获得实现IIterable
或IVector
.
作为一个具体的例子,假设我想调用SetDefaultMenuItems
Include\10.0.14393.0\winrt\windows.ui.input.h:
似乎没有原生 C++IIterable
或IVector
原生 C++ 的库存实现。
windows-runtime - 如何在 WinRT Store App 上实例化 H264 编码器
我希望能够使用 Media Foundation IMFTransform 对视频帧进行 H264 视频编码。这在 Win32 中很容易实现,您可以在其中使用 MFTEnumEx 枚举转换并找到 H264 编码器。
但是,在 WinRT(商店应用程序)上,我找不到实例化的方法。我注意到有一个类 CMSH264EncoderMFT,但没有定义用于 CoCreateInstance 上的 CLSID。
和:
未为 WinRT 应用定义 CLSID_CMSH264EncoderMFT。
并尝试:
它说 CMSH264EncoderMFT 类不完整,并说“使用未定义类型'CMSH264EncoderMFT'”。甚至不知道 Make 的语法是否正确或合适......
有没有人知道如何为 WinRT 做到这一点?
c++ - 无法创建 D2D1 设备
我正在尝试遵循 Microsoft 的DirectX 和 XAML 互操作官方教程,以便为 UWP 应用程序的图像基元绘图制作 C++ 运行时库。然而,代码充满了错误和错别字。我已经设法调整了它的一部分,但是我遇到了运行时错误。
我已将代码改编如下。
在调试代码时,我可以看到d2d1
句柄正在返回E_INVALIDARG
。我尝试传递设备属性而不是NULL
禁用多线程访问,但错误仍然存在。此行之前的对象似乎已正确初始化。
什么可能导致这种行为?
编辑
VTT 的评论有助于构建设备,但该设备似乎不合适。我改编的代码如下。
但是,这里的BeginDraw()
方法失败了E_INVALIDARG
。我假设这是因为设备结构不正确。
c++ - WinRT c++:获取包系列名称
在 C# 上,可以使用以下代码:
我无法在任何地方找到有关如何使用C++
. 看来我需要为此使用WRL
。
我使用 Microsoft Visual C++ 2015。
c++ - 使用 WRL 实例化 SpatialSurfaceObserver
我正在尝试将 SpatialSurfaceObserver 类用于 Windows Mixed Reality。我在关注这个:https ://developer.microsoft.com/en-us/windows/mixed-reality/spatial_mapping_in_directx
然而,我遇到了障碍。示例状态我应该像这样简单地创建一个实例: m_surfaceObserver = ref new SpatialSurfaceObserver();
但是,我使用的是纯 C++,没有 C#,没有 C++/CX 等。到目前为止这没问题,我期待使用激活工厂来创建一个实例,但据我所知,这个类不包含任何创建实例的函数。
基本上我想用这个:
但是没有我可以使用的功能。
然后我找到了 ActivateInstance,并认为应该可以:
但这也不能编译,它总是抱怨 ISpatialSurfaceObserver 不包含“InterfaceType”成员。
我也遇到了“Make”和“MakeAndActivate”,但并不真正了解如何使用它们以及它们是否适合我的情况。
知道我缺少什么吗?