问题标签 [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.
c++ - C++/CX 限制
我想使用 C++/CX 语法编写一个库并在其他项目中使用它。
如您所知,普通的旧数据结构不能有任何方法或运算符,因此我们必须做一些事情,例如在另一个类中编写静态方法来提供行为。
我们也不能这样写代码:
或将此属性传递给这样的方法:
我不知道为什么 Windows 运行时库有这些限制。
如何在 .lib 文件中编译 C++/CX 和 Windows 运行时扩展?或者如何在另一个项目中预编译整个 WRL 项目的代码文件?
c++ - 为什么接口成员不能使用私有类类型?
考虑以下代码:
使用 Visual C++ 11 Developer Preview 编译此代码会产生以下错误:
如果ClassA
是公开的,则代码编译不会出错。ClassA
如果是非公开的,为什么代码不能编译?
c++ - WinRT XAML - 托管和非托管 - 它是如何工作的?
关于新的 WinRT API 和针对它的语言(直接或间接)以及它们与 XAML 的关系,我不明白。
- .NET 语言(C#、VB.Net、F#)可用于构建 XAML Metro 应用程序,这些应用程序在“受 API 限制”的 CLR 上运行,而 CLR 又在 WinRT 上运行
- C++ 可用于构建直接在 WinRT API 之上运行的非托管 XAML 应用程序
我的问题是 - 方案 1 中的 XAML 是否转换为 BAML,然后是 MSIL(根据传统的 .NET 应用程序),或者是否有新的机制?如果不是,那么构建非托管应用程序的编译器如何将相同的 XAML 转换为本机指令?这两种情况是否使用相同的编译策略得到解决?如果是这样,那怎么办?
lambda - C++/CX 中 Lambda 参数的引用
我是 lambdas 新手,我很难理解以下 lambda 表达式的参数列表是如何工作的。
该代码是 facebook 身份验证方法的一部分:
具体来说,我不知道thisOperation实际上是如何引用当前正在处理的 WebAuthenticationResult 的。
我将块读为:
1.) 启动异步身份验证
2.) 认证完成后,运行 lambda 定义的函数
但是 lambda 函数需要了解这个特定的身份验证操作(我假设有某种结果会在完成后返回给我们)。根据 lambda 的参数列表,看起来我们只是声明了一个指向 Web 身份验证结果的指针,而实际上并没有将它指向任何东西。
thisOperation如何最终引用了正确的对象?
microsoft-metro - 如何在我的覆盖中调用基类实现 TextBox::OnKeyDown()?
我创建了TextBox类的子类,以便我可以在OnKeyDown()方法中捕获所有键盘事件(KeyDown 事件不会触发所有键盘事件,包括但不限于退格键和箭头键,但 OnKeyDown 会) .
这样做的问题是它有效地禁用了 TextBox,因为它完全绕过了控件的内部键盘处理。显而易见的解决方案是在超类中调用 OnKeyDown。
如何在 Windows 运行时执行此操作?仅仅调用 TextBox::OnKeyDown(...) 是行不通的,因为它会有效地将我带到我的 override。
OnKeyDown() 方法是 IControlOverrides 接口的一部分,似乎我无法为 TextBox 对象实例获取指向该接口的接口指针,而只能获取我的派生对象实例。
c++ - 在 Windows 8 XAML 项目的 C++/CX 中设置 Margin 属性
我正在尝试设置Margin
我的Ellipse
直通代码。如何设置Margin
of p
?
windows - 在 Windows 8 (Metro) 应用程序中获取用于 XAML 控件的 hWnd?
我需要将 hwnd 传递给将原始视频写入帧的本机 dll。在 WPF 中这是可行的,因为您可以从控件中获取 hwnd 引用。这在 Metro 应用程序中是否可行?
c++ - xamltypeinfo.g.cpp 中的 C++ 编译器错误
我一定遗漏了一些明显的东西,但我不确定是什么。
我创建了一个空白的 C++ Metro 应用程序,并且刚刚添加了一个模型,我将在我的 UI 中绑定到该模型,但是我得到了一系列相关的编译器错误xamltypeinfo.g.cpp
,我不确定我错过了什么。
我的头文件如下所示:
我的 cpp 文件如下所示:
没什么太棘手的,但是当我编译时,我得到错误,xamltypeinfo.g.cpp
表明它MyColor
没有在CppDataBinding
.
相关的生成代码如下所示:
如果我从代码编译中删除该Bindable
属性。MyColor
有人能告诉我我错过了什么明显的事情,这样我就可以给自己一个面子并解决问题吗?
collections - 使用可迭代
WinRT API 函数DataPackage::SetStorageItems
采用类型为 的参数IIterable<IStorageItem^>^
。我拥有的是一个单一的StorageItem^
,而不是一个集合。
我对如何从中创建一个IIterable集合有点困惑,因为我找不到实现该接口的 WinRT 集合类。我意识到我可以使用IIterable作为基础创建自己的类,但我的猜测是存在一些我没有看到的现有类。
我在这里想念什么?
我想这很明显,但是:C++、VS11、Win8、Metro。
visual-c++ - C++ 中的 WinRT 异步文件操作
我目前正在开发一个需要一些文本资源的 Metro 应用程序。构建过程的一部分是将所有这些资源复制到应用程序安装目录内的文件夹中。我想做的是收集这些资源文件的列表,并相应地处理每个文件。不幸的是,我这样做的尝试并不成功。
因为我是为 WinRT 构建的,所以我不能使用非常有用的“FindFirstFile”和“FindNextFile”函数。我一直在尝试使用 WinRT 异步文件 IO 操作来完成这项工作。
编译失败:
错误 C2664:“Windows::Foundation::IAsyncOperation<TResult>::Completed::set”:无法将参数 1 从“Windows::Foundation::AsyncOperationCompletedHandler<TResult> ^”转换为“Windows::Foundation::AsyncOperationCompletedHandler<结果> ^'
这个错误对我来说没有任何意义。我已经尝试重写上面的代码,以便 lambda 处理程序函数不是内联的,但它没有产生任何影响。我不确定出了什么问题。
有任何想法吗?提前致谢。