Frage

Ich habe ein geschichtetes Fenster in meiner MFC-Anwendung einrichten. Ich habe meine eigene Ableitung von CDialog einrichten mir zu erlauben, verschiedene Teile, wie das Fenster gerendert wird anpassen. Alles funktioniert bis gut, bis ich mich Gedanken über minimieren und zu maximieren starten.

Wenn Sie auf minimieren oder maximieren dann das Fenster reagiert genau so, wie man es erwarten würde (also genau so, wie es funktioniert, wenn sie nicht ein geschichtetes Fenster verwenden). Allerdings, wenn ich das Fenster etwas wiederherstellen sehr seltsam passiert.

Das Standard-Client-Rechteck für mein Testfenster ist 324x102. Als ich aus dem minimierten Zustand wieder herzustellen, zum Beispiel der cx und cy OnSize bestanden ist 994, 550. Wenn ich dann eine GetClientRect tun (innerhalb OnSize) dies die Größe für das Fenster gemeldet ist. Seltsam, aber wenn ich GetWindowRect bekomme ich die richtige Größe zurück (obwohl natürlich einschließlich aller meiner Nicht-Client-Bereiche).

Hat jemand eine Ahnung, was hier los ist und, was noch wichtiger ist, wie ich das beheben kann, so dass GetClientRect berichtet die richtigen Informationen?

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Ich habe mit einer Art von Hack kommen, dieses Problem zu lösen. In OnSize und OnMove Ich ignoriere die (c) x und (c) y, die ich erhalte und alles klappen von einem GetWindowRect. Die Anwendung reagiert nun wie erwartet. Ich habe den Code mit einem [HACK] Kommentar gekennzeichnet. Dies scheint allerdings sehr merkwürdig, ich würde gerne hören, warum dies geschieht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top