在Win32 API中,相当于C ++ WinRT的什么是注册窗口类,创建窗口,然后通过消息泵循环使其保持活动状态?
我目前正在查看和阅读WinRT的文档,因为我想学习如何用现代C ++方式完成Win32中曾经做过的所有工作。
到目前为止,我的经历非常糟糕,我只想直截了当地承认我没有得到。
我尝试了此操作,但是由于我没有在容器中运行,因此似乎尚未创建线程的CoreWindow。
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
{
winrt::init_apartment(winrt::apartment_type::single_threaded);
winrt::Windows::UI::Core::CoreWindow window = winrt::Windows::UI::Core::CoreWindow::GetForCurrentThread();
window.Activate();
auto dispatcher = window.Dispatcher();
using DispatcherOptions = winrt::Windows::UI::Core::CoreProcessEventsOption;
const DispatcherOptions options = DispatcherOptions::ProcessUntilQuit;
dispatcher.ProcessEvents(options);
}
答案 0 :(得分:1)
C ++ / WinRT是使用Windows Runtime(又称为WinRT)API的“现代C ++”方式。这些API是从IInspectiable
派生的,而IUknown
本身是从winrt::com_ptr
派生的。除了用于COM对象的Windows::UI::CoreWindow
之外,它对于经典的Win32 API确实没有太大作用。
您当然可以使用C ++ / WinRT从Win32经典应用程序中使用Windows运行时API,但是没有诸如Win32经典程序的“ CoreWindow”之类的东西。所有{{1}}与通用Windows平台(UWP)应用相关。
答案 1 :(得分:1)