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 :)