我有一个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".但是,一旦窗口实际初始化并由我的程序打开,则返回控制台.我需要一个解决方案,允许我在程序的整个生命周期内继续访问控制台,如果最初没有使用,则无需打开新的控制台.