programing

C에서 WinRT를 사용하시겠습니까?

goodsources 2022. 8. 28. 09:59
반응형

C에서 WinRT를 사용하시겠습니까?

//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(필요에 따라서).그냥 #그들을 포함시키고 해킹을 시작할 수 있습니다.

단, 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 키트\8.0.idl 및 .h 파일을 표시하려면 개발자 미리보기에 \include\winrt"를 입력합니다.

언급URL : https://stackoverflow.com/questions/7436144/using-winrt-from-c

반응형