[ create a new paste ] login | about

Link: http://codepad.org/ObzUJSBI    [ raw code | output | fork ]

C++, pasted on Jan 28:
// 簡単言うと、Windows(OS) と言うプログラムが、
// 「これを使ってください」として用意している関数群を集めたヘッダ
#include "windows.h"

// 関数プロトタイプ
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

// とりあえず定数
LPCTSTR APP_CLASS_STR = TEXT("TEST_APP");

// 保存しておきたいから置いただけの変数
HINSTANCE hInst;

// Windows(OS)が、この exeファイルをメモリにロードした後呼び出そうとする関数
// OS(と言うプログラム)を作った人が、こういう内容の関数を呼び出すと決めたので
// こうなっている
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPTSTR args, int cmd)
{
	// とりあえず保存
	hInst = hInstance;

	// このOSと言うプログラムの中で、他の同じ立場のアプリケーションと
	// "同調させて" "任意に動く" アプリケーションの為の "ウィンドウ" という処理に
	// 必要な内容を、用意された構造体に詰め込んで、
	WNDCLASSEX wcex;
	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.hInstance = hInstance;
	wcex.lpfnWndProc = WndProc;
	wcex.lpszClassName = APP_CLASS_STR;
	wcex.style = CS_HREDRAW | CS_VREDRAW;
	wcex.lpszMenuName = NULL;
	wcex.hIcon = wcex.hIconSm = NULL;
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
	wcex.cbClsExtra = wcex.cbWndExtra = 0;

	// OSに "伝達" する ※「登録」と言うニュアンス
	RegisterClassEx(&wcex);

	// 上の "ウィンドウ" はOS(と言うプログラム)に伝達した
	// その後、可視化の為に、「GUIな方のウィンドウ」と言う、定型の何かを生成する
	// ※勿論こいつと、上の構造体は 紐付けられている
	HWND hWnd = CreateWindow(
		APP_CLASS_STR, TEXT("VIP_DUNGEON")
		, WS_OVERLAPPEDWINDOW
		, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT
		, NULL, NULL, hInst, NULL
	);
	
	// OSに「無理」と言われたら終了しとく
	if(!hWnd) return FALSE;

	// 描画処理をする(お願いする)
	ShowWindow(hWnd, SW_SHOW);
	
	// 更新処理をする(お願いする)
	UpdateWindow(hWnd);

	MSG msg;
	
	// 「このOS」は、"メッセージ" と言う単位で処理を分配し、
	// 複数のアプリケーションで同調して動かす
	// この関数はその "メッセージ" を盗み見る
	while (GetMessage(&msg, NULL, 0, 0))
	{
		// ちょっと別の都合による関数。具体的には "アクセラレータ" として操作された内容を
		// 他のメッセージとして処理できるように翻訳している
		if (!TranslateAccelerator(msg.hwnd, NULL, &msg))
		{
			// 上と似た処理。固有都合で "メッセージ" を変換処理している
			TranslateMessage(&msg);
			
			// その "ウィンドウ" に来た "メッセージ" を、
			// 処理する為に自分で用意した関数に飛ばす
			DispatchMessage(&msg);
		}
	}
	
	// 終了:このアプリケーションを抜ける
	return (int)msg.wParam;
}

// "メッセージ" を処理する関数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;

	switch (message)
	{
	case WM_CREATE:
		break;
	case WM_COMMAND:
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);

		switch (wmId)
		{
		case IDM_EXIT:
			// "ウィンドウ" = アプリケーションそのものを終了する
			DestroyWindow(hWnd);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
		break;
	case WM_PAINT:
		// 描画処理
		break;
	case WM_DESTROY:
	
		// 終わりだよ、というメッセージを飛ばす
		PostQuitMessage(0);
		break;
	default:
		// "メッセージ" はおびただしいほど種類がある。基本的な処理は自分で書かなくても
		// "標準の処理" がある。それを呼んでいる
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	
	// 終わり
	return 0;
}


Output:
1
2
3
Line 20: error: windows.h: No such file or directory
Line 6: error: 'LRESULT' does not name a type
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: