描画するためにウインドウズのプログラムも

12/7のクラスを使用して、描画するプログラムです。

//----------------------------------------------------------------
//
//----------------------------------------------------------------
#include	"windows.h"
#include	<commctrl.h>	// コモンコントロールに必要
#include	"G9lib.h"

#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "winmm.lib")

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
#define	PROC_NAME	L"D9ViewProc"
G9lib	g9;
#define	FRAMERATE	60

//----------------------------------------------------------------
//
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow )
{
	DWORD	tick = 0;
	HWND hWnd;
	MSG msg;
	WNDCLASS myProg;

	if (!hPreInst) {
		myProg.style		= CS_HREDRAW | CS_VREDRAW;
		myProg.lpfnWndProc		= WndProc;
		myProg.cbClsExtra		= 0;
		myProg.cbWndExtra		= 0;
		myProg.hInstance		= hInstance;
		myProg.hIcon		= NULL;
		myProg.hCursor		= LoadCursor(NULL, IDC_ARROW);
		myProg.hbrBackground	= NULL;	//IDR_MENU
		myProg.lpszMenuName	= NULL;
		myProg.lpszClassName	= PROC_NAME;
		
		if (!RegisterClass(&myProg))
			return FALSE;
	}

	hWnd = CreateWindow( PROC_NAME,
		L"View Test",
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL);
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	if( !g9.Init( hWnd) )
		return	FALSE;
	tick	= timeGetTime();
	do{
		if(PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) {
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		if(timeGetTime() >= tick) {
			tick += (1000 / FRAMERATE);
			g9.TestDraw();
		}
	} while(msg.message != WM_QUIT);
	g9.Exit();
	return (int)( msg.wParam );
}

//----------------------------------------------------------------
//
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch ( msg ) {
	case WM_DESTROY:
		PostQuitMessage( 0 );
		break;
	default:
		return(DefWindowProc( hwnd, msg, wParam, lParam ));
	}
	return (0L);
}