2004年に書いていたWinMain.cppのプログラム

naohiro19
記事: 256
登録日時: 14年前
住所: 愛知県

2004年に書いていたWinMain.cppのプログラム

投稿記事 by naohiro19 » 11年前

2004年に書いていたWinMain.cppのプログラムを公開します。コンパイルできないものは修正してあります。

CODE:



//--------------------------------------------------------------
//    インクルードファイル
//--------------------------------------------------------------

#include 


//--------------------------------------------------------------
//   マクロ
//--------------------------------------------------------------

//ウィンドウのタイトルと名前
#define       WINDOW_NAME    "WINDOW PROGRAM"
#define       WINDOW_TITLE   "Sample Skeleton"
//横幅と縦幅
#define       WINDOW_WIDTH   640
#define       WINDOW_HEIGHT  480
//拡張スタイルとスタイル
#define       WINDOW_STYLE   WS_OVERLAPPEDWINDOW
#define       WINDOW_STYLEEX WS_EX_OVERLAPPEDWINDOW

//--------------------------------------------------------------
//      プロトタイプ宣言
//--------------------------------------------------------------


//ウィンドウプロシージャー
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);


//--------------------------------------------------------------
//   グローバル変数
//--------------------------------------------------------------
HINSTANCE    g_hInstance = NULL;    //インスタンスハンドル
HWND         g_hMainWindow = NULL;    //ウィンドウハンドル
BOOL         g_fActive = FALSE;   //アクティブフラグ

//--------------------------------------------------------------
// WinMain()
//      Memo:Windows Programmingにおいて最初に呼ばれる関数
//--------------------------------------------------------------
int WINAPI
WinMain(
		HINSTANCE  hInst,          //実行時のインスタンスハンドル
		HINSTANCE  hPrevInst,      //Windows95以降はNULL
		LPSTR      lpszCmdLine,    //実行時のコマンドライン
		int        nCmdShow)       //実行時のウィンドウの状態
{

	//インスタンスハンドルのコピー
	g_hInstance = hInst;

	//ウィンドウクラスの設定
	WNDCLASSEX wc = {
		sizeof(WNDCLASSEX),						//構造体のサイズ
		CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS,   //ウィンドウスタイル
		WindowProc,                             //プロシージャ
		0, 0,                                   //拡張情報その1、2
		g_hInstance,                            //インスタンスハンドル
		LoadIcon(NULL, IDI_WINLOGO),			//実行ファイルのアイコン
		LoadCursor(NULL, IDC_ARROW),			//カーソルのアイコン
		(HBRUSH)GetStockObject(WHITE_BRUSH),    //背景の色
		NULL,                                   //メニュー
		WINDOW_NAME,                            //クラス名
		NULL                                    //小さいアイコン
	};
	//ウィンドウクラスの登録
	if (!RegisterClassEx(&wc)){
		MessageBox(NULL, "ウィンドウクラスの登録に失敗",
			"RegistorClassEx()", MB_OK);
		return 0;
	}

	//ウィンドウの作成
	HWND   hwnd;
	RECT   rect;
	int    Width, Height;

	//ウィンドウ枠の調整
	SetRect(&rect, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
	AdjustWindowRectEx(&rect, WINDOW_STYLE, FALSE, WINDOW_STYLEEX);
	Width = rect.right - rect.left;
	Height = rect.bottom - rect.top;
	//ウィンドウ作成
	hwnd = CreateWindowEx(
		WINDOW_STYLEEX,       //拡張スタイル
		WINDOW_NAME,          //登録したウィンドウクラス名
		WINDOW_TITLE,         //タイトル
		WINDOW_STYLE,         //スタイル
		0, 0,                 //表示X,Y座標
		Width, Height,        //横幅、縦幅
		NULL, NULL,           //親ウィンドウ、メニューのハンドル
		g_hInstance,          //インスタンスハンドル
		NULL                  //拡張情報
		);
	//ウィンドウ作成失敗
	if (!hwnd){
		MessageBox(NULL, "ウィンドウの作成に失敗",
			"CreateWindowEx()", MB_OK);
		return 0;
	}
	//ウィンドウハンドルのコピー
	g_hMainWindow = hwnd;

	//ウィンドウの表示と描画の更新
	ShowWindow(g_hMainWindow, nCmdShow);
	UpdateWindow(g_hMainWindow);

	//メッセージループ
	MSG     msg;
	while (1)
	{
		if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
			//終了のメッセージ
			if (msg.message == WM_QUIT)
				break;

			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		else{
			//ウィンドウがアクティブなときだけゲームの処理をする
			if (g_fActive){
				//関数を呼び出しゲームの処理をする
			}
			else{
				WaitMessage();
			}
		}
	}

	//プログラムの終了
	return msg.wParam;
}

//--------------------------------------------------------------
// WindowProc()
//      Memo:発行されたメッセージを処理するところ
//--------------------------------------------------------------
LRESULT CALLBACK
WindowProc(
			HWND		hwnd,		//メッセージが発行されたウィンドウハンドル
			UINT		msg,		//発行されたメッセージ
			WPARAM		wParam,		//発行されたメッセージの情報その1
			LPARAM		lParam)		//発行されたメッセージの情報その2
{
	switch (msg){
	case WM_ACTIVATEAPP:       //ウィンドウのフォーカスが変更された
		g_fActive = (BOOL)wParam;
		break;

	case WM_KEYDOWN:           //キーが押された
		switch (LOWORD(wParam)){
		case VK_ESCAPE:
			DestroyWindow(hwnd);
			break;
		}
		break;

	case WM_DESTROY:           //ウィンドウが破棄された
		PostQuitMessage(0);
		break;

	default:
		return DefWindowProc(hwnd, msg, wParam, lParam);
		break;
	}
	return FALSE;
}
最後に編集したユーザー naohiro19 on 2014年6月30日(月) 19:31 [ 編集 1 回目 ]

taketoshi
記事: 222
登録日時: 14年前

RE: 2004年に書いていたWinMain.cppのプログラム

投稿記事 by taketoshi » 11年前

同じものを2010年ごろ念仏の様に書いていました。