从C使用WinRT?

看着// BUILD的东西,我看到WinRT API可以被C代码使用:

在这里输入图像说明

Win32开发人员可以使用全新的C API,我感到非常兴奋。

我在哪里可以find关于C WinRT API的信息? 如何比现有的Win32 C API更好?

WinRT基本上是COM,所以使用C的WinRT组件就像使用C的COM组件一样。和以前一样,你可以得到所有WinRT组件的.idl文件,以及这些.idl文件生成的.h文件。 .h文件包含C ++和C声明(根据需要包装在#ifdef __cplusplus中)。 你可以#包括他们,开始黑客攻击。

虽然它不完整,例如像这样的C ++ / CX:

 Windows::UI::Xaml::Controls::TextBlock^ tb = ...; tb->Text = "Foo"; 

这相当于这个香草C ++:

 Windows::UI::Xaml::Controls::ITextBlock* tb = ...; HSTRING hs; HRESULT hr = WindowsStringCreate(L"Foo", 3, &hs); // check hr for errors hr = tb->set_Text(hs); // check hr for errors tb->Release(); 

会用C写成:

 __x_Windows_CUI_CXaml_CControls_CITextBlock* tb = ...; HRESULT hr; HSTRING hs; hr = WindowsCreateString(L"Foo", 3, &hs); // check hr for errors hr = __x_Windows_CUI_CXaml_CControls_CITextBlock_put_Text(tb, hs); // check hr for errors IUnknown_Release(tb); 

在Developer Preview中查看“C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ winrt”以查看.idl和.h文件。