Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 ???

Geschrieben

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

Geschrieben

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 :rolleyes:

Aber ich lass mich gern eines Besseren belehren.

Geschrieben
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 :rolleyes:

Aber ich lass mich gern eines Besseren belehren.

Auch mein Verdacht -> sollte Microsoft nachdenken sollte Microsoft nachdenken über dieses Problem , oder ???

Geschrieben
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 !

Geschrieben
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

Geschrieben

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

Geschrieben
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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...