2

プログラムに引数が指定されていない場合はGUIアプリケーションとして起動し、引数が指定されている場合はコマンドラインから実行されます。VisualStudioで[プロパティ]>[リンカー]>[サブシステム](コンソール/サブシステム:CONSOLE)を表示してコンソールに印刷することはできましたが、これにより、アプリケーションの起動時にコンソールが常に表示されるようになります。コンソールを使用して、アプリをGUIで実行したときに表示されないようにします。私はサイトを調べましたが、私が見つけたのはそれをWindowsアプリケーションのみに設定する方法であり、両方として機能する必要があります

ありがとう!!!

4

3 に答える 3

4

コンソールを作成し、それに入力と出力を接続する、私が横たわっていたコードを次に示します。

#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を使用していませんが、それをどこかに貼り付けて機能させることができるはずです。

編集:必要なヘッダーを追加しました

于 2012-04-18T18:24:46.483 に答える
4

これはうまくいきます:

#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();
}

引数を指定して呼び出すと、小さな (空の) ウィンドウが表示されます。引数なし、ウィンドウなしで呼び出します。

于 2012-04-18T18:46:23.300 に答える
0

Windows サブシステムを使用して、コンソールが必要なときにAllocConsoleを呼び出すことができますが、アプリケーションには GUI もあります。

于 2012-04-18T16:24:47.110 に答える