是否可以从控制台应用程序使用 C++/WinRT 创建窗口?

Is it possible to create window using C++/WinRT from a console application?

本文关键字:C++ WinRT 创建 窗口 控制台 应用程序 是否      更新时间:2023-10-16

使用 Win32 API 时,实际上没有必要有一个 winmain 入口点来创建一个窗口,因为我们仍然可以调用RegisterClassExWCreateWindowExW等。我想知道在创建 C++/WinRT 窗口时是否可以这样做,因为互联网上几乎每个示例都使用模板项目。

我尝试创建一个结构,该结构继承了具有所有必要功能(初始化,取消初始化,加载,SetWindow,运行等(的implements<App, IFrameworkView, IFrameworkViewSource>,然后在int main()内部调用CoreApplication::Run(winrt::make<App>()),但是WinRT要么抱怨没有事先运行init_apartment(),要么将奇怪的错误显示为WinRT originate error - 0x80070057 : 'serverName'并且HRESULTE_INVALIDARG,并且抛出了一个hresult_invalid_argument(take_ownership_from_abi)。另外,使用模板项目创建的源文件甚至不必先运行init_apartment(),我真的不明白为什么。

是否可以从控制台应用程序创建 C++/WinRT 窗口?谢谢。

No.

UWP 控制台应用可能不会创建窗口。他们不能使用 MessageBox(( 或 Location(( 或任何其他可能出于任何原因(如用户同意提示(创建窗口的 API。

https://learn.microsoft.com/en-us/windows/uwp/launch-resume/console-uwp