2010-04-01 79 views
3

我在Visual Studio 2005中有一个混合模式C++ - CLI程序,它被设置为使用/ SUBSYSTEM:Windows。一般来说,它是从其快捷方式或通过注册的文件类型启动的图形应用程序。/SUBSYSTEM:Windows程序不会写入命令行

但是,很少有用户想从命令行运行参数的情况。我可以很好地访问参数,当它涉及到写入控制台时,响应从命令行启动的带有参数的程序,其中我看不到Console::WriteLine有任何影响。

我在做什么错?

回答

3

这个很讨厌,我同意。你没有做错什么,这是Windows设置方式的一个怪癖。

有可能解决这个问题,至少在某些情况下,请参阅http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx。我还没有遇到任何其他实际上使用过这些方法的人。

大多数人使用不同的名称创建两个版本的可执行文件,一个用于批处理用户(“myapp.exe”),一个用于从开始菜单运行(“myappw.exe”)。

欲了解更多信息,How to output to the console in C++/Windows的一些建议可能会有用。

1

这是一个老问题 - 看http://www.codeproject.com/KB/cpp/EditBin.aspx解决办法

您也可以重新打开流控制台

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE /*hPrevInst*/, LPSTR cmd_line, int showmode) 
{ 
    AllocConsole(); //create a console 
    ifstream conin("con"); // not sure if this should be "con:" ? 
    ofstream conout("con"); 
    cout.rdbuf(conout.rdbuf()); 
    cerr.rdbuf(conout.rdbuf());  
    cin.rdbuf(conin.rdbuf()); 


    FreeConsole(); 
    return 0; 
} 

编辑:对不起,这是纯粹的C++,不知道C++/CLI