bonjour a tout

Je poste car j'ai un problème pour scroller une fenêtre opengl.

J'ai crée une Windows class qui permet d'afficher la fenêtre principale puits dedans je crée une seconde Windows class qui affiche openGL.

et lorsque que je scrool la fenêtre principale elle n'affiche plus la fenêtre opengl il faut que je relâche la barre de scroll pour que la fenêtre openGL se mette a jour.

voici mon code pour crée la fenetre principale :
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        classeFenetre.style = 0;
        classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
        classeFenetre.cbClsExtra = 0;
        classeFenetre.cbWndExtra = 0;
        classeFenetre.hInstance = NULL;
        classeFenetre.hIcon = LoadIcon(NULL,IDI_APPLICATION);
        classeFenetre.hCursor = LoadCursor(NULL,IDC_ARROW);
        classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
        classeFenetre.lpszMenuName = NULL;
        classeFenetre.lpszClassName = "fenetre";

        if(RegisterClass(&classeFenetre) == 0)
        {
            exit(12);
        }

        m_handle = CreateWindow("fenetre",
                                m_title.c_str(),
                                WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL, //Style
                                CW_USEDEFAULT, // Permet à l'OS de déterminer dynamiquement la position de la fenêtre
                                CW_USEDEFAULT, //Idem
                                m_displayArea.getLargeur(),
                                m_displayArea.getHauteur(),
                                NULL, // Pas de fenêtre parent, puisque c'est la principale
                                m_menu.getMenu(),
                                m_realInstance,
                                NULL); // Aucun paramètre à lui envoyer en plus*/

        if(m_handle == 0)
        {
            exit(13);
        }

puits le code utiliser pour scroller :
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void FenetrePr::VertScroll(int value)
{
    if(value < m_ContainVScroll.nMin)
    {
        value = m_ContainVScroll.nMin;
    }
    else if(value > m_ContainVScroll.nMax - m_ContainVScroll.nPage)
    {
        value = m_ContainVScroll.nMax - m_ContainVScroll.nPage;
    }

    ScrollWindowEx(m_handle,0,m_ContainVScroll.nPos - value,NULL,NULL,NULL,NULL,SW_SCROLLCHILDREN | SW_INVALIDATE);
    RedrawWindow(m_handle,NULL,NULL,RDW_UPDATENOW);

    m_ContainVScroll.nPos = value;
    SetScrollInfo(m_handle,SB_VERT,&m_ContainVScroll,true);
}

void FenetrePr::HorzScroll(int value)
{
    if(value < m_ContainHScroll.nMin)
    {
        value = m_ContainHScroll.nMin;
    }
    else if(value > m_ContainHScroll.nMax - m_ContainHScroll.nPage)
    {
        value = m_ContainHScroll.nMax - m_ContainHScroll.nPage;
    }

    ScrollWindowEx(m_handle,m_ContainHScroll.nPos - value,0,NULL,NULL,NULL,NULL,SW_SCROLLCHILDREN | SW_INVALIDATE);
    RedrawWindow(m_handle,NULL,NULL,RDW_UPDATENOW);

    m_ContainHScroll.nPos = value;
    SetScrollInfo(m_handle,SB_HORZ,&m_ContainHScroll,true);
}

et le code pour ma fenetre openGl
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
void guiOpenGL::createWindows()
{
    if(m_isCreate == false)
    {
        WNDCLASS classeFenetre;

        classeFenetre.style = 0;
        classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
        classeFenetre.cbClsExtra = 0;
        classeFenetre.cbWndExtra = 0;
        classeFenetre.hInstance = *m_instance;
        classeFenetre.hIcon = 0;
        classeFenetre.hCursor = 0;
        classeFenetre.hbrBackground = 0;
        classeFenetre.lpszMenuName = NULL;
        classeFenetre.lpszClassName = "classeOpengl";

        if (!RegisterClass(&classeFenetre))
        {
            if(GetLastError() == 1410) //ereur 1410 = ERROR_CLASS_ALREADY_EXISTS
            {

            }
            else
            {
                exit(1);
            }
        }

        m_handle = CreateWindow("classeOpengl","Fenêtre OpenGL",WS_VISIBLE | WS_CHILD,
                                m_widgetArea.getGauche(),m_widgetArea.getBas(),
                                m_widgetArea.getLargeur(),m_widgetArea.getHauteur(),
                                *m_handleParent,0,*m_instance,NULL);

        if (!m_handle) exit(2);

        SetWindowLongPtr(m_handle,GWLP_USERDATA,reinterpret_cast<LONG>(this));

        m_DC = GetDC(m_handle);
        SetupPixelFormat();
        m_RC = wglCreateContext(m_DC);

        if (!m_RC)
        {
            exit(3);
        }

        m_isCreate = true;
    }
}

void guiOpenGL::SetupPixelFormat()
{
  	PIXELFORMATDESCRIPTOR pfd = {
  	    sizeof(PIXELFORMATDESCRIPTOR), 	//taille du descripteur de format
        1, 	//version
        PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER, 	//Propriété
        PFD_TYPE_RGBA, 	//Mode de couleurs
        16, 	//Bits de couleur
        0,0,0,0,0,0, 	//Paramètres des couleurs
        0,0, 	//Paramètres alpha
        0,0,0,0,0, 	//Paramètres du buffer d'accumulation
        32, 	//Bits de profondeur
        0, 	//Bits du buffer stencil
        0, 	//Nombre de buffers auxiliaires
        0, 	//ignoré (obsolète)
        0, 	//réservé/code>
        0, 	//ignoré (obsolète)
        0, 	//Couleur de transparence
        0}; //Ignoré (obsolète)

  	int pixelFormat;
    pixelFormat = ChoosePixelFormat(m_DC, &pfd);

    if (!pixelFormat) /*Vérifie si un PixelFormat du type demandé existe*/
    {
        MessageBox(WindowFromDC(m_DC),"Mode graphique non supporté","Problème",MB_ICONERROR | MB_OK);
        exit(4);
	}

    if (!SetPixelFormat(m_DC, pixelFormat, &pfd)) /*Applique le PixelFormat. Arrête si erreur*/
    {
        MessageBox(WindowFromDC(m_DC),"Mode graphique non supporté","Problème",MB_ICONERROR | MB_OK);
        exit(5);
    }
}

voila tout ce qui concerne le problème, si vous voyiez d’où il peut venir merci d'avance