问题标签 [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 投票
2 回答
542 浏览

c++ - 升级到 Windows 10 版本 1809 SDK 后,我无法编译使用 C++/WinRT 的项目

当我将 Windows SDK 升级到 17763 时,我发现我无法编译我的项目,并且我收到错误消息“midl:错误 MIDL9008:内部编译器问题 - 有关如何找到解决方法的建议,请参阅文档。”。这是输出:

我试图解决这个问题,我发现如果我删除接口的定义它会成功编译。但我需要这些定义,因为它很重要。这是我删除的 IDL 定义。

我想知道是什么原因造成的,是我的错还是 Windows SDK 的。

0 投票
1 回答
341 浏览

visual-studio - 如何在最新的 cppwinrt 中 co_await GetFilesAsync?

在 cppwinrt 人员的帮助下,我之前设法枚举了 StorageFolder 中的文件;当时我缺少所需的#include。工作正常,直到我使用 Visual Studio 15.9.0 Preview 3 现在提供的 BlankApp 作为模板 C++/WinRT 应用程序作为起点重建应用程序。现在,相同的代码会产生一个我无法通过的链接错误。让我引用有问题的行:这是我称为 ResourceManager 的类的一部分;它包含对以这种方式定义的文件夹的引用:

然后该类有一个方法,声明为

哪个 co_await 调用以获取适当的 StorageFolder 作为 m_activities_folder ,一旦完成,尝试枚举文件夹内容:

这就是问题所在。以前可以正常工作的方法现在会产生以下链接错误:

(后跟目标文件的路径)包含和名称空间与以前相同,我是否在参数中使用完全限定名称似乎并不重要。

但我无法弄清楚问题是什么。在 C++/WinRT 和 SDK 10.0.17666.0 的最新版本中,似乎发生了一些变化。我真正希望看到的是(对于每种方法,真的)几行示例代码来演示 C++/WinRT 的使用,但现在仅仅解决这个问题就足够了!

[更新] 当此调用在返回类型为 IAsyncAction 的方法中时,链接错误引用 IAsyncOperation 是否重要?

[更新 2] 使用 PhotoEditor 示例应用程序作为模型我想知道创建 FileQuery 并在其上运行 GetFilesAsync 是否会更好。所以:

当然 Windows.Storage.Search 已经是#included,并且它的命名空间声明如上。但现在我在 QueryOptions 上得到一个额外的链接错误:

BlankApp 项目设置是否存在一些基本问题?

0 投票
1 回答
260 浏览

c# - Windows.AI.MachineLearning.Preview - 从流中加载模型引发异常

我正在将WindowsML神经网络推理集成到针对 Windows 10(Windows SDK 版本 17134)的项目中。

从文件加载模型以及其他推理步骤都可以正常工作。

但从流中加载模型始终抛出hresult_not_implemented异常(使用 C++/WinRT)或“方法或操作未实现”。异常(使用 C#)。

C#代码:

这是 17134 版本的 Windows SDK 的已知问题,还是这种方法应该有效?在链接的文档中未找到任何限制信息。

任何帮助或信息将不胜感激。谢谢!

PS我知道Windows.AI.MachineLearning.Preview命名空间自Windows SDK 17763以来已被弃用,但我目前的限制是17134版本,所以我被迫使用预览。

0 投票
1 回答
293 浏览

uwp - 构建创建 UWP cppwinrt SolidColorBrush 时出错

为文本块创建实心画笔(cppwinrt)时,我在构建时遇到错误,使用:

错误:LNK2019 未解析的外部符号“公共:__thiscall winrt::Windows::UI::Xaml::Media::SolidColorBrush::SolidColorBrush(struct winrt::Windows::UI::Color const &)”

当我取出solidbrush 时出现错误,并且我还尝试了其他版本的solidbrush 时出现相同的错误。

0 投票
2 回答
588 浏览

c++ - 是否可以使用 C++/WinRT 以 Windows 10.0.14393 为目标?

我想使用 C++/WinRT 为卡在 Win 10.0.14393(或 1609)上的 Lumia 制作一个应用程序。我创建了一个空白应用项目

  • 目标平台版本:10.0.17134.0 和
  • 目标平台最小值 版本:10.0.14393。

项目编译失败,出现以下错误:

错误 C2039:“DisconnectUnloadedObject”:不是“winrt::BlankApp2::implementation::MainPageT”的成员

错误 C2039:“UnloadObject”:不是“winrt::BlankApp2::implementation::MainPageT”的成员

这是错误还是故意行为?请注意,设置任何更新的分钟。版本导致成功构建。

0 投票
1 回答
48 浏览

uwp - 在 Window OS 中自定义共享面板

我在 UWP 窗口中使用以下源创建了一个共享源应用程序 -请参见 Github 上的此处

在此处输入图像描述

我只想通过操作系统将图像共享到 Facebook 和 Instagram,但共享面板显示了多个我不需要的应用程序。有什么方法可以自定义共享面板吗?

0 投票
1 回答
2236 浏览

uwp - 如何在 .IDL 文件中声明枚举?

我有一个运行时类,我想添加一个枚举。我已经按照 MSDN 文档的建议尝试了以下语法:https ://docs.microsoft.com/en-ca/uwp/midl-3/intro

但是,我从 MIDL 收到以下错误:

什么是正确的语法?我正在使用10.0.17763.0Windows SDK 版本。

0 投票
1 回答
542 浏览

win2d - 如何在 Win2d 中使用文本、矩形、颜色和格式参数绘制文本?

在测试一些 Kenny Kerr 的 C++/Winrt 示例代码时,我发现了以下画布绘图操作演示:

绘图操作在我的项目中效果很好,除了文本绘图 - 那条线不会像写的那样构建。VS 说参数 2 不能从 Rect 转换为浮点数:

  • 它似乎想将此调用解释为采用四个浮点参数的版本,即使我键入第二个参数也是如此。然而,winrt 中的一个 DrawText 方法清楚地表明参数 2 可以是一个矩形。这是唯一也使用颜色和格式参数的变体:

    模板 void consume_Microsoft_Graphics_Canvas_ICanvasDrawingSession::DrawText(param::hstring const& text, Windows::Foundation::Rect const& rectangle, Windows::UI::Color const& color, Microsoft::Graphics::Canvas::Text::CanvasTextFormat const& 格式) const { check_hresult(WINRT_SHIM(Microsoft::Graphics::Canvas::ICanvasDrawingSession)->DrawTextAtRectWithColorAndFormat(get_abi(text), get_abi(rectangle), get_abi(color), get_abi(format))); }

在我看来,VS 并没有告诉我我的实现有什么问题——也许还有其他问题,而不是参数 2 不是浮点数?我试图密切复制样本对 DrawText 的使用。

[更新] 好奇和好奇:突然 VS 也返回文本格式的链接错误 - 以前它没有问题,但只有调用 DrawText。也许这是一个暗示。我试着改变椭圆的颜色;文本格式不会链接;将椭圆颜色改回原来的样子,但它仍然无法构建,尽管我根本没有触及格式声明。这是链接错误:

所以,现在如果我注释掉文本格式的声明,它将构建并运行。以前它与该礼物一起运行良好 - 只是无法链接 DrawText 调用。

0 投票
1 回答
286 浏览

win2d - 如何在 Win2D 画布绘图会话中绘制大小的 svg 图像?

我有大量 svg 格式的符号,需要在 Win2D 的 Canvas 绘图会话中绘制。其中许多会重复,所以我打算提前将它们加载到库中。似乎有不同的方法可以做到这一点。一个是 CanvasSvgDocument,我可以使用其 LoadAsync 方法从 Uri 加载它,并使用 DrawingSession 方法 DrawSvg 及其覆盖进行绘制。麻烦的是,DrawSvg 忽略了 size 参数并且总是以相同的大小绘制图像。例如,在绘图会话中:

无论 symbolSize 是什么,图像总是以相同的小尺寸呈现。size 参数是否有问题,或者我误解了它的用途?无论如何,这可能不是绘制 Svg 的最佳方式。这些是在可缩放视图中,需要在任何放大倍率下清晰地绘制。

[更新] 我注意到我的 size 参数类型错误,应该是

但是结果是一样的,这也许就是编译器接受两者的原因。也就是说,我希望 Size 类型为 Float2。但它不应该影响绘图吗?

[更新] 文档说 Size 参数是指视口大小,而不是 viewbox 大小。如果参与创建此类的人可以在此调用中描述 Size 参数的目的,也许就足够了 - 如果它不打算确定渲染图像的大小,是否有其他方法可以做到这一点?谢谢。[更新]更具体地说,在进一步研究后:缩放此可缩放矢量图像需要更改视框,而 DrawSvg 的参数显然仅影响视口,即要渲染的图像部分。有没有办法将图像放大或缩小?如果没有,我还不如使用 pngs。如果您无法缩放 svg,那有什么意义呢?

[更新] 仍然希望对此提供反馈。我在其他地方听说过,可以在绘制数百个符号中的任何一个之前更改整个画布的变换。还没有想出如何做到这一点,但出现了另一个想法:CanvasSvgAspectScaling 枚举似乎包含一些相关的内容:具有适当值的 PreserveAspectRatio 意味着“将视图框缩放到使整个视图框可见所需的最大值在视口中。” 听起来这意味着:将视口设置为所需图像的大小,将 CanvasSvgAspectScaling 设置为具有该枚举值,然后 svg 将绘制以填充视口,这是 CanvasDrawingSession.DrawSvg 中提供的参数。这会很好,但它没有效果。

0 投票
0 回答
102 浏览

visual-c++ - 如何对 UWP 组件中的非导出类进行单元测试 (C++/WinRT)

我正在寻找一些关于我对 UWP 组件进行单元测试的策略的指导。

我正在使用 C++/WinRT 投影开发 UWP 组件。该组件包含一个管理与蓝牙设备通信的助手类。我想为该助手类(BthDevice)编写单元测试,而不将它们导出到 UWP 组件的界面。

我首先遵循一些测试非导出 DLL 类的指南。具体来说,我创建了一个新的 UWP 单元测试项目。我明确添加了我的项目的包含目录,包括 BthDevice.h,并将类的 BthDevice.obj 添加到链接器设置中。我与一些链接器错误作斗争,现在它失败了,因为我在 UWP 组件中使用了预编译的头文件。我暂时放弃了。

感觉这应该是一个简单的任务,而我做错了。欢迎任何指导!谢谢。