Solution46
AppTest.h
[詳解]
1 /// @file
2 /// テストアプリケーションヘッダファイル
3 ///
4 /// テストアプリケーションヘッダファイルです。
5 ///
6 /// $Id: AppTest.h 245 2019-03-20 15:03:41Z admin $
7 /// $Date: 2019-03-21 00:03:41 +0900 (2019/03/21 (木)) $
8 /// $Author: admin $
9 ///
10 /// @attention なし
11 
12 #pragma once
13 #pragma managed( push, off )
14 
15 //=============================================================================
16 // インクルードファイル
17 #include <AppTestDef.h>
18 #include <CWndMain.h>
19 #include <CAppTestMenu.h>
20 #include <CJsonConfig.h>
21 #include <LibUtility.h>
22 
23 //=============================================================================
24 // テストアプリケーション名前空間
25 namespace AppTest {
26  //=========================================================================
27  /// テストアプリケーションクラス
28  ///
29  /// テストアプリケーションクラスです。
30  ///
31  /// @attention シングルトンクラスです。
32  ///
33  class CAppTest final: public CWndMain {
34  //=====================================================================
35  // 構築子と解体子
36  protected:
37  //---------------------------------------------------------------------
38  /// コンストラクタ
39  ///
40  /// コンストラクタです。
41  ///
42  /// @param なし
43  /// @return なし
44  /// @attention なし
45  ///
46  explicit CAppTest() noexcept;
47 
48  //---------------------------------------------------------------------
49  /// デストラクタ
50  ///
51  /// デストラクタです。
52  ///
53  /// @param なし
54  /// @return なし
55  /// @attention なし
56  ///
57  virtual ~CAppTest() noexcept;
58 
59  //=====================================================================
60  // インライン公開関数
61  public:
62  //---------------------------------------------------------------------
63  /// セクション名取得関数
64  ///
65  /// セクション名取得関数です。
66  ///
67  /// @param なし
68  /// @return 文字列ポインタ
69  /// @attention オーバライド関数です。
70  ///
71  inline virtual wchar_t const* GetSectionName() const noexcept override { return L"テストアプリケーション"; }
72 
73  //=====================================================================
74  // 公開関数
75  public:
76  //---------------------------------------------------------------------
77  /// 各種メッセージ処理関数
78  ///
79  /// 各種メッセージ処理関数です。
80  ///
81  /// @param なし
82  /// @return メッセージ終了コード
83  /// @attention オーバライド関数です。
84  ///
85  virtual LRESULT WmClose() noexcept override;
86 
87  //---------------------------------------------------------------------
88  /// アイドル処理コールバック関数
89  ///
90  /// アイドル処理コールバック関数です。
91  ///
92  /// @param なし
93  /// @return 実行結果
94  /// - true 成功
95  /// - false 失敗
96  /// @attention オーバライド関数です。
97  ///
98  virtual bool IdleCallBackProc() noexcept override;
99 
100  //---------------------------------------------------------------------
101  /// アプリケーション初期化関数
102  ///
103  /// アプリケーション初期化関数です。
104  ///
105  /// @param なし
106  /// @return 実行結果
107  /// - true 成功
108  /// - false 失敗
109  /// @attention なし
110  ///
111  virtual bool InitApp() noexcept;
112 
113  //---------------------------------------------------------------------
114  /// アプリケーション実行関数
115  ///
116  /// アプリケーション実行関数です。
117  ///
118  /// @param なし
119  /// @return 実行結果
120  /// - true 成功
121  /// - false 失敗
122  /// @attention なし
123  ///
124  virtual bool ExecApp() noexcept;
125 
126  //---------------------------------------------------------------------
127  /// アプリケーション終了関数
128  ///
129  /// アプリケーション終了関数です。
130  ///
131  /// @param[in] bResult 直前の実行結果
132  /// @return 実行結果
133  /// - true 成功
134  /// - false 失敗
135  /// @attention なし
136  ///
137  virtual bool FinishApp( bool bResult ) noexcept;
138 
139  //---------------------------------------------------------------------
140  /// コンソール構成情報復元関数
141  ///
142  /// コンソール構成情報復元関数です。
143  ///
144  /// @param[in] rcConfig JSON構成ファイル参照
145  /// @param[in] ePos ウィンドウ初期配置位置種別
146  /// @return 実行結果
147  /// - true 成功
148  /// - false 失敗
149  /// @attention なし
150  ///
151  virtual bool ResumeConfigConsole( CJsonConfig& rcConfig, EWindowPosition ePos ) noexcept;
152 
153  //---------------------------------------------------------------------
154  /// コンソール構成情報保存関数
155  ///
156  /// コンソール構成情報保存関数です。
157  ///
158  /// @param[in] rcConfig JSON構成ファイル参照
159  /// @return 実行結果
160  /// - true 成功
161  /// - false 失敗
162  /// @attention なし
163  ///
164  virtual bool SaveConfigConsole( CJsonConfig& rcConfig ) noexcept;
165 
166  //---------------------------------------------------------------------
167  /// ウィンドウ構成情報復元関数
168  ///
169  /// ウィンドウ構成情報復元関数です。
170  ///
171  /// @param[in] rcConfig JSON構成ファイル参照
172  /// @param[in] ePos ウィンドウ初期配置位置種別
173  /// @return 実行結果
174  /// - true 成功
175  /// - false 失敗
176  /// @attention なし
177  ///
178  virtual bool ResumeConfigWindow( CJsonConfig& rcConfig, EWindowPosition ePos ) noexcept;
179 
180  //---------------------------------------------------------------------
181  /// ウィンドウ構成情報保存関数
182  ///
183  /// ウィンドウ構成情報保存関数です。
184  ///
185  /// @param[in] rcConfig JSON構成ファイル参照
186  /// @return 実行結果
187  /// - true 成功
188  /// - false 失敗
189  /// @attention なし
190  ///
191  virtual bool SaveConfigWindow( CJsonConfig& rcConfig ) noexcept;
192 
193  //=====================================================================
194  // インライン静的公開関数
195  public:
196  //---------------------------------------------------------------------
197  /// インスタンス取得関数
198  ///
199  /// インスタンス取得関数です。
200  ///
201  /// @param なし
202  /// @return インスタンス参照
203  /// @attention なし
204  ///
205  inline static CAppTest& GetInstance() noexcept { return s_cInstance; }
206 
207  //---------------------------------------------------------------------
208  /// 構成ファイルパス取得関数
209  ///
210  /// 構成ファイルパス取得関数です。
211  ///
212  /// @param なし
213  /// @return 文字列ポインタ
214  /// @attention なし
215  ///
216  inline static wchar_t const* GetConfigFilePath() noexcept { return _SOLUTION_DIR L"Data\\AppTest.config"; }
217 
218  //=====================================================================
219  // 静的公開関数
220  public:
221  //---------------------------------------------------------------------
222  /// メイン関数
223  ///
224  /// メイン関数です。
225  ///
226  /// @param なし
227  /// @return 終了コード
228  /// @attention なし
229  ///
230  static int Main() noexcept;
231 
232  //---------------------------------------------------------------------
233  /// 日時文字列取得関数
234  ///
235  /// 日時文字列取得関数です。
236  ///
237  /// @param[in] rsDateTime システム時刻構造体参照
238  /// @param[out] rcString 文字列クラス参照
239  /// @return 文字列ポインタ
240  /// @attention なし
241  ///
242  static wchar_t const* GetDateTimeString( SYSTEMTIME const& rsDateTime, CString& rcString = CString()() ) noexcept;
243 
244  //=====================================================================
245  // 限定公開変数
246  protected:
247  CJsonConfig m_cConfig; ///< JSON構成情報
248  CAppTestMenu m_cMainMenu; ///< テストアプリケーションメインメニュー
249  CString m_cPrevTime; ///< 前回終了日時文字列
250  SYSTEMTIME m_sStartTime; ///< 開始日時
251  SYSTEMTIME m_sEndTime; ///< 終了日時
252 
253  //=====================================================================
254  // 静的公開文字列定数
255  public:
256  static wchar_t const* const SECTION_CONSOLE; ///< コンソールセクション文字列
257  static wchar_t const* const KEY_PREV_END_TIME; ///< 前回終了日時キー文字列
258  static wchar_t const* const KEY_START_TIME; ///< 開始日時キー文字列
259  static wchar_t const* const KEY_END_TIME; ///< 終了日時キー文字列
260  static wchar_t const* const SECTION_WINDOW; ///< ウィンドウセクション文字列
261  static wchar_t const* const SECTION_STATIC; ///< 静的変数セクション文字列
262 
263  //=====================================================================
264  // 静的限定公開変数
265  protected:
266  static CAppTest s_cInstance; ///< 静的インスタンス
267 
268  //=====================================================================
269  // 削除関数
270  private:
271  CAppTest( CAppTest const& ) = delete;
272  CAppTest& operator=( CAppTest const& ) = delete;
273  };
274 }
275 
276 #pragma managed( pop )
テストアプリケーション名前空間
Definition: AppTest.h:25
テストアプリケーション定義ヘッダファイル
virtual bool ExecApp() noexcept
アプリケーション実行関数
Definition: AppTest.cpp:290
virtual bool ResumeConfigWindow(CJsonConfig &rcConfig, EWindowPosition ePos) noexcept
ウィンドウ構成情報復元関数
Definition: AppTest.cpp:434
CAppTest & operator=(CAppTest const &)=delete
virtual bool SaveConfigConsole(CJsonConfig &rcConfig) noexcept
コンソール構成情報保存関数
Definition: AppTest.cpp:395
static int Main() noexcept
メイン関数
Definition: AppTest.cpp:555
static wchar_t const *const SECTION_STATIC
静的変数セクション文字列
Definition: AppTest.h:261
テストアプリケーションメインメニュークラス
Definition: CAppTestMenu.h:31
SYSTEMTIME m_sEndTime
終了日時
Definition: AppTest.h:251
static wchar_t const * GetDateTimeString(SYSTEMTIME const &rsDateTime, CString &rcString=CString()()) noexcept
日時文字列取得関数
Definition: AppTest.cpp:615
EWindowPosition
ウィンドウ表示位置種別列挙体
Definition: LibUtility.h:39
virtual ~CAppTest() noexcept
デストラクタ
Definition: AppTest.cpp:169
static wchar_t const *const SECTION_WINDOW
ウィンドウセクション文字列
Definition: AppTest.h:260
テストアプリケーションクラス
Definition: AppTest.h:33
virtual bool InitApp() noexcept
アプリケーション初期化関数
Definition: AppTest.cpp:265
static CAppTest s_cInstance
静的インスタンス
Definition: AppTest.h:266
JSON構成情報クラスヘッダファイル
static wchar_t const *const SECTION_CONSOLE
コンソールセクション文字列
Definition: AppTest.h:256
static wchar_t const *const KEY_END_TIME
終了日時キー文字列
Definition: AppTest.h:259
JSON構成情報クラス
Definition: CJsonConfig.h:31
static CAppTest & GetInstance() noexcept
インスタンス取得関数
Definition: AppTest.h:205
#define _SOLUTION_DIR
ソリューションディレクトリパス
Definition: LibCommonDef.h:54
static wchar_t const *const KEY_PREV_END_TIME
前回終了日時キー文字列
Definition: AppTest.h:257
CJsonConfig m_cConfig
JSON構成情報
Definition: AppTest.h:247
static wchar_t const *const KEY_START_TIME
開始日時キー文字列
Definition: AppTest.h:258
virtual LRESULT WmClose() noexcept override
各種メッセージ処理関数
Definition: AppTest.cpp:215
CAppTest() noexcept
コンストラクタ
Definition: AppTest.cpp:141
virtual wchar_t const * GetSectionName() const noexcept override
セクション名取得関数
Definition: AppTest.h:71
virtual bool ResumeConfigConsole(CJsonConfig &rcConfig, EWindowPosition ePos) noexcept
コンソール構成情報復元関数
Definition: AppTest.cpp:342
virtual bool SaveConfigWindow(CJsonConfig &rcConfig) noexcept
ウィンドウ構成情報保存関数
Definition: AppTest.cpp:502
文字列クラス
Definition: CString.h:31
メインウィンドウクラス
Definition: CWndMain.h:33
virtual bool IdleCallBackProc() noexcept override
アイドル処理コールバック関数
Definition: AppTest.cpp:242
SYSTEMTIME m_sStartTime
開始日時
Definition: AppTest.h:250
テストアプリケーションメインメニュークラスヘッダファイル
CAppTestMenu m_cMainMenu
テストアプリケーションメインメニュー
Definition: AppTest.h:248
メインウィンドウクラスヘッダファイル
virtual bool FinishApp(bool bResult) noexcept
アプリケーション終了関数
Definition: AppTest.cpp:322
ユーティリティライブラリヘッダファイル
static wchar_t const * GetConfigFilePath() noexcept
構成ファイルパス取得関数
Definition: AppTest.h:216
CString m_cPrevTime
前回終了日時文字列
Definition: AppTest.h:249