Veröffentlicht 6. November 200222 j Weis jemand ob es überhaupt so eine Methode oder Lösung gibt wie man mit VC++ so ein Dialog oder SDI erstellt das er sich automatisch zu Bildschirmauflösung anpaßt ?? Ich weis das man durch die int breite = GetSystemMetrics(SM_CXSCREEN); int hoehe = GetSystemMetrics(SM_CYSCREEN); die Bildschirmauflösung abfragen kann aber wie sage ich dem Anwendung das er auf 800*600 genau so groß sein soll wie bei 1280*1024 ???
6. November 200222 j Hast schonmal nach den Infos geschaut, die du mit GetDeviceCaps() bekommen kannst? Da sind dann auch Pixel pro Inch dabei....von daher kannst deine groessen dann auch berechnen. Goos
6. November 200222 j Autor irgend wie funk es nicht, also ich bekomme zwar die Parameter aber was weiter Hat da jemand schon Erfahrungen
6. November 200222 j Ich kenn das Problem. Es geht darum einen Dialog und seine Steuerelemente je nach Auflösung anzupassen. Hab mich echt totgesucht und in div. Foren nachgefragt. Ergebnis: no chance...man müsste alle Steuerelemente einzeln behandeln Aber ich lass mich gern eines Besseren belehren.
6. November 200222 j Autor Originally posted by gugelhupf Ich kenn das Problem. Es geht darum einen Dialog und seine Steuerelemente je nach Auflösung anzupassen. Hab mich echt totgesucht und in div. Foren nachgefragt. Ergebnis: no chance...man müsste alle Steuerelemente einzeln behandeln Aber ich lass mich gern eines Besseren belehren. Auch mein Verdacht -> sollte Microsoft nachdenken sollte Microsoft nachdenken über dieses Problem , oder ???
7. November 200222 j Hi, warum machst du`s nicht einfach andersrum und passt die Auflösung deinem Programm an? Gruß Guybrush
7. November 200222 j Originally posted by Guybrush Threepwood Hi, warum machst du`s nicht einfach andersrum und passt die Auflösung deinem Programm an? Gruß Guybrush naja das machen ja manche progs auch, dass sie beim start die auflösung ändern...aber ehrlich gesagt machen das die wenigsten... zumindest wäre ne abfrage des systems und der users nötig, ob der das überhaupt will !
7. November 200222 j zumindest wäre ne abfrage des systems und der users nötig, ob der das überhaupt will ! Warum? Wenn man das mit DirectX macht dann können 1. nur Auflösungen eingestellt werden die von der Hardware unterstützt werden und 2. kann man bei beenden den Ursprungszustand ganz einfach wieder zurücksetzen. Ich meine klar kann mann ne Abfrage reinbringen, aber es ist nicht unbedingt nötig. Gruß Guybrush
7. November 200222 j Autor Ne leider die Kunden für die ich es mache wollen es einfach nicht, aber es klingt sehr interessant und für ein kleines Beispiel oder par tipps werde ich dankbar
7. November 200222 j Einfach mal so aus dem Bauch heraus: #include <windows.h> #include <crtdbg.h> #include <ddraw.h> IDirectDraw* lpDD; IDirectDraw2* lpDD2; DDSURFACEDESC surface; main() { //DirectDraw Objekt erstellen if (DirectDrawCreate(NULL,&lpDD,NULL) != DD_OK) { Fehler("Direct Draw Objekt konnte nicht erstellt werden!"); return -1; } //Neures Interface laden if (lpDD->QueryInterface(IID_IDirectDraw2,(void**)&lpDD2) != DD_OK) { Fehler("Direct Draw 2 Objekt konnte nicht geladen werden!"); lpDD->Release(); } //Altes Interface wieder freigeben lpDD->Release(); //SURFACEDESC Struktur vorbereiten memset(&surface,0,sizeof(DDSURFACEDESC)); surface.dwSize = sizeof(DDSURFACEDESC); surface.dwFlags = DDSD_HEIGHT | DDSD_WIDTH; //Auflösung in der Struktur speichern hResult = lpDD2->GetDisplayMode(&surface); if (hResult != DD_OK) { Fehler("Auflösung konnte nicht ermittlet werden!"); return -1; } //Wenn die Auflösung nicht 1024*768 ist if ((surface.dwHeight != 768) || (surface.dwWidth != 1024)) { //Die Auflösung anpassen hResult = lpDD2->SetDisplayMode(1024,768,32,0,0); if (hResult == DDERR_INVALIDMODE) { _CrtDbgReport(_CRT_ERROR,0,2015,"dbtest","%i",hResult); Fehler("Auflösung konnte nicht verändert werden!"); return -1; } } //Das Hauptprogramm //Am Ende die Auflösung wieder zurückstellen if (lpDD2->RestoreDisplayMode() != DD_OK) { Fehler("Auflösung konnte nicht wiederhergestellt werden!"); } //Und lpDD2 wieder freigeben lpDD2->Release(); return 0; } [/PHP] Bei irgendwelchen Fragen, einfach fragen:D Gruß Guybrush
7. November 200222 j Ich frage mich nur warum es denn grosse softwarepakete auch nicht "handeln" ?! Bei Tobit, Office u.ä. erhät man auch "unschöne" dialoge die sich nicht anpassen.
7. November 200222 j Ich frage mich nur warum es denn grosse softwarepakete auch nicht "handeln" ?! War ja auch nur ein Lösungsvorschlag. Ist nicht der beste Weg, aber der schnellste. Gruß Guybrush
7. November 200222 j Originally posted by Guybrush Threepwood War ja auch nur ein Lösungsvorschlag. Ist nicht der beste Weg, aber der schnellste. Gruß Guybrush Es stellt sich halt die Frage, ob dieses Vorgehen sinnvoll ist. Man kann ja generell nicht davon ausgehen, dass eine best. Auflösung auf diesem Rechner auch läuft. Grafikkarte, Monitor etc. Es wäre schade, wenn eine Software nur deswegen nicht laufen sollte.
7. November 200222 j Das ist wohl war, kommt halt immer drauf an was das für ein Programm ist und für wehn es ist.
7. November 200222 j Originally posted by Klotzkopp Das geht in die Richtung: http://www.codeproject.com/dialog/resizabledialog.asp Richtig ! Hatte ich damals auch schon probiert, leider sehr, sehr mühselig. Auszug: "add an anchor for each control you... " Wär doch mal was hier ne eigene Klasse zu schreiben die sich auf eine Dialogklasse bezieht
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.