Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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.

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

Aber ich lass mich gern eines Besseren belehren.

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

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 !

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

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

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.

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.