簡體   English   中英

Windows C ++ GUI應用程序

[英]Windows C++ GUI application

我目前正在將C ++ Qt5 / CMake應用程序從linux移植到Windows。 當在Linux中啟動應用程序時,我看到UI並一切正常。 在Windows上首先啟動黑色終端,然后從終端啟動我的應用程序。 如何在沒有黑色控制台的情況下啟動應用程序? 它不漂亮。

我正在使用MSVC cmake生成器和Visual Studio 2013 Express。

謝謝你們!

編輯CMakeLists.txt以創建WIN32應用程序

IF(MSVC)
    SET(OPTIONS WIN32)
ENDIF(MSVC)

ADD_EXECUTABLE(${APP_NAME} ${OPTIONS}
    ${HEADER_FILES}
    ${SOURCE_FILES}
    }

編輯main.cpp以使用wWinMain並將輸入args轉換為argcargv

#ifdef _MSC_VER
#   include <windows.h>
#   include <shellapi.h>
#endif

/// ... some code

#ifdef _MSC_VER
INT WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPWSTR, INT)
{
    UNREFERENCED_PARAMETER(hInst);
    UNREFERENCED_PARAMETER(hPrevInstance);

    int argc;
    char** argv;
    {
        LPWSTR* lpArgv = CommandLineToArgvW( GetCommandLineW(), &argc );
        argv = (char**) malloc( argc*sizeof(char*) );
        int size, i = 0;
        for( ; i < argc; ++i )
        {
            size = wcslen( lpArgv[i] ) + 1;
            argv[i] = (char*) malloc( size );
            wcstombs( argv[i], lpArgv[i], size );
        }
        LocalFree( lpArgv );
    }

#else
int main(int argc, char *argv[])
{
#endif

    QGuiApplication a(argc, argv);

    /// ... some code

    int code = a.exec();

#ifdef _MSC_VER
    {
        int i = 0;
        for( ; i < argc; ++i ) {
            free( argv[i] );
        }
        free( argv );
    }
#endif

    return code;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM