bigpoint Geschrieben 6. November 2002 Geschrieben 6. November 2002 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 ??? Zitieren
Goos Geschrieben 6. November 2002 Geschrieben 6. November 2002 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 Zitieren
bigpoint Geschrieben 6. November 2002 Autor Geschrieben 6. November 2002 irgend wie funk es nicht, also ich bekomme zwar die Parameter aber was weiter Hat da jemand schon Erfahrungen Zitieren
gugelhupf Geschrieben 6. November 2002 Geschrieben 6. November 2002 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. Zitieren
bigpoint Geschrieben 6. November 2002 Autor Geschrieben 6. November 2002 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 ??? Zitieren
Guybrush Threepwood Geschrieben 7. November 2002 Geschrieben 7. November 2002 Hi, warum machst du`s nicht einfach andersrum und passt die Auflösung deinem Programm an? Gruß Guybrush Zitieren
gugelhupf Geschrieben 7. November 2002 Geschrieben 7. November 2002 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 ! Zitieren
Guybrush Threepwood Geschrieben 7. November 2002 Geschrieben 7. November 2002 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 Zitieren
bigpoint Geschrieben 7. November 2002 Autor Geschrieben 7. November 2002 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 Zitieren
Guybrush Threepwood Geschrieben 7. November 2002 Geschrieben 7. November 2002 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 Zitieren
gugelhupf Geschrieben 7. November 2002 Geschrieben 7. November 2002 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. Zitieren
Guybrush Threepwood Geschrieben 7. November 2002 Geschrieben 7. November 2002 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 Zitieren
gugelhupf Geschrieben 7. November 2002 Geschrieben 7. November 2002 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. Zitieren
Klotzkopp Geschrieben 7. November 2002 Geschrieben 7. November 2002 Das geht in die Richtung: http://www.codeproject.com/dialog/resizabledialog.asp Zitieren
Guybrush Threepwood Geschrieben 7. November 2002 Geschrieben 7. November 2002 Das ist wohl war, kommt halt immer drauf an was das für ein Programm ist und für wehn es ist. Zitieren
gugelhupf Geschrieben 7. November 2002 Geschrieben 7. November 2002 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 Zitieren
bigpoint Geschrieben 7. November 2002 Autor Geschrieben 7. November 2002 man kann auch so http://www.akinstaller.de/ Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.