Skip to content

Instantly share code, notes, and snippets.

@bg1bgst333
Created March 7, 2026 03:40
Show Gist options
  • Select an option

  • Save bg1bgst333/e0d02023280fdabe426115b6874f5372 to your computer and use it in GitHub Desktop.

Select an option

Save bg1bgst333/e0d02023280fdabe426115b6874f5372 to your computer and use it in GitHub Desktop.
CGraphicalApplication::MainProc
// ヘッダのインクルード
// 独自のヘッダ
#include "GraphicalApplication.h" // CGraphicalApplication
// コンストラクタCGraphicalApplication
CGraphicalApplication::CGraphicalApplication() : CApplication() {
}
// メッセージループ処理関数Run.
int CGraphicalApplication::Run() {
// 変数の初期化.
MSG msg = { 0 }; // MSG型メッセージ構造体msgを{0}で初期化.
int lCount = 0; // ウィンドウメッセージが来なかった時の回数を保持するint型変数lCountの初期値を0とする.
// PeekMessageによるメインループ.
while (TRUE) { // 常に真(TRUE)なので無限ループ.
// メッセージループが来ていれば処理する.
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
// 0にリセット.
lCount = 0; // lCountを0にリセット.
// WM_QUITならExitInstanceを呼んで終了.
if (msg.message == WM_QUIT) {
return ExitInstance();
}
// ウィンドウメッセージの送出
TranslateMessage(&msg); // TranslateMessageで仮想キーメッセージを文字メッセージへ変換.
DispatchMessage(&msg); // DispatchMessageで受け取ったメッセージをウィンドウプロシージャ(この場合は独自に定義したWindowProc)に送出.
}
// アイドル処理
OnIdle(lCount++);
Sleep(1);
}
}
// 終了処理関数ExitInstance.
int CGraphicalApplication::ExitInstance() {
// 親クラスのExitInstanceを呼ぶ.
return CApplication::ExitInstance();
}
// アイドル処理関数OnIdle.
BOOL CGraphicalApplication::OnIdle(LONG lCount) {
// 画面の更新.
if (m_pMainWnd != NULL) { // m_pMainWndがNULLでない時.
if (m_pMainWnd->m_hWnd != NULL) { // m_pMainWnd->m_hWndがNULLでない時.
// メインループ処理.
MainProc();
}
}
// とりあえずTRUE.
return TRUE;
}
// メインループ処理関数MainProc.
void CGraphicalApplication::MainProc() {
// "ABCDE"を描画.
HDC hDC = GetDC(m_pMainWnd->m_hWnd);
TextOut(hDC, 50, 50, _T("ABCDE"), lstrlen(_T("ABCDE")));
ReleaseDC(m_pMainWnd->m_hWnd, hDC);
}
// 二重インクルード防止
#ifndef __GRAPHICAL_APPLICATION_H__
#define __GRAPHICAL_APPLICATION_H__
// ヘッダのインクルード
// 独自のヘッダ
#include "Application.h" // CApplication
// グラフィカルアプリケーションクラスCGraphicalApplication
class CGraphicalApplication : public CApplication {
// publicメンバ
public:
// publicメンバ関数
// コンストラクタ
CGraphicalApplication(); // コンストラクタCGraphicalApplication
virtual int Run(); // メッセージループ処理関数Run.
virtual int ExitInstance(); // 終了処理関数ExitInstance.
virtual BOOL OnIdle(LONG lCount); // アイドル処理関数OnIdle.
void MainProc(); // メインループ処理関数MainProc.
};
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment