// 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);
開発者プレビューの「C:\ Program Files(x86)\ Windows Kits\8.0\Include\winrt」の中を見て、.idlファイルと.hファイルを確認します。