观看 //BUILD 的东西,我看到 WinRT API 可以被 C 代码使用:
我对 Win32 开发人员可用的全新 C API 感到非常兴奋。
在哪里可以找到有关 C WinRT API 的信息?它比现有的 Win32 C API 有什么优势?
观看 //BUILD 的东西,我看到 WinRT API 可以被 C 代码使用:
我对 Win32 开发人员可用的全新 C API 感到非常兴奋。
在哪里可以找到有关 C WinRT API 的信息?它比现有的 Win32 C API 有什么优势?
WinRT 本质上是 COM,因此使用 C 中的 WinRT 组件就像使用 C 中的 COM 组件一样。像以前一样,您可以获得所有 WinRT 组件的 .idl 文件,以及从这些 .idl 文件生成的 .h 文件。.h 文件包括 C++ 和 C 声明(#ifdef __cplusplus
根据需要包装)。您只需#include 它们并开始破解。
但是,它并不完全整洁,例如像这样的 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 文件。