看着//BUILD 的东西,我看到 C 代码可以使用 WinRT API:
对于 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 文件。
关于c - 从 C 使用 WinRT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436144/