Problem z WinApi i OpenGl

0

Mógłby mi ktoś powiedzięć dlaczego podczas przechodzenie z "menu" do gry uruchami się funkcja uruchamiająca tryb opengl ale nie moge niczym sterowac - zero kontaktu z klawiatura :P

#include <windows.h>
#include "okno.h"
#include "plansza.h"
#include <Gl/glu.h>
#include <GL/gl.h>
#include <math.h>
#include "save.h"

HWND hwnd,button,button2,button3,button4;
MSG msg;
WNDCLASS wnd;
HGLRC hrc;
HDC hdc;
plansza nowa;
obsluga_save save;
float tmp;
bool klawisze[256];
okno WinOkno;
bool stan[2]; // 1 - menu 2 - gra

LRESULT CALLBACK ProcOkno(HWND hwnd, UINT wiadomosc, WPARAM wparam,LPARAM lparam);
BOOL UtworzOkno(HINSTANCE hinstance,HWND *hwnd);

//====================================================

int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR args,int nargs)
{
	nowa.przygotuj();
	stan[0]=TRUE;
	if(!WinOkno.UtworzOkno(hinstance,&hwnd)) return FALSE;
	ShowWindow(hwnd,nargs);
	UpdateWindow(hwnd);


		button=CreateWindowEx(0,"BUTTON","  Rozpocznij Gre  ",WS_CHILD|WS_VISIBLE, 400,190,200,25,hwnd,(HMENU)1,NULL,0); 
		button2=CreateWindowEx(0,"BUTTON","  Odczytaj  ",WS_CHILD|WS_VISIBLE, 400,250,200,25,hwnd,(HMENU)2,NULL,0); 
		button3=CreateWindowEx(0,"BUTTON","  Sterowanie  ",WS_CHILD|WS_VISIBLE, 400,310,200,25,hwnd,(HMENU)3,NULL,0); 
		button4=CreateWindowEx(0,"BUTTON","  Koniec  ",WS_CHILD|WS_VISIBLE, 400,370,200,25,hwnd,(HMENU)4,NULL,0); 


	while(msg.message!=WM_QUIT)
	{
	if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) 
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	else
	{
		if(stan[1]==TRUE)
		{
			glMatrixMode(GL_PROJECTION);					
			glLoadIdentity();
			gluPerspective(45.0f,(GLfloat)1024/(GLfloat)768,0.1f,100.0f);
			glMatrixMode(GL_MODELVIEW);						
			glLoadIdentity();	
			glClearDepth(1.0);
			glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	
			glEnable(GL_TEXTURE_2D);
			glEnable(GL_DEPTH_TEST);
			glBlendFunc(GL_SRC_ALPHA,GL_ONE);
			glDepthFunc(GL_LESS);
			glColor3f(1,1,1);

			nowa.wyswietl(hdc);
		
			nowa.sprawdzaj();	
			if(nowa.suma()) 
			{
				MessageBox(NULL,"KONIEC GRY \nUDALO CI SIE ZEBRAC WSZYSTKIE KRYSZTALY","INFORMACJA",MB_OK); 
				PostQuitMessage(0);
			}
		}
		else
		{
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			glLoadIdentity();
			glColor3f(0,0,0);
			glBegin(GL_QUADS);
				glVertex3f(-1,1,0);glVertex3f(1,1,0);
				glVertex3f(1,-1,0);glVertex3f(-1,-1,0);
			glEnd();
			glFlush();
			SwapBuffers(hdc);
		}
	}
	}
	return msg.wParam;
}

//====================================================

LRESULT CALLBACK ProcOkno(HWND hwnd, UINT wiadomosc, WPARAM wparam,LPARAM lparam)
{
if(klawisze[VK_ESCAPE])
{
	WinOkno.wylaczopengl(hwnd,hdc,hrc);
	PostQuitMessage(0);
}

if(klawisze[VK_RIGHT])
{
	stan[1]=TRUE;
}

switch(wparam)
{
	case VK_F2:
		save.zapisz(&nowa);
	break;
	case VK_F3:
		save.odczytaj(&nowa);
	break;
}

switch(wiadomosc)
{
	case WM_CREATE:
    	sndPlaySound("Wav/2.wav",SND_FILENAME | SND_ASYNC);
		break;
	case WM_DESTROY:
	    if(stan[1]==TRUE) WinOkno.wylaczopengl(hwnd,hdc,hrc);
		PostQuitMessage(0);
		break;
	case WM_KEYUP:
		nowa.obrot2=0; 
		nowa.obrot3=0;
		klawisze[wparam]=FALSE;		
		break;
	case WM_KEYDOWN:						
		klawisze[wparam]=TRUE;
		break;
	case WM_COMMAND:
		if(wparam==1) {
			stan[0]=FALSE; 
			stan[1]=TRUE; 
			WinOkno.wlaczopengl(hwnd,&hdc,&hrc);
		}
		if(wparam==4) PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd,wiadomosc,wparam,lparam);
}
	return 0;
}

jak ktoś zdoła mi w tym pomóc to z góry wielkie DZIĘKI :)

0

oki.. problem rozwiazany ... wystarczylo wstawić SetFocus(hwnd); :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1