GUIプログラムのロゴ情報を関連するConsoleウィンドウに簡単に出力する
// .h
#pragma once
class CConsoleDump
{
public:
explicit CConsoleDump(LPCTSTR lpszWindowTitle = NULL);
virtual ~CConsoleDump(void);
public:
BOOL DUMP(LPCTSTR lpszFmt, ...);
BOOL ShowWindow(BOOL bShowWindow);
BOOL SetWindowText(LPCTSTR lpszWindowTitle = NULL);
};
// .cpp
#include "StdAfx.h"
#include "ConsoleDump.h"
#define MAX_BUFFER_SIZE (10 * 1024)
CConsoleDump::CConsoleDump(LPCTSTR lpszWindowTitle)
{
if(AllocConsole())
{
if(NULL != lpszWindowTitle)
{
SetConsoleTitle(lpszWindowTitle);
}
}
}
CConsoleDump::~CConsoleDump(void)
{
FreeConsole();
}
BOOL CConsoleDump::ShowWindow(BOOL bShowWindow)
{
return ::ShowWindow(GetConsoleWindow(), bShowWindow ? SW_SHOW : SW_HIDE);
}
BOOL SetWindowText(LPCTSTR lpszWindowTitle)
{
if(NULL != lpszWindowTitle)
{
return SetConsoleTitle(lpszWindowTitle);
}
return TRUE;
}
BOOL CConsoleDump::DUMP(LPCTSTR lpszFmt, ...)
{
TCHAR szText[MAX_BUFFER_SIZE] = {0};
va_list arglist;
va_start(arglist, lpszFmt);
_vstprintf_s(szText, _countof(szText), lpszFmt, arglist);
va_end(arglist);
return WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), szText, _tcslen(szText), NULL, NULL);
}
//
CConsoleDump m_dump; //
// CConsoleDump::DUMP log
m_dump.DUMP(_T("Hello, World!\r
"));
これは単にConsole関連のいくつかの関数をカプセル化したもので、より多くのConsole関連の制御については、MSDNドキュメントの