1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
#include <windows.h>

// ウィンドウクラス
const TCHAR wndClassName[] = TEXT("WMAPP_DEMO002");

// ウィンドウプロシージャ(プロトタイプ宣言)
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);

// アプリケーションのエントリポイント
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int nCmdShow){

	// ウィンドウクラスの登録
	WNDCLASS wc;
	memset(&wc, 0, sizeof(WNDCLASS));
	wc.style            = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc      = WndProc;
	wc.hInstance        = hInstance;
	wc.hbrBackground    = static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
	wc.lpszClassName    = wndClassName;
	if(RegisterClass(&wc) == 0){
		return -1;
	}

	// ウィンドウの生成
	HWND hWnd = CreateWindow(wndClassName, TEXT("WMAPP_DEMO"), WS_VISIBLE,
	                         CW_USEDEFAULT, CW_USEDEFAULT,
	                         CW_USEDEFAULT, CW_USEDEFAULT,
	                         NULL, NULL, hInstance, NULL);
	if(hWnd == NULL){
		return -2;
	}
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	// メッセージループ
	MSG msg;
	BOOL bRet;

	while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
		if(bRet == -1){
			break;
		}else{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}
	return static_cast<int>(msg.wParam);
}

// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){
	switch(msg){
		case WM_CLOSE:
			DestroyWindow(hWnd);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return (DefWindowProc(hWnd, msg, wp, lp));
	}
	return 0;
}