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
| // Récupération du cadre de la MainFrame.
CRect rectMainF;
AfxGetMainWnd()->GetWindowRect(rectMainF);
// On en déduit les dimensions maximum possibles du cadre de la ChildFrame.
CRect rectMax(0, 0, rectMainF.Width() - 15, rectMainF.Height() - 80);
// Initialisation du cadre aux dimensions maximum obtenues.
GetParentFrame()->SetWindowPos(NULL, 0, 0, rectMax.Width(), rectMax.Height(), SWP_NOMOVE | SWP_NOZORDER);
// Adaptation du cadre aux dimensions de la vue.
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
// Repositionnement éventuel de la vue.
CRect rectC;
GetParentFrame()->GetWindowRect(rectC);
AfxGetMainWnd()->ScreenToClient(rectC);
int versGauche, versHaut;
versGauche = versHaut = 0;
if (rectC.right > rectMax.right)
versGauche = (int) min(rectC.right - rectMax.right, rectC.left - rectMax.left);
if (rectC.bottom > rectMax.bottom)
versHaut = (int) min(rectC.bottom - rectMax.bottom, rectC.top - rectMax.top);
if (versGauche || versHaut)
GetParentFrame()->SetWindowPos(NULL, rectC.left - versGauche, rectC.top - versHaut, 0, 0, SWP_NOSIZE | SWP_NOZORDER); |
Partager