gpt4 book ai didi

c++ - 可以打开窗口的 Win32 控制台应用程序

转载 作者:可可西里 更新时间:2023-11-01 09:53:30 31 4
gpt4 key购买 nike

我的问题很简单。在 Ubuntu 中,程序通常可以在有或没有 GUI 的情况下部署,也许使用像 --showGUI 这样的标志。我基本上想在 Windows 中重新创建此功能,但似乎 Windows 应用程序以 win_main 开头,而控制台应用程序以 main 开头。

那么产生这种行为所需的基本结构是什么?例如。在 Visual Studio 2012 中,我应该从 Windows 应用程序开始,然后隐藏窗口并写入控制台吗?或者我可以从一个空的控制台应用程序开始,然后使用 Windows API 创建一个窗口吗?

谢谢

(c/c++,顺便说一下)

最佳答案

控制台应用程序开始时连接到控制台。然后它可以创建它认为合适的窗口——本质上与专门为 Windows 子系统编写的应用程序没有什么不同。

理论上您可以做相反的事情:为 Windows 子系统创建一个应用程序,然后将控制台附加到它。不过,这会增加相当多的额外工作。标准库中的启动代码通常会做一些工作,将 stdin/cin、stdout/cout、stderr/cerr 附加到控制台。如果您创建一个 Windows 子系统程序,然后附加一个控制台,您基本上必须重现该代码以将控制台附加到标准流。

因此,通常最简单的方法是从为控制台子系统编写的程序开始并让它创建窗口,而不是从为 Windows 子系统编写的程序开始并让它创建/附加控制台。

mainWinMain 而言:它控制程序默认链接到哪个子系统。也就是说,如果您有一个名为 main 的函数,它将默认为控制台子系统。如果您有一个名为 WinMain 的函数,它将默认为 windows 子系统(顺便说一句,我不记得如果您同时定义这两个子系统它会做什么——我建议不要那样做)。

但是,如果需要,您可以使用链接器标志强制选择子系统,因此您可以使用 main 作为 windows 子系统程序或 WinMain< 的入口点 作为控制台子系统程序的入口点。不过,我通常也建议不要这样做。

关于c++ - 可以打开窗口的 Win32 控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24171017/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com