Wygląda to tak, że mam masakryczny styl programowania, bo to mój pierwszy większy projekt, który nie jest czymś w stylu, sprawdzam czy działa to co sie nauczyłem.
Tutaj Procedura Okienkowa:
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HDC hDC; // Kontekst urządzenia
static HGLRC hRC; // kontekst tworzenia grafiki
int staraMyszX, staraMyszY;
//-------------------------------------------------------------------------------
switch(message)
{
case WM_CREATE:
hDC = GetDC(hwnd); // pobiera kontekst urzadzenia dla okna
g_HDC = hDC;
SetupPixelFormat(hDC);
hRC = wglCreateContext(hDC);
wglMakeCurrent(hDC, hRC);
return 0;
break;
case WM_CLOSE:
wglMakeCurrent(hDC, NULL);
wglDeleteContext(hRC);
CloseHandle(hCom);
PostQuitMessage(0);
return 0;
break;
case WM_COMMAND:
if(LOWORD(wParam) == 105) // Obsluga Menu -> Zakoncz
{
wglMakeCurrent(hDC, NULL);
wglDeleteContext(hRC);
PostQuitMessage(0);
}
if(LOWORD(wParam) == 108) // Obsluga Menu -> Grafika -> Figury
{
grafika = FIGURY;
CheckMenuItem(Menu, 109, MF_BYCOMMAND |MF_UNCHECKED);
CheckMenuItem(Menu, 108, MF_BYCOMMAND |MF_CHECKED);
}
if(LOWORD(wParam) == 109) // Obsluga Menu -> Grafika -> Linie
{
grafika = LINIE;
CheckMenuItem(Menu, 108, MF_BYCOMMAND |MF_UNCHECKED);
CheckMenuItem(Menu, 109, MF_BYCOMMAND |MF_CHECKED);
}
if(LOWORD(wParam) == 500) // Obsluga guzikow trybu graficznego.
{ // Linie
grafika = LINIE;
MessageBox(NULL, "Grrr", "Co sie stao?", MB_OK);
}
if(LOWORD(wParam) == 501)
{ // Czworokaty
grafika = FIGURY;
}
return 0;
break;
case WM_MOUSEMOVE:
staraMyszX = MyszX; // Zapamietuje stare wspolrzedne myszy
staraMyszY = MyszY;
MyszX = LOWORD(lParam); // Pobiera nowe wspolrzedne myszy
MyszY = HIWORD(lParam);
if((MyszX - staraMyszX) > 0) // mysz przesunięta w prawo
myszPrawo = true;
else myszPrawo = false;
if((MyszX - staraMyszX) < 0) // mysz przesunięta w lewo
myszLewo = true;
else myszLewo = false;
if((MyszY - staraMyszY) > 0) // mysz przesunięta w dół
myszDol = true;
else myszDol = false;
if((MyszY - staraMyszY) < 0) // mysz przesunięta w górę
myszGora = true;
else myszGora = false;
return 0;
break;
case WM_LBUTTONDOWN:
LPM = true;
return 0;
break;
case WM_LBUTTONUP:
LPM = false;
return 0;
break;
case WM_RBUTTONDOWN:
PPM = true;
return 0;
break;
case WM_RBUTTONUP:
PPM = false;
return 0;
break;
case WM_KEYDOWN:
keyPressed[wParam] = true;
return 0;
break;
case WM_KEYUP:
keyPressed[wParam] = false;
return 0;
break;
default:
break;
}
return (DefWindowProc(hwnd, message, wParam, lParam));
}
Reakcja na klawisze jest w pętli przetwarzania komunikatów, też wrzucę:
/* Pętla przetwarzania komunikatów */
while(!done)
{
PeekMessage(&msg, NULL, 0 ,0 , PM_REMOVE);
if(msg.message == WM_QUIT)
{
done = true;
}
else
{
// Reakcja na wciskanie klawiszy - sterowanie ramieniem
if(keyPressed['A'])
{
if(kat_ramienia[0] <= 90.0)
kat_ramienia[0]+= predkosc;
}
if(keyPressed['F'])
{
if(kat_ramienia[0] >= -90.0)
kat_ramienia[0]-= predkosc;
}
if(keyPressed['W'])
{
if(kat_ramienia[1] >= -90.0)
kat_ramienia[1]-= predkosc;
}
if(keyPressed['S'])
{
if(kat_ramienia[1] <= 90.0)
kat_ramienia[1]+= predkosc;
}
if(keyPressed['E'])
{
if(kat_ramienia[2] >= -90.0)
kat_ramienia[2]-= predkosc;
}
if(keyPressed['D'])
{
if(kat_ramienia[2] <= 90.0)
kat_ramienia[2]+= predkosc;
}
if(keyPressed['U'])
{
if(kat_ramienia[3] >= -90.0)
kat_ramienia[3]-= predkosc;
}
if(keyPressed['J'])
{
if(kat_ramienia[3] <= 90.0)
kat_ramienia[3]+= predkosc;
}
if(keyPressed['H'])
{
if(kat_ramienia[4] >= -90.0)
kat_ramienia[4]-= predkosc;
}
if(keyPressed['L'])
{
if(kat_ramienia[4] <= 90.0)
kat_ramienia[4]+= predkosc;
}
if(keyPressed['I'])
{
if(kat_ramienia[5] >= 0.0)
kat_ramienia[5]-= predkosc;
}
if(keyPressed['K'])
{
if(kat_ramienia[5] <= 90.0)
kat_ramienia[5]+= predkosc;
}
Ustawienia();
Kamera();
Rysuj();
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
W funkcji Kamera() sprawdzam te zmienne od myszy: LPM, PPM, myszGora ....
Kompletnie nie wiem co jest, dziwi mnie to zapadniecie sie guzika, a jak jest MessageBox to przechodzę do komunikatu który wywalił i potem jak wrócę do programu to wszystko śmiga i przycisk normalnie wygląda.</quote>
P.S Czy da sie jakoś zrobić suwaki w kodzie, bo nie widzę takiej opcji ?
Pozdrawiam
Mrowa.