#include <windows.h>
// プロトタイプ宣言
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
// Windws イベント用関数(ウインドウプロシージャ(コールバック関数))
// WndProcがこのコールバック関数の名前.
// WNDCLASS(EX).lpfnWndProc にその名前(WndProc)を代入するとそのウインドウで発生した イベントをキャッチする.
// 普通のウインドウではだいたい,自分でメッセージを処理した時は0
// システムに処理を任せるときは DefWindowProc( hWnd, msg, wParam, lParam ) を返す.
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// 渡された message から、イベントの種類を解析する
switch(msg)
{
//----ウインドウ作成時----
case WM_CREATE:
return 0L;
//----終了処理----
case WM_DESTROY:
exit(0);
}
//----デフォルトの処理----
return DefWindowProc(hWnd, msg, wParam, lParam);
}
// Windows Main 関数
int WINAPI WinMain(
HINSTANCE hInstance, // インスタンスハンドル
HINSTANCE hPrevInstance, // Win16:自分自身の別インスタンス,Win32:NULL
LPSTR lpCmdLine, // コマンドライン引数
int nCmdShow ) // アプリケーションの初期表示方法
{
TCHAR CLASSNAME[] = TEXT("clsWindowSet");
TCHAR FORMNAME[] = TEXT("WindowSet");
HWND hWnd;
MSG msg;
// ウィンドウクラスの属性を設定
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW; // クラススタイル
wc.lpfnWndProc = WndProc; // ウインドウプロシージャアドレス:コールバック関数
wc.cbClsExtra = 0; // ウインドウクラス構造体の後ろに割り当てるバイト数
wc.cbWndExtra = 0; // ウインドウインスタンスの後ろに割り当てるバイト数
wc.hInstance = hInstance; // WinMainの第1引数
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // タイトルバーの左横隅に配置されているアイコン
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // ウインドウ内でのマウスカーソルの形状
wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1); // ウインドウの背景色(背景描画用ブラシ)
wc.lpszMenuName = NULL; // メニューリソースを識別する文字列
wc.lpszClassName = CLASSNAME; // デフォルトメニュー名
// ウィンドウクラス登録
if( RegisterClass( &wc ) == 0 ) return FALSE;
// ウインドウ生成
hWnd = CreateWindow( CLASSNAME, // ウィンドウクラス名
FORMNAME, // タイトルバーテキスト
WS_OVERLAPPEDWINDOW, // ウインドウスタイル
CW_USEDEFAULT, // ウインドウ左上x座標
CW_USEDEFAULT, // ウインドウ左上y座標
CW_USEDEFAULT, // ウインドウ幅
CW_USEDEFAULT, // ウインドウ高さ
NULL, // 親ウインドウのハンドル
NULL, // メニューハンドル
hInstance, // インスタンスハンドル
NULL ); // ウィンドウ作成データ
if( !hWnd ) return FALSE;
// ウィンドウを表示
ShowWindow( hWnd, // ウィンドウハンドル
nCmdShow ); // 表示状態
// ウィンドウを再描画
UpdateWindow( hWnd ); // ウィンドウハンドル
//フォーカスを設定
SetFocus( hWnd ); // ウィンドウハンドル
while( GetMessage( &msg, NULL, 0, 0 ) ){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return msg.wParam;
} |