问题标签 [c++-cx]

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

microsoft-metro - 在 C++/CX Metro 应用程序中使用 System.Xml.Linq

很想知道我是否可以从 C++/CX Metro 应用程序中使用 System.Xml.Linq。Metro C# 应用程序可以简单地引用 System.Xml.Linq.dll(默认情况下似乎这样做),但我记得 C++/CX 应用程序需要一个 WinMD 文件,而且我找不到这样的 System.Xml 野兽.Linq。

提前致谢。

0 投票
1 回答
1040 浏览

sockets - 在 Metro 中处理套接字创建/销毁时的泄漏

我正在尝试在 Windows 8 Metro 下编写网络应用程序。我的应用程序需要在运行时创建/销毁一些套接字。在尝试研究 WinRT 的网络 API 时,我发现了以下问题 - 我的进程在创建/销毁套接字时不断增加它的句柄数。为了确认我写了以下示例:

此任务在主 App 的线程中创建。我已经设置了 2 个断点并在那里运行 Sysinternal 的 Handle 实用程序:

在检查点 1(在开始创建/销毁循环之前):

在检查点 2(循环之后):

据此,我的应用程序不断泄漏 Timer、WaitCompletionPacket 和其他句柄。(我试图在循环后等待一段时间或在循环中插入延迟,希望工作人员能够完成他们的工作,但没有帮助)。那么这个示例有什么问题,我应该如何创建/绑定/销毁套接字对象?我正在使用 Windows 8 Consumer Preview,构建 8400。

0 投票
1 回答
617 浏览

textbox - 如何在 C++/CX 上为 Windows Metro Style 应用程序编写文本框控件?

我需要为 Metro Style 应用程序编写一个文本框控件。当我的应用程序在平板电脑上运行时,我需要这个文本框可以调用触摸键盘。

微软建议我:

如果您正在编写自定义文本控件(无论是否在 Xaml 中),您需要确保它支持 UI 自动化 TextPattern 和 ValuePatterns 并关注更改事件

您将需要提供一个支持 ITextProvider 和 IValueProvider 的 AutomationPeer。

但我无法弄清楚我实际上需要做什么。我将不胜感激。

0 投票
0 回答
264 浏览

microsoft-metro - 从不同路径加载字符串资源

在 Windows 8 C++ 应用程序中,我想加载一个不属于项目/应用程序包的字符串资源文件。这可能吗?

不幸的是,这不起作用:(我想我已经读过LoadPriFiles()项目外的文件是不允许的)

0 投票
2 回答
992 浏览

c++ - std::shared_ptr 之间的区别和类型^

我不太明白 shared_ptr 和 C++/CX 中的新句柄符号 (^) 之间的区别。从我读过的内容来看,他们似乎在引用计数和内存管理方面做同样的事情。我错过了什么?

0 投票
1 回答
2095 浏览

windows-8 - Platform::Collections::Map - 以枚举为键

我 ac# dev 试图进入 c++,我正在编写一些自定义控件。我需要以下复杂 c# 字典的 c++ 等价物

PinchscapeColor 和 PinchscapeColorLevel 是简单的 c# 枚举

我像这样计算一个特定的颜色/颜色级别组合(在c#中)

我在 C++ 中尝试这样做已经成功了:

我的枚举:

我像这样在我的头文件中定义了一个映射

但我收到以下编译器错误:

程序文件 (x86)\microsoft visual studio 11.0\vc\include\collection.h(1118):错误 C3986:“调用”:公共成员的签名包含本机类型“std::less<_Ty>”(这是第一行,它会永远持续下去)

有谁知道我做错了什么?我以为这会很容易:(

编辑

请在下面找到一个最小的代码示例,它是您复制问题所需的所有代码:

1) Class1.h

Class1.cpp

希望能帮助您重现问题

感谢任何花时间帮助我解决这个问题的人

0 投票
3 回答
1870 浏览

c++ - Winrt / XAML / C++:从字符串值获取颜色

我目前正在WinRT用 C++ 编写一些组件,我需要弄清楚如何获取颜色字符串(例如 "#FF448DCA" )并将其转换为 aColor以用于构造 a SolidColorBrush

WPF我们有BrushConverter,但我们似乎没有等价物WinRT

我可以C#通过拆分字符串,转换为十六进制块等来做到这一点,但这超出了我目前的C++技能。

在我花大量时间尝试解决之前,有没有人有一个快速的答案(我的 C++ 会改进,但我的交易线会受到影响)

谢谢

0 投票
1 回答
232 浏览

mstest - 如何对 Metro 可执行文件中定义的类进行单元测试

使用 VS11 RC。我有一个用 C++ 编写的客户端可执行文件,我正在尝试使用 C# 单元测试库(Metro 风格应用程序)项目进行测试。测试失败,异常Class not registered HRESULT 0x80040154 (REGDB_E_CLASSNOTRG);我相信这与测试项目中的警告有关:可执行文件'Client.exe'被指定为winmd文件'C:.Client.winmd'的实现。仅支持进程内服务器在应用清单中生成注册信息。您需要在应用清单中指定进程外服务器注册信息。

在我看来,MSTest 正在寻找作为 COM 对象的类,并且警告告诉我需要将其指定为进程外服务器。不幸的是,我不认为我想这样做,因为它是一个可执行文件,即使这是我想要的,我也不知道该怎么做。

我可以简单地将被测类移到另一个项目中,但我不想这样做没有比“我无法让它工作”更好的理由。

有没有办法对 Metro 可执行文件中定义的类进行单元测试?

0 投票
2 回答
968 浏览

xaml - CoreDispatcher.ProcessEvents() 导致间接崩溃?

我必须将一些遗留代码移植到 Metro/WinRT(使用 C++/CX)。因为这些对话框提供了它们自己的消息循环(使用DialogBoxParam()),所以调用代码将一直等到用户单击了消息框上的按钮。

我目前正在尝试为使用 XAML 和弹出控件的旧消息框类编写替代品。要重现相同的行为,我必须在调用线程中等待,但还必须保持 UI 响应。我发现,它CoreDispatcher::ProcessEvents()可以在循环中使用,以继续处理事件(是的,我意识到这不是很漂亮,但我不想将我们所有的遗留代码更改为新的线程模型)。但是,我遇到了一个让我的应用程序不断崩溃的问题。

这是一个重现该问题的最小示例(只需创建一个 XAML 应用程序并将其连接到一个按钮):

这似乎适用于使用两个按钮打开和关闭弹出窗口的前一两次尝试。然而,经过几次尝试,应用程序将立即崩溃Windows.UI.Xaml.dll,同时尝试取消引用空指针。我也可以在 C# 中重现它(使用几乎相同的代码)。

有谁知道,这里发生了什么?或者对替代方法的建议?

0 投票
1 回答
1272 浏览

pointers - C++/CX WinRT 指针的引用计数的线程安全

在给定用例的情况下,我的印象是对 WinRT 对象的引用计数是线程安全的。但是我遇到了一个我不知道任何其他方式来解释的错误。例如,以下代码很快崩溃:

当读/写竞速时, WinRT 指针(即 ref 类类型C^)是否应该被正确引用计数?是否有一个我不知道的单独问题导致了这次崩溃?