Certo, avevo saltato alcune parti per cercare di snellirlo un po' premetto comunque che questo programma è scritto utilizzando le librerie OpenGL. Praticamente è un giochino semplice, in cui vi sono dei frutti e lo scopo è tagliarli (non mi dilungo troppo).
Questa è la main:

codice:
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
    MSG        msg;
    bool    done = false;

    mouse.init();
    aumento = 8.25f/90.0f;

    if (MessageBox(NULL,"Eseguire in modalità fullscreen?", "FullScreen?", MB_YESNO|MB_ICONQUESTION)==IDNO){ // chiede all'utente se vuole che il programma venga eseguito in modalità schermo intero
        fullscreen=false;
    }

    if (!CreateGLWindow("Fruit killer :D",640,480,16,fullscreen)){ // crea la finestra
        return 0;
    }

    while(!done){
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
            if (msg.message==WM_QUIT){
                done = true;
            }else{
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
        }else{
            if(!caricato){ // carico tutti i modelli 3D
                ShowCursor(FALSE);

                frutta = new Frutti(hDC, &barra, aumento, loading);
                ortaggi = new Ortaggi(hDC, &barra, aumento, loading);
                vari = new Vari(hDC, &barra, aumento, loading);
                scia = new Scia(spade, &mouse, 200);
                esplosione = new Scia(spade, &mouse, 2000);
                banane = new Scia(spade, &mouse, 150);
                esplosione->setSel(0);
                gest = new Gestore(&hDC, &hInstance, (Frutti*)frutta, (Ortaggi*)ortaggi, (Vari*)vari, &mouse, &spade, scia, esplosione, banane, &writers, &comic, &menu_tex, &splash, &bonus_tex);
                caricato=true;
            }
            
            if (gest->getCur()){
                ShowCursor(TRUE);
            }

            if (gest->getLuce()){
                glDisable(GL_LIGHT0);
            }
            else{
                glEnable(GL_LIGHT0);
            }

            if (gest->getNebbia()){
                glEnable(GL_FOG);
            }
            else{
                glDisable(GL_FOG);
            }

            if ((active && !DrawGLScene())){
                done=TRUE;
            }else{
                SwapBuffers(hDC);
            }

            if (keys[VK_ESCAPE]){
                keys[VK_ESCAPE] = FALSE;
                gest->pausa();
            }

            done = gest->getFine();
        }
    }

    delete frutta;
    delete ortaggi;
    delete vari;
    delete gest;
    delete scia;

    glDisable(GL_LIGHTING);

    KillGLWindow();
    return (msg.wParam);
}