Festlegen von Standard-Größe in Pixel-dialog im MFC
Ich soll zum festlegen der Standard-Größe in Pixel-dialog, sagen, es ist 640 pixel Breite und 384 pixel Höhe. was ich meine, durch die default
ist, dass, wenn das erste mal die CXXXDlg::OnSize(UINT nType, int cx, int cy)
aufgerufen wird, wird der Wert von cx
640 und der Wert der cy
ist 384. Szene die Standard-Größe der dialog in dialog-Einheiten, und ich kann die MapDialogRect() zu konvertieren das Dialogfeld Einheiten der Pixel, Wie kann ich das umkehren? die MoveWindow()
und die SetWindowPos()
festlegen können eh die Größe der dialog aber nicht die Standard Größe. Ich habe auch versucht die GetDialogBaseUnits() wie diese:
DWORD dw = GetDialogBaseUnits();
WORD m_duXx4 = LOWORD(dw);
WORD m_duYx8 = HIWORD(dw);
int dialogUnitX = MulDiv(640, 4, m_duXx4);
int dialogUnitY = MulDiv(384, 8, m_duYx8);
es stellte sich heraus, dass die dialogUnitX
ist 320
und die dialogUnitY
ist 192
, aber wenn ich die dialog-Einheit zu 320 * 192
, was ich bekam, in CXXXDlg::OnSize(UINT nType, int cx, int cy)
ist nicht 640 * 384
aber 560 * 336
. Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem Fenster besteht aus einem Client-Bereich und ein nicht-Clientbereich.
Den client-Bereich ist der Teil eines Fensters, in dem die Anwendung zeigt die Ausgabe, wie text oder Grafiken.
Die Titelleiste, die Menüleiste, Fenster, Menüs, Schaltflächen zum minimieren und maximieren, sizing border und scroll-bars bezeichnet man zusammenfassend als das Fenster nicht-Clientbereich.
Den Fenster Rect bezeichnet das Gebiet umfasst das gesamte Fenster. Es enthält den client-Bereich sowie der nicht-Clientbereich. Sie können abgerufen werden durch aufrufen von
GetWindowRect
(oder den MFC-äquivalent). Es ist auch als die Eingabe-Funktionen wieMoveWindow
oderSetWindowPos
.Den Client Rect wird die Fläche der Fenster, die nicht besetzt von den nicht-Clientbereich. Es kann abgefragt werden, indem Berufung
GetClientRect
. Der client rect Abmessungen sind an dieWM_SIZE
message-handler.Wenn eine Anwendung erfordert eine spezifische Größe für seinen client-Bereich es kann die Berechnung der jeweiligen Fensters rect durch den Aufruf
AdjustWindowRect
oderAdjustWindowRectEx
.Des Fensters rect ist in der Regel ausgedrückt in Bildschirm-Koordinaten, während der client rect verwendet Client-Koordinaten. Beide Koordinatensysteme darstellen-Gerät Pixel. Der Ursprung liegt in der linken oberen Ecke des primären Anzeige für Bildschirm-Koordinaten und der linken oberen Ecke des client-Bereichs für den client-Koordinaten. Übersetzen zwischen den Koordinaten-Systemen in einer Anwendung verwendet
ClientToScreen
oderScreenToClient
.Dialog Vorlagen angeben Abmessungen und Positionen in Dialogfeld Vorlage Einheiten. Dialogfeld Vorlage Einheiten, die direkt mit einer Dialogfeld-schriftart. Für die Umwandlung von Dialogfeld Vorlage Einheiten-und device-Pixeln, die eine Anwendung fordert
MapDialogRect
. Es gibt keine API-Aufruf zu berechnen, und Umgekehrt. Eine Anwendung, um die Berechnungen durchzuführen manuell:Wenn eine Anwendung will, beschränken die Größe des Fensters dynamisch verarbeiten kann, die
WM_GETMINMAXINFO
Nachricht und füllen Sie eineMINMAXINFO
Struktur mit den gewünschten Abmessungen. Diese Nachricht wird an ein Fenster gesendet, wenn die Größe oder position des Fensters zu ändern.