REDESSINER UNE FENËTRE (case WM_PAINT)

Résolu
cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007 - 2 juin 2006 à 13:52
cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007 - 2 juin 2006 à 17:23
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

cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007
2 juin 2006 à 17:23
et bin j'ai fini par trouver c'est "RedrawWindow(hwnd,NULL,NULL,TRUE);qui faut ,ca marche impec
3
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
2 juin 2006 à 14:04
InvalidateRect (hwnd, NULL, TRUE)  
0
cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007
2 juin 2006 à 14:18
le problème c'est qu'après invalidaterect j'ai plus la partie opengl d'affiché
essai en ajoutant updatewindow en suivant mais
0
Rejoignez-nous