class CConsole
{
public:
CConsole(void)
{
m_inited = false;
streamStdout = 0;
streamStderr = 0;
}
~CConsole(void)
{
if (m_inited) ::FreeConsole();
if (streamStdout) fclose(streamStdout);
if (streamStderr) fclose(streamStderr);
}
// 为当前进程分配console窗口
bool AllocConsole()
{
if (!::AllocConsole())
{
return false;
}
// 重定向标准输出到创建的console窗口
streamStdout = freopen("CONOUT$", "w", stdout);
if (!streamStdout)
{
return false;
}
// 重定向标准错误输出到console窗口
streamStderr = freopen("CONOUT$", "w", stderr);
if (!streamStderr)
{
return false;
}
m_inited = true;
return true;
}
// 释放当前窗口的console窗口
void FreeConsole()
{
if (m_inited)
{
::FreeConsole();
}
if (streamStdout)
{
fclose(streamStdout);
}
if (streamStderr)
{
fclose(streamStderr);
}
m_inited = false;
}
private:
bool m_inited;
FILE *streamStdout;
FILE *streamStderr;
};
暂无评论