49 votes

Utilisation de WinRT à partir de C?

En regardant les éléments // BUILD, j'ai vu que les API WinRT peuvent être consommées par le code C:

entrez la description de l'image ici

Je suis plutôt enthousiasmé par une nouvelle API C disponible pour les développeurs Win32.

Où puis-je trouver des informations sur l'API C WinRT? Comment est-il meilleur que l'API Win32 C existante?

70voto

Pavel Minaev Points 60647

WinRT est fondamentalement COM, donc l'utilisation de composants WinRT à partir de C est comme l'utilisation de composants COM de C. Comme avant, vous obtenez .fichiers idl pour tous les composants WinRT, et aussi .h les fichiers produits à partir de ceux-ci .fichiers idl. L' .h les fichiers comprennent à la fois le C++, et les déclarations en C (enveloppé dans #ifdef __cplusplus ). Vous pouvez simplement #include eux et commencer à bidouiller.

Ce n'est pas exactement soigné, bien que, par exemple, quelque chose comme ça C++/CX:

Windows::UI::Xaml::Controls::TextBlock^ tb = ...;
tb->Text = "Foo";

ce qui est équivalent à la vanille 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();

serait écrit en 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);

Regarder à l'intérieur "C:\Program Files (x86)\Windows Kits\8.0\include\winrt" Developer Preview pour voir la .idl et .h fichiers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X