Bonjour � tous,

voil�, j'ai une boite de dialog (qui h�rite de CDialog) qui contient quelques controles (boutons, edits etc.) Et je souhaite organiser ces controles de fa�on dynamique, en fonction de la taille la boite de dialogue.

Pour ce faire, j'aimerais placer mon code dans le OnSize() de ma dialog. Le principe est le suivant: j'ai un controle qui ne bouge pas (que j'appelerais control1), et la position des autres (control2, control3, etc.) doit �tre calcul�e en fonction de celui-l�. J'ai donc tent� de faire �a (le code suivant est cens� positionner le control2 en dessous de control1):
Code : 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
void CBEMainDialog::OnSize(UINT nType, int cx, int cy) 
{
         if (::IsWindow(control1.m_hWnd) && ::IsWindow(control2.m_hWnd))
        {
            // le récupère la position du control1 (mon "repère")
            LPRECT lpRect1;
            control1.GetClientRect(lpRect1);
 
            // je récupère la position du control2 (j'en ai besoin car je souhaite conserver sa hauteur)
            LPRECT lpRect2;
            control2.GetClientRect(lpRect2);
 
            //je positionne contol2 en dessous de control1
            control2.SetWindowPos(  NULL, 
                                    lpRect1->left, 
                                    lpRect1->bottom,
                                    lpRect1->right - lpRect1->left,
                                    lpRect2->bottom - lpRect2->top,
                                    SWP_SHOWWINDOW);
        }
    }
}
Et l�,
1/ �a plante direct lorsque la fen�tre s'affiche, � la ligne control2.GetClientRect(lpRect2); Ce qui est �trange c'est que le GetClientRect pr�c�dent (sur l'autre controle) est pass�.
2/ le contenu de lpRect1 est totalement erron�.

Visiblement, le OnSize est appel� alors que les controles ne sont m�me pas encore d�finis ou quelque chose comme �a. Pourquoi les m-hWnd respectifs de mes controles ne sont pas = � 0x0000000 et que �a plante quand m�me? Comment faire pour contourner cela?