REDESSINER UNE FENËTRE (case WM_PAINT) [Résolu]

Signaler
Messages postés
71
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
21 octobre 2007
-
Messages postés
71
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
21 octobre 2007
-
salut
je cherche comment faire pour redessiner une fenêtre après chargement de fichier jpeg ou bitmap suite à un evénement WM_COMMAND (GetOpenfilename(&ofn)). j'utilise la lib sdl qui charge tout les formats d'images et opengl

pour l'instant la fenêtre se redessine qu'après diminution dans la barre des taches et ensuite réagrandissement.cela doit être le message WM_PAINT je suppose ,si c'est celà comment procéder pour le redessinement après le chargement de l'image" Image.LoadTexture(ofn.lpstrFileTitle,texture);"

j'ai essayé avec updatewindow mais  merci d'avance

case WM_COMMAND :       
       {
     switch (LOWORD (wParam)) // --------------------------------------
             
      {
 case IDM_OUVRIR_JPEG:
   ZeroMemory(&ofn, sizeof(ofn));  
   ofn.lStructSize = sizeof(ofn);
   ofn.hwndOwner = hwnd; 
   ofn.lpstrFilter = "Fichier Jpeg (*.jpg)";
   ofn.nFilterIndex = 1; 
   ofn.lpstrFile = JPEGNomDocumentLong ;
   ofn.nMaxFile = MAX_PATH; // MAX_PATH vaut 260
   ofn.lpstrFileTitle = JPEGNomDocumentCourt;
   ofn.nMaxFileTitle = sizeof(JPEGNomDocumentCourt);
   ofn.lpstrDefExt = "*.jpg";  
   // si aucun nom de fichier n'a été sélectionné, on abandonne     
   if(!GetOpenFileName(&ofn))     
     return false;
   lstrcpy( CopieJpeg,ofn.lpstrFile);//JPEGNomDocumentLong 
   Image.LoadTexture(ofn.lpstrFileTitle,texture);
                 
        break;

ensuite dans  le case WM_PAINT

void RePaint ()

    glClear(GL_COLOR_BUFFER_BIT|  //efface le frame buffer et le Z-buffer
            GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();             //réinitialise la matrice
    gluLookAt(0,0,10,0,0,0,0,1,0);
    glTranslatef( -9.0, -8.0, -10.0);
   
    glBindTexture(GL_TEXTURE_2D,texture);
    glBegin(GL_POLYGON);     
         glTexCoord2f(1.0,0.0);glVertex3f(0.0,12.0,0.0); //haut gauche
         glTexCoord2f(1.0,1.0);glVertex3f(0.0,0.0,0.0);//bas gauche
         glTexCoord2f(0.0,1.0);glVertex3f(12.0,0.0,0.0);//bas droite
         glTexCoord2f(0.0,0.0);glVertex3f(12.0,12.0,0.0);//haut droite
    glEnd();
      
   SwapBuffers (DC);
}

3 réponses

Messages postés
71
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
21 octobre 2007

et bin j'ai fini par trouver c'est "RedrawWindow(hwnd,NULL,NULL,TRUE);qui faut ,ca marche impec
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

InvalidateRect (hwnd, NULL, TRUE)  
Messages postés
71
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
21 octobre 2007

le problème c'est qu'après invalidaterect j'ai plus la partie opengl d'affiché
essai en ajoutant updatewindow en suivant mais