LONG WINAPI WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static bool resized = true;
static int dx=WIN_DX, dy=WIN_DY;
switch(uMsg)
{
case WM_PAINT:
if(resized)
{
glViewport(0, 0, dx, dy);
gluPerspective( 90,
((float)dx)/dy,
NEAR_CLIPPING,
FAR_CLIPPING);
display();
SwapBuffers((HDC)wParam);
resized = false;
}
break;
case WM_SIZE:
resized = true;
dx = LOWORD(lParam);
dy = HIWORD(lParam);
return 0;
case WM_CLOSE:
PostQuitMessage(0);
return 0;
case WM_KEYDOWN:
keys[wParam] = true;
break;
case WM_KEYUP:
if(wParam == 27)
{
PostQuitMessage(0);
return 0;
}
keys[wParam] = false;
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}