Fenster und Items an Bildschirmauflösung anpassen?
-
Hallo zusammen,
ich habe folgende Frage. Unzwar habe ich eine von CFormView abgeleitete SDI Anwendung geschieben nun habe ich auf dem Base Dialog einige Items erstellt usw.
Wenn ich nun diesen Anwendung auf einem Rechner starte der eine Auflösung hat von sagen wir mal 1024x768 dann wird mein Fenster zwar Dargestellt aber ich bekomme Scrollbalken mit denen man dann über durch die Oberfläche Scrollen kann was aber nicht Sinn der Sache ist
.Wie kann ich es nun erreichen das die Anwendung immer mit den Richtigen Einstellungen für die Auflösung und damit für die Items startet. So das man nicht diese Scrollbalken bekommt?
Ich weiß das diese Frage des öfteren mal gestellt wird aber leider habe ich bis jetzt noch keine Antwort gefunden, die das Problem sauber löst. Könnte mir vielleicht jemand einen Ansatz zeigen, anhand von einem kleinem Code Snippet, wie man dieses Problem in den Griff bekommt?
Gruß
Wild
-
Was willst Du erreichen? Dass alles kleiner/größer gezoomed wird.
Was machst Du wenn einer 800x600 benutzt? Dann ist nichts mehr lesbar?
Was machst Du wenn kein Vollbild gewählt ist, alles so klein, dass garantiert nichts mehr lesbar ist?Welchen Sinn soll das machen?
Benutzerfreundlich halte ich das nicht, denn ich häte als Benutzer gerne die im System hinterlegte Dialoggröße und nicht irgendwas was der Programmierer meint was gut wäre
Es gibt keine vernünftige Lösung für so etwas, da der Dialoghandler das eigentlich nicht vorsieht.
Die Größe der DLUs (Dialogbase Units) wird anhand der hinterlegten Font-Größe errechnet.
Das einfachste wäre, Du errechnest die fiktive neue Größe für den Dialog Font, manipulierst das Template und erzeugst dann erst den Dialog.
-
Das Programm startet immer im Vollbild und kann auch nicht von der Größe her verändert werden die Funktionen sind alle abgeschaltet. Es dreht sich also nur darum das das Fenster genauso aussieht mit, sagen wir als kleinste Größe 800x600 und als Größte 1280x1024. Das wars dann auch schon mehr Größen kommen da nicht.
Und dafür solls keine Lösung geben ? Seltsam

-
Und was passiert bei meinem Monitor mit 1680x1050
Ich habe icht gesagt, dass es keine Lösung gibt.
Ich habe Dir auch gesagt wie man es machen kann...
-
Bin selber am rätseln...
Vollbild anzeigen, ohne Scrollen.
int iWidth= ::GetSystemMetrics(SM_CXSCREEN)
int iHeight = ::GetSystemMetrics(SM_CYSCREEN)
this->SetWindowPos(&CWnd::wndTop,0,0,iWidth,iHeigt,SW_SHOW);Aufpassen, nur die Grösse des view, nicht des Frame darum wird geändert.
Die Steuerelemente o.ä. auf dem Dialogfenster müssen an relative grössen von window angepasst werden, damit die Ansicht komplett ist.
Das ist unschön. Wahrscheinlich meinte Wildcard das.
-
Es gibt genug Bibliotheken welche das können.
Musst einfach mal bei Codeguru, Codeproject schauen.Ist aber, wie Martin geschrieben hat, nicht so einfach klicki/bunti.