OVH Cloud OVH Cloud

Problème de clip de fenêtre dans interface MDI

2 réponses
Avatar
Nicolas Rentero
Bonjour à tous,

J'essaie d'ajouter une interface MDI à mon application et j'ai quelques
problèmes de dessin.
Mon application est composée ainsi (c'est un data logger digital sur port
série):
Fenêtre cadre + StatusBar
|
-->ClientMDI (dimensionnée en fonction de la statusbar, merci Mr ASTOR)
|
-->Fenêtre enfant MDI
|
-->Fenêtres enfants de tracé des axes et des données

Mon problème est que bien que le pourtour de la fenêtre enfant MDI ne
dépasse jamais de la statusbar (clippée par la MDICLIENT), les fenêtres que
je dessine à l'intérieur, par contre, dépassent du cadre de la MDICLIENT et
passent en arrière plan de la statusbar.

Pour illustrer mon problème, j'ai fait une version minimale de l'interface
qui reproduit mon problème (fenêtre cadre + client MDI + enfant MDI +
fenêtre de tracé dans l'enfant MDI)
http://n.rentero.free.fr/Appli.zip (17K, VC6, code source en langage C)
A l'exécution, faire "Fichier" -> "Nouvelle fenêtre MDI"
Lorsque l'on réduit la fenêtre cadre, la fenêtre de tracé apparaît derrière
la statusbar (alors que l'arrière plan NON!).

Comment fait on pour clipper aussi les fenêtres enfants appartenant à une
enfant MDI en fonction de la taille de la MDICLIENT?

Je suis sûr que c'est stupide mais là je trouve pas...
Si vous pouvez m'aider, merci par avance

N.R.

2 réponses

Avatar
Christian ASTOR
Nicolas Rentero a écrit:


Mon problème est que bien que le pourtour de la fenêtre enfant MDI ne
dépasse jamais de la statusbar (clippée par la MDICLIENT), les fenêtres que
je dessine à l'intérieur, par contre, dépassent du cadre de la MDICLIENT et
passent en arrière plan de la statusbar.

Pour illustrer mon problème, j'ai fait une version minimale de l'interface
qui reproduit mon problème (fenêtre cadre + client MDI + enfant MDI +
fenêtre de tracé dans l'enfant MDI)
http://n.rentero.free.fr/Appli.zip (17K, VC6, code source en langage C)
A l'exécution, faire "Fichier" -> "Nouvelle fenêtre MDI"
Lorsque l'on réduit la fenêtre cadre, la fenêtre de tracé apparaît derrière
la statusbar (alors que l'arrière plan NON!).



2 bugs ds le WM_SIZE :
- TRUE en dernier paramètre de MoveWindow() (sinon pas raffraichie)
- retourner FALSE;
(MSDN : "If an application processes this message, it should return
zero. "....)
Avatar
Nicolas Rentero
Ben voila... ça fonctionne maintenant.
Merci encore une fois!
"Christian ASTOR" a écrit dans le message de
news: 408561ab$0$7782$
Nicolas Rentero a écrit:


> Mon problème est que bien que le pourtour de la fenêtre enfant MDI ne
> dépasse jamais de la statusbar (clippée par la MDICLIENT), les fenêtres


que
> je dessine à l'intérieur, par contre, dépassent du cadre de la MDICLIENT


et
> passent en arrière plan de la statusbar.
>
> Pour illustrer mon problème, j'ai fait une version minimale de


l'interface
> qui reproduit mon problème (fenêtre cadre + client MDI + enfant MDI +
> fenêtre de tracé dans l'enfant MDI)
> http://n.rentero.free.fr/Appli.zip (17K, VC6, code source en langage C)
> A l'exécution, faire "Fichier" -> "Nouvelle fenêtre MDI"
> Lorsque l'on réduit la fenêtre cadre, la fenêtre de tracé apparaît


derrière
> la statusbar (alors que l'arrière plan NON!).

2 bugs ds le WM_SIZE :
- TRUE en dernier paramètre de MoveWindow() (sinon pas raffraichie)
- retourner FALSE;
(MSDN : "If an application processes this message, it should return
zero. "....)



Dans ma bêtise, je pensais avoir compris que WM_SIZE, devait être transmis
au MDICLIENT et par conséquent ne devait pas être suivi d'un return afin que
le message soit traité par DefFrameProc. Faut que je relise tout ça....