//--------------------------------------------------------------
// インクルードファイル
//--------------------------------------------------------------
#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;
}
2004年に書いていたWinMain.cppのプログラム
2004年に書いていたWinMain.cppのプログラム
2004年に書いていたWinMain.cppのプログラムを公開します。コンパイルできないものは修正してあります。
最後に編集したユーザー naohiro19 on 2014年6月30日(月) 19:31 [ 編集 1 回目 ]