2010-03-18 4 views
0

Dans mon applcaiton VC++ MFC, j'ai des vues différentes. Et dans chaque vue, quand je le maximise, j'ai changé la taille et la position à nouveau (Normalement, la taille de l'écran est maximisée). Mais je ne veux pas tht.So OnSize() j'ai codé comme ça.OnSize() Problème dans VC++

void CChildFrame::OnSize(UINT nType, int cx, int cy) 
{ 
CMDIChildWnd::OnSize(nType, cx, cy); 

int XBorder = GetSystemMetrics(SM_CXMAXIMIZED); 
int YBorder = GetSystemMetrics(SM_CYMAXIMIZED); 
switch (nType) 
    { 
     case SIZE_MAXIMIZED: 
SetWindowPos(NULL,0,60,XBorder-45,YBorder-60,SWP_NOZORDER); 
    break; 
} 
} 

Mais ce qui est arrivé est? Quand j'agrandissez la fenêtre, son maximisée obtenir la taille de la mention ci-dessus only.But dans ce bar bleu, il Sí pas minimiser, maximiser, bouton de fermeture. Lorsque je double-clique dans la barre bleue, je peux revenir à la position précédente avec tous les boutons. Comment puis-je obtenir cela?

Répondre

0

Je ne comprends pas ce qu'est la "barre bleue", mais vous pouvez probablement regarder dans les directions suivantes: modifier les styles de fenêtres (voir WS_MAXIMIZE, WS_MAXIMIZEBOX, ...); écrasez OnGetMinMaxInfo au lieu de OnSize.

+0

La barre bleue est une fonction système avec menu système et légende. J'utilise OnGetMinMaxInfo(). Mais il obtient X, Y comme 0,0 seulement. Mais je veux X = 0, Y = 60. Ceci est mon OnGetMinMaxInfo() lpMMI-> ptMaxTrackSize.x = XBorder-100; lpMMI-> ptMaxTrackSize.y = YBorder-100; – Anu