51

//BUILD を見ていると、WinRT API が C コードで使用できることがわかりました。

ここに画像の説明を入力

私は、Win32 開発者が利用できる新しい C API にかなり興奮しています。

C WinRT API に関する情報はどこにありますか? 既存の Win32 C API よりも優れている点は?

4

1 に答える 1

73

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 ファイルを確認します。

于 2011-09-15T20:22:13.253 に答える