2014-03-05 101 views
0

我有一個問題,我認爲很難解釋比回答...我會嘗試。使用輸入參數的控制檯+ GUI應用程序

有幾種軟件可以在終端上運行各種輸入參數(-h,-a,...),並且其中一個參數運行軟件GUI。目前,沒有真正的軟件,到了我的心,對不起......讓我們用my_software爲例

> my_software -h 
This is my_software version 1.0 
Options: 
-h Display this help 
-a Do processing 1 
-b Do processing 2 
-g Start software GUI 

所以,如果我打電話從控制檯的軟件,我可以讓它做處理通過1個或2廣告輸入參數。另外,我可以使用-g啓動令人驚歎的GUI,並使用按鈕或其他方法處理1或2。

問:如何實現這樣的事情?我已經在MS論壇中看到了一些解決方案(我現在正在使用C++和VIsual Studio,但是「通用」方法提示將可以),其中一個創建一個Form應用程序,但是以命令行開始,並用給定的命令打開表單。看起來沒問題。唯一的問題:在這種情況下,啓動後,控制檯和GUI都可見或只是選定的一個?

我想要的還是能夠使用命令行參數來重現GUI的行爲,因此可以使用命令行參數來重現GUI的每個按鈕/功能。這主要是爲了能夠自動化一些GUI事件的測試。旁邊的問題:它有任何感官?

我認爲有一些MVC設計涉及。程序功能與用戶界面分離,因此控制檯和GUI可以進行相同的控制器調用。我對MVC不是很熟悉,但我認爲它涉及到這種情況。對?

我希望一切都很清楚。

感謝您的幫助!

MIX

編輯:一個很好的例子可以是VLC。它以其着名的GUI開始,但它也可以從控制檯使用(https://wiki.videolan.org/VLC_command-line_help/)。

+0

一些建議:http://stackoverflow.com/questions/472282/show-console-in-windows-application – Boklucius

+0

看起來比我想要做更復雜的..但我會更仔細地閱讀它。 –

回答

0

我了這樣somethins Qt中

#include "mainwindow.h" 
#include <QApplication> 

int RunConsole(int argc, char *argv[]) 
{ 
    if(strcmp(argv[1], "-t") == 0) 
    { 
    printf("Testing!\n"); 
    return 0; 
    } 
    else 
    { 
    printf("Dunno how to process option %s...\n", argv[1]); 
    return 1; 
    } 
} 

int RunGUI(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 
    return a.exec(); 
} 

int main(int argc, char *argv[]) 
{ 
    int ret; 
    if(argc > 1) 
    { 
    ret = RunConsole(argc, argv); 
    } 
    else 
    { 
    ret = RunGUI(argc, argv); 
    } 
    return ret; 
} 

沒有下方邏輯來控制GUI /控制檯的時刻。順便說一句,它似乎爲應用程序啓動部分做了訣竅。

您對這種方法有什麼看法?

控制邏輯很快...

相關問題