Windows GUI +控制台输出,Linux风格

Tac*_*act 16 c++ windows console user-interface

我有一个GUI应用程序,我正在为Linux和Windows开发跨平台.在Linux上,一切顺利.但是,我在Windows上遇到了麻烦.我希望能够使用Windows上的GUI应用程序将某些消息记录到控制台,Linux风格.

我所说的Linux风格是,如果从控制台打开程序,输出将转到控制台,但如果程序打开,例如,通过开始菜单,用户将永远不会看到控制台输出.显然,这比在Windows上听起来更难.

目前,我在main()中使用以下技巧:

#if _WINDOWS /* Fix console output on Windows */
if (AttachConsole(ATTACH_PARENT_PROCESS)) {
    freopen("CONOUT$","wb",stdout);
    freopen("CONOUT$","wb",stderr);
}
#endif
Run Code Online (Sandbox Code Playgroud)

这允许我在程序实际打开窗口之前创建输出,例如从命令行响应"--help".但是,一旦窗口实际初始化并由我的程序打开,则返回控制台.我需要一个解决方案,允许我在程序的整个生命周期内继续访问控制台,如果最初没有使用,则无需打开新的控制台.

Eel*_*lke 0

我记得读过一些关于此的内容,如果我没记错的话,解决方案是将 gui 添加到控制台项目,而不是向 gui 项目添加控制台,因为后者只能通过打开一个新控制台来完成。