2014-03-05 98 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 /控制台的时刻。顺便说一句,它似乎为应用程序启动部分做了诀窍。

您对这种方法有什么看法?

控制逻辑很快...

相关问题