Question

J'ai une fenêtre en couches mis en place dans mon application MFC. Je l'ai mis en place ma propre dérivation de CDialog pour me permettre de personnaliser les différentes parties de la façon dont la fenêtre est rendue. Tout fonctionne bien jusqu'à jusqu'à ce que je commence à se soucier de minimiser et de maximiser.

Si vous cliquez réduisez ou agrandissez alors la fenêtre réagit exactement comme on pouvait s'y attendre (soit exactement comme il le fait lorsque vous n'utilisez une fenêtre en couches). Cependant, quand je ramènerai la fenêtre quelque chose arrive très étrange.

Le rectangle client par défaut pour ma fenêtre de test est 324x102. Quand je ramènerai de l'état réduit, par exemple, le cx et cy passés à OnSize est 994, 550. Si je fais alors un GetClientRect (au sein OnSize) c'est la taille indiquée pour la fenêtre. Bizarrement, bien que si je fais GetWindowRect je rentrerai la taille correcte (bien évidemment, y compris tous mes domaines non clients).

Est-ce que quelqu'un a une idée de ce qui se passe ici et, plus important encore, comment je peux le réparer tel que GetClientRect rapporte l'information CORRECT?

Merci d'avance!

Était-ce utile?

La solution

Je suis venu avec une sorte de hack pour résoudre ce problème. Dans OnSize et OnMove je l'ignore (c) x et (c) y que je reçois et tout travaille à partir d'un GetWindowRect. L'application réagit maintenant comme prévu. J'ai marqué le code avec un commentaire [HACK]. Cela ne semble très étrange que, j'aimerais savoir pourquoi cela se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top