MFC-CWnd Höhe und Breite
Wie bekommt man die Höhe und Breite des CWnd*? Das CWnd wird das Fenster richtig? Warum ist nicht der Befehl:
CWnd* parent = this->GetParent(); //C++ command
parent->GetSize(); //what I think the method should be OR ...
parent->GetWindowRect(); //what i think it should be (no arguments)
was ist das LPRECT? Ich habe bereits das Objekt ... warum und was ist das argument geht in GetWindowRect? Was bin ich deutete auf? Ich habe bereits das Objekt ich möchte zu finden, die Größe von ... geben Sie mir nur die Größe.
- Es ist nicht
GetSize
Methode in derCWnd
Klasse. Und dieGetWindowRect
Methode benötigt einen parameter, wird der Zeiger auf das Rechteck, wo die position und die Größe des Fensters gehen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
LPRECT
parameter ist ein Zeiger auf eineRECT
- Struktur (die "LP" - Präfix steht für "long pointer", aus historischen Gründen).Den
GetWindowRect
- Funktion wird zum abrufen der Fenster-Rechteck für IhreCWnd
Objekt, aber es wird tun, also, indem Sie einRECT
Struktur mit den entsprechenden Koordinaten. Daher müssen Sie zum erstellen einerRECT
- Struktur und einen Zeiger übergeben, um es auf dieGetWindowRect
Funktion.Es ist erwähnenswert, dass die API akzeptiert einen Zeiger auf ein
RECT
Struktur für volle Kompatibilität mit Win32. DieCRect
MFC-Klasse eigentlich erbt aus derRECT
Struktur definiert, die das SDK verwenden, so können Sie einCRect
Objekt austauschbar hier. Das ist schön, weilCRect
bietet member-Funktionen, die es einfacher machen, zu manipulieren Rechtecke.Beispielcode:
Beachten Sie, dass die
GetWindowRect
Funktion gibt die Bildschirm Koordinaten des Fensters. Dies ist in der Regel nicht, was Sie wollen, es sei denn, Sie versuchen, ändern Sie die Position der Fenster auf dem Bildschirm. Bildschirm-Koordinaten sind schwierig, mit zu arbeiten, weil Sie relativ zum gesamten virtuellen Bildschirm, das kann zu negativen Koordinaten in einer multi-monitor-Konfiguration. Auch, wenn Sie versuchen, und legen Sie die Größe des Fensters anhand der Bildschirm-Koordinaten, erhalten Sie die gesamte Größe des Fensters auf dem Bildschirm, einschließlich seiner nicht-client-Bereiche (wie die Titelleiste, die min/max/close-buttons, usw.).Dem, was Sie normalerweise wollen, stattdessen sind die client Koordinaten eines Fensters, abrufbar durch den Aufruf der
GetClientRect
- Funktion in identischer Weise. Dieses mal verwenden wir einenRECT
Struktur, einfach weil wir es können:Die Antwort ist, die Sie verwenden
GetWindowRect
.Wenn Sie Fragen warum es ist so gemacht, das ich denken kann zwei Antworten:
okay, ich dachte, meine Antwort glaube ich. Hier für alle, die interessiert zu wissen, ...
wobei 'dies' ist eine von CWnd* Objekt. Nochmals vielen Dank für die Geschichte und Erklärung. Es hilft um zu wissen, warum die Dinge so sind, wie Sie sind, so können Sie sicher sein, dass Sie nicht tun etwas falsch, hilft vor allem, wenn die Methodik ist anders als das, was gelernt wurde im modernen Fremdsprachenunterricht.
&
vorrc_total_window
.Rect &
auf welchem Fall Sie nicht.GetWindowRect
unter einemCRect&
. DieCRect
Klasse, allerdings implementiert ein operator LPRECT, das wird implizit aufgerufen, wenn die übergabe einesCRect
Objekt an eine Methode erwartet einLPRECT
argument.