Nella funzione WndProc() ho messo:
LRESULT CALLBACK WndProc(HWND hWnd /* Handle */, UINT uMsg /* Messaggi */, WPARAM wParam, LPARAM lParam /* Parametri in più */) { // Questa funzione è richiamata dal programma.
switch (uMsg) { // uMsg è il messaggio che contiene ciò che dovremo fare.
case WM_ACTIVATE: { // Se uMsg == WM_ACTIVATE vedremo se la finestra è attiva ...
if (!HIWORD(wParam)) { // Se la finestra non è disattiva
active = TRUE; // La finestra è attiva
} else { // altrimenti ...
active = FALSE; // La finestra non è attiva
}
return 0; // Esce da questa funzione
}
case WM_SYSCOMMAND: { // Se uMsg == WM_SYSCOMMAND ...
switch (wParam) {
case SC_SCREENSAVE: // Se sta partendo uno ScreenSaver
case SC_MONITORPOWER: // Se si sta provando ad entrare nella modalità Power Saving
return 0; // Evitiamo questi due eventi
}
break; // Esce dallo switch
}
case WM_CLOSE: { // Se viene premuta la crocetta ...
PostQuitMessage(0); // Serve per postare un messaggio
return 0; // Esce da questa funzione
}
case WM_KEYDOWN: { // Se è stato premuto un tasto ...
keys[wParam] = TRUE; // wParam è il tasto premuto. Ad esempio 's'. keys[wParam] viene impostato a TRUE, quindi può essere usato per un comando nel gioco...
return 0;
}
case WM_KEYUP: { // Se è stato rilasciato un tasto ...
keys[wParam] = FALSE; // Ovviamente deve ritornare FALSE quando viene rilasciato, altrimenti si bloccherebbe il programma
return 0;
}
case WM_SIZE: { // Se la finestra sta per essere ridimensionata ...
ReSizeGLScene(LOWORD(lParam),HIWORD(lParam)); // Richiamiamo la funzione che ci permette di cambiare la dimensione della finestra. lParam sono le grandezze
return 0;
}
}
return DefWindowProc(hWnd,uMsg,wParam,lParam); // I parametri non utilizzati verranno dati a questa funzione
}
Ma alcuni tasti se li premo il programma rallenta. Come posso risolvere?
Grazie per le risposte.