WinRT по своей сути является COM, поэтому использование компонентов WinRT из C похоже на использование компонентов COM из C. Как и раньше, вы получаете файлы .idl для всех компонентов WinRT, а также файлы .h, созданные из этих файлов .idl.Файлы .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);
Загляните в "C: \ Program Files (x86) \ Windows Kits \ 8.0 \ Include \ winrt" в Preview для разработчиков, чтобы увидетьфайлы .idl и .h.