TNB Library
TnbConsoleScreen.h
[詳解]
1#pragma once
11#include "TnbDef.h"
12#include <io.h>
13#include <fcntl.h>
14
15
16
17//TNB Library
18namespace TNB
19{
20
21
22
38{
39public:
40
42 CConsoleScreen(void) : m_console(-1)
43 {
44 }
45
48 {
49 Close();
50 }
51
58 bool Open(void)
59 {
60 Close();
61 ::AllocConsole();
62 HANDLE h = ::GetStdHandle(STD_OUTPUT_HANDLE);
63 m_console = ::_open_osfhandle(reinterpret_cast<INT_PTR>(h), _O_TEXT);
64 if ( m_console < 0 )
65 {
66 ::FreeConsole();
67 return false;
68 }
69 *stdout = *::_fdopen(m_console, "w");
70 ::setvbuf(stdout, NULL, _IONBF, 0);
71 return true;
72 }
73
78 void Close(void)
79 {
80 if ( m_console >= 0 )
81 {
82 _close(m_console);
83 ::FreeConsole();
84 m_console = -1;
85 }
86 }
87
93 bool IsOpened(void) const
94 {
95 return m_console >= 0;
96 }
97
105 int Print(LPCTSTR lpFmt, ...)
106 {
107 int r = -1;
108 if ( IsOpened() )
109 {
110 va_list args;
111 va_start(args, lpFmt);
112 r = _vftprintf(stdout, lpFmt, args);
113 va_end(args);
114 }
115 return r;
116 }
117
118private:
119 int m_console;
120};
121
122
123
124}; // TNB
TNBライブラリの定義ヘッダ
コンソール画面管理クラス.
bool Open(void)
[構築] コンソールオープン.
bool IsOpened(void) const
[確認] オープン確認.
void Close(void)
[破棄] コンソールクローズ.
~CConsoleScreen(void)
デストラクタ
int Print(LPCTSTR lpFmt,...)
[表示] 文字列表示.
CConsoleScreen(void)
コンストラクタ
[ETC] コピー不可能スーパークラス.
Definition: TnbDef.h:599
TNB Library
Definition: TnbDoxyTitle.txt:2