如何在C++/CX中内省对象?我知道如何获取它的类名(使用IInspectable),但如果我只有一个方法的名称(字符串),我无法弄清楚如何获取其属性列表或如何调用方法.我在这里和谷歌搜索了一个答案,但我发现的是与WinRT的.NET层有关(System.Reflection命名空间似乎在C++/CX中不可用).
这是关于新的WinRT API以及针对它的语言(直接或间接)以及它们与XAML的关系,我不明白.
我的问题是 - 方案1中的XAML是否转换为BAML,然后转换为MSIL(根据传统的.NET应用程序),或者是否有新的机制?如果没有,那么构建非托管应用程序的编译器如何将相同的XAML转换为本机指令?这两种方案是否可以使用相同的编译策略解决?如果是这样,那怎么样?
我有一个类型的对象Map<String^, Object^>^
.如何以C++/CX方式迭代?我试图使用迭代器,但我不清楚语法.文档没有提供示例.
我正在尝试使用Share Charm在Windows 8 Metro C++应用程序中共享图像.为此,我需要先将图像加载到StorageFile ^.我认为它应该看起来像:
create_task(imageFile->GetFileFromPathAsync("Textures/title.png")).then([this](StorageFile^ storageFile)
{
imageFile = storageFile;
});
Run Code Online (Sandbox Code Playgroud)
其中imageFile
在头文件中定义
Windows::Storage::StorageFile^ imageFile;
Run Code Online (Sandbox Code Playgroud)
这个实际的代码会抛出这个例子
An invalid parameter was passed to a function that considers invalid parameters fatal.
Run Code Online (Sandbox Code Playgroud)
这似乎非常简单,但是关于在Metro中共享的文档很少,并且唯一的Microsoft示例显示了如何使用FilePicker进行共享.
如果有人知道如何正确地做到这一点,将非常感激.
我目前正在用c ++编写一些WinRT自定义控件,我的编译器/ intellisense告诉我不允许使用静态构造函数.
我需要设置一些静态数据,并且我可以使用私有bool实例标志,并且在我的类的第一个实例化中,我可以创建静态数据等.(有效地实现相同的事情).
但是,也许我错过了一些东西,因为这看起来有点啰嗦.
在WinRT/c ++中,静态构造的规范替代方法是什么?
谢谢
Visual Studio 2012(及更早版本)提供预定义的#defines,以便适当地#ifdef ed源代码,请参阅http://msdn.microsoft.com/en-us/library/b0084kay.aspx
我想#ifdef一些C++代码,如果它正在编译(或不编译)为Windows 8运行时(运行时C++/CX的组件扩展),即使用编译器开关/ ZW,请参阅http://msdn.microsoft.com /en-us/library/hh561383.aspx和http://msdn.microsoft.com/en-us/library/xey702bw.aspx
检查C++或CLR编译分别由__cplusplus和__cplusplus_cli(或__CLR_VER)提供,但似乎没有#ifdef for C++/CX/Zw Windows Runtime编译的方法!?
有谁知道吗?谢谢
所以我有一个使用C#定位任何CPU的Windows应用商店应用,这样单个应用就可以在任何Windows 8 x86/x64台式机/平板电脑或ARM平板电脑上运行.我需要在C++中添加一些特殊代码,它们似乎没有选择以任何CPU为目标.代码将在x86/x64上编译和运行,如果我将整个解决方案更改为ARM,它将编译并在那里运行.所以我正在寻找一种方法来制作C++目标任何我认为可能不可能的CPU.或者多次编译C++库(x86,x64和ARM)并将所有这些库都包含在appx包中.我花了大约3个小时在C++/CX上阅读Windows Store开发文档,但还没有找到任何方法.当然我会继续寻找,但我希望其他人已经看到了如何做到这一点,并能指出我正确的方向.
我涉水回到C++世界的一个项目,而在C++/CX花费了大量的时间与C#和新的东西之间,我有点生疏了.
什么时候适合使用ref class
C++/CX中引入的类型?
内置的引用计数句柄似乎很好,似乎是尽可能使用ref类的一个很好的理由(忽略可移植性问题).但是,我不确定这些类型是否增加了额外的开销?或者,如果还有其他原因限制其使用?
是否可以在Windows运行时的Windows Phone 8变体中创建基类,其他公共引用类可以使用?
对于Windows应用商店应用,MSDN记录了一种方法(见下文).
然而,这依赖于Windows::UI::Xaml::DependencyObject
允许未密封的基类.
由于Windows Phone 8没有C++/XAML编程功能,因此该类不可用.您不能创建在公共引用类中可见的顶级对象,因为这会给出编译器警告.
是否有其他合适的基类可以在Windows Phone 8中使用而不是代替Windows::UI::Xaml::DependencyObject
?
namespace InheritanceTest2
{
namespace WFM = Windows::Foundation::Metadata;
// Base class. No public constructor.
[WFM::WebHostHidden]
public ref class Base : Windows::UI::Xaml::DependencyObject
// DependencyObject NOT AVAILABLE ON WP8!
{
internal:
Base(){}
protected:
virtual void DoSomething (){}
property Windows::UI::Xaml::DependencyProperty^ WidthProperty;
};
// Class intended for use by client code across ABI.
// Declared as sealed with public constructor.
public ref class MyPublicClass sealed : Base
{ …
Run Code Online (Sandbox Code Playgroud) 从语法和编译过程来看,C++/CX和C++/CLI有什么关系? https://softwareengineering.stackexchange.com/questions/162168/what-are-c-cx-and-c-cli-and-how-do-they-relate-to-c-and-winrt不是那么全面。有人有更多信息吗?
c++-cx ×10
c++ ×4
c++-cli ×2
windows-8 ×2
xaml ×2
clr ×1
reflection ×1
visual-c++ ×1
windows ×1