OVH Cloud OVH Cloud

MainFrame.OnSize

13 réponses
Avatar
JM
Bonjour

J'ai un problème curieux.
J'ai une variable TabCtrl qui dérive de CTabCtrl dans le mainframe.
elle s'affiche très bien.
Si j'utilise la première version de OnSize, je ne peux pas
redimensionner la fenêtre d'application.
Si j'utilise la deuxième version, cela marche.
Pourtant, en utilisant le debugger, RectUtile et rr contiennent
exactement les mêmes valeurs!

Merci d'avance

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{ CMDIFrameWnd::OnSize(nType, cx, cy);
CRect RectUtile,rt;

GetClientRect(&RectUtile);

TabCtrl.SetWindowPos(&wndTop,RectUtile.left,RectUtile.top,RectUtile.Width(),RectUtile.Height(),SWP_SHOWWINDOW
);
}

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{ CMDIFrameWnd::OnSize(nType, cx, cy);
CRect RectUtile,rt;

GetClientRect(&RectUtile);

CRect rr(0,26,952,568);
RectUtile=rr; //LA SEULE DIFFERENCE!!

TabCtrl.SetWindowPos(&wndTop,RectUtile.left,RectUtile.top,RectUtile.Width(),RectUtile.Height(),SWP_SHOWWINDOW

}

3 réponses

1 2
Avatar
JM
Dominique Vaufreydaz a écrit :

On commence comme ca... Après on se dit que l'assistant, finalement,
il pourrait bien le faire ;-P



Ouai mais l'assistant il fout du bordel partout, indente n'importe
comment, met des commentaires débiles...
Ceci dit, dans visual c++.net, il est plus pratique et plus logique à
utiliser que celui de vc 6
Avatar
JM
Arnold McDonald (AMcD) a écrit :

Il te faudrait donc te poser les questions suivantes :

- Fais-tu le GetClientRect() au bon endroit ? Dans la bonne classe ?
- Quelles coordonnées te sont retournées ? Sont-elles valides ?

Paske, note-bien que, dans ton code, dès lors que tu forces des coordonnées
valides, tu dis que ça fonctionne...

Ouf, fin de mon incursion MFC...



Tout était mis exactement au même endroit, c'est bien ça la curiosité.
Il n'y a que deux lignes de différence, intercalée entre mon getclient
et setwindow.

En virant un releasecapture qui ne "servait" pas à grand chose, les deux
cas se sont mis à fonctionner.
J'ai pô tout compris, mais c'est pas grave!

Merci de ton incursion dans les MFC :o)

1) GetClientRect(&RectUtile);
Machin.SetWindowPos...
-> Au débuggueur, Rectutile à les coordonnées 0,26,952,56
Impossible de "resizer"

2) GetClientRect(&RectUtile);
CRect rr(0,26,952,568);
RectUtile=rr; //LA SEULE DIFFERENCE!!
Machin.SetWindowPos...
Je "resizais" sans problème!
Avatar
Dominique Vaufreydaz
Salut,

Ouai mais l'assistant il fout du bordel partout, indente n'importe
comment, met des commentaires débiles...
Ceci dit, dans visual c++.net, il est plus pratique et plus logique à
utiliser que celui de vc 6



Ouai et le include debile, hein ? GEnre, je mets des majuscules
au nom de fichiers, mais pas dans les include. C'est pas juste
pour faire chier le monde si tu veux faire du code portable !

Bref, maintenant, je fais ca a la main, et hop, code portable
et tout et tout... De toute facon, si tu n'es pas capable de comprendre
ce qu'a fait l'assistant, t'es dans la panade.

Doms.
1 2