Jom*_*t17 3 c++ windows winapi
我的问题很简单。在 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 子系统编写的程序开始并让它创建/附加控制台。
就mainvs.WinMain而言:这控制默认情况下程序将链接到哪个子系统。也就是说,如果您有一个名为 的函数main,它将默认为控制台子系统。如果您有一个名为 的函数WinMain,它将默认为 Windows 子系统(我不记得如果您同时定义了这两个子系统会执行哪个操作——我建议不要这样做)。
但是,如果需要,您可以使用链接器标志强制选择子系统,因此您可以将其main用作 Windows 子系统程序WinMain的入口点,或用作控制台子系统程序的入口点。不过,我通常建议不要这样做。
| 归档时间: |
|
| 查看次数: |
6192 次 |
| 最近记录: |