我制作了一个简单的控制台应用程序,但我想隐藏控制台窗口。因此我删除了
int _tmain( int argc, _TCHAR* argv[ ] )
并添加了这两行:
#pragma comment( linker, "/SUBSYSTEM:WINDOWS" )
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
一切正常,但我希望有/?
参数显示用法。但是没有控制台窗口,我需要以某种方式显示它。所以我用Google搜索了一下,我发现了这段代码:
void SetStdOutToNewConsole()
{
int hConHandle;
long lStdHandle;
FILE *fp;
// allocate a console for this app
if ( !AttachConsole( ATTACH_PARENT_PROCESS ) )
{
if ( !AllocConsole( ) )
{
MessageBoxA( NULL, "AllocConsole failed!", NULL, NULL );
}
}
// 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 );
}//SetStdOutToNewConsole
如果/?
被定义,我会调用此函数,我可以显示我想要的内容。但是,如果我打开一个cmd窗口,然后从那里开始myapp.exe /?
,文本将显示我想要的内容,但我必须点击额外的Enter。这是为什么?有没有办法以某种方式解决这个问题,所以我不需要输入一个?
提前致谢!