如果没有给它作为 GUI 应用程序启动的程序提供参数,如果给它 args,它会通过命令行运行。我能够使用属性>链接器>子系统(控制台/SUBSYSTEM:CONSOLE)让Visual Studio显示并打印到控制台,但这使得控制台始终在应用程序启动时显示,我如何有选择地显示控制台,以便当应用程序使用 GUI 运行时,它不会出现。我浏览了该站点,但我发现的只是如何将其设置为仅作为 Windows 应用程序,并且我需要它同时作为
谢谢!!!
如果没有给它作为 GUI 应用程序启动的程序提供参数,如果给它 args,它会通过命令行运行。我能够使用属性>链接器>子系统(控制台/SUBSYSTEM:CONSOLE)让Visual Studio显示并打印到控制台,但这使得控制台始终在应用程序启动时显示,我如何有选择地显示控制台,以便当应用程序使用 GUI 运行时,它不会出现。我浏览了该站点,但我发现的只是如何将其设置为仅作为 Windows 应用程序,并且我需要它同时作为
谢谢!!!
我猜这可行:
#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
int
main(int n_app_args, char **app_arg)
{
QCoreApplication * application = 0;
if ( n_app_args == 1 )
{
application = new QCoreApplication(n_app_args, app_arg);
}
else
{
application = new QApplication(n_app_args, app_arg);
QMainWindow * mainWindow = new QMainWindow();
mainWindow->show();
}
return application->exec();
}
用参数调用它,你会得到一个小(空)窗口。不带参数也不带窗口地调用它。
这里有一些代码,它创建了一个控制台并将输入和输出附加到它:
#include <Windows.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
void Console::createConsole()
{
AllocConsole();
SetConsoleTitle("Debug console");
int hConHandle;
long lStdHandle;
FILE *fp; // redirect unbuffered STDOUT to the console
lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen( hConHandle, "w" );
*stdout = *fp;
setvbuf( stdout, NULL, _IONBF, 0 );
// redirect unbuffered STDIN to the console
lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen( hConHandle, "r" );
*stdin = *fp;
setvbuf( stdin, NULL, _IONBF, 0 );
// redirect unbuffered STDERR to the console
lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen( hConHandle, "w" );
*stderr = *fp;
setvbuf( stderr, NULL, _IONBF, 0 );
}
我没有使用过 Qt,但您应该能够将其粘贴在某个地方并使其工作。
编辑:添加所需的标题
您可以使用 windows 子系统来拥有它,并在需要控制台而应用程序也有 gui 时调用AllocConsole 。