Welche auflösung wird ermittelt...
-
Hab folgenden code doch der müsste mehrere Auflösungen ausgeben doch bei mir wird nur eine angezeigt
#include <windows.h> #include <iostream> using namespace std; void Resolution() { int lfd=0; DEVMODE dm; int Farbtiefe = 32; int Breite = 800; int Hoehe = 600; while(EnumDisplaySettings(NULL,lfd,&dm)) { if(dm.dmBitsPerPel==DWORD(Farbtiefe)&&dm.dmPelsWidth==DWORD(Breite)&&dm.dmPelsHeight==DWORD(Hoehe)) { cout << Breite << "x" << Hoehe << " wird unterstuetzt" << endl;break; } else { lfd++; } } } int main() { Resolution(); return 0; }Könnt ihr mir bitte helfen.
-
Guck dir doch mal deinen Code genau an:
... << endl;break;
Edit: Ausserdem artet dein code ohne das break in einer Endlosschleife aus. du solltest aus
else { lfd++; }einfach nur
++lfd;machen
Aber dann wird natürlich sicherlich auch nur ein Modus angezeigt. Weil du das mit dem if() schon einschränkst.

BR
Vinzenz
-
Stimmmt hab die beiden sachen geändert aber es wird 2mal die gleiche auflösung ausgegeben. Wie sollte ich diesen code ändern`?
-
kann mir niemand bei dem problem helfen?? Es sollen alle unterstützen auflösungen ausgeben wie z.b:
800x600
1024x768
1400x1050
1600x1200
-
Und Farbtiefe und Bildwiederholfrequenz willst du ignorieren?
Hast du überhaupt jemals die Doku angeschaut?
Before calling EnumDisplaySettings, set the dmSize member to sizeof(DEVMODE), and set the dmDriverExtra member to indicate the size, in bytes, of the additional space available to receive private driver data.
-
#include <string> #include <vector> #include <iostream> #include <windows.h> using namespace std; int main( ) { int num_displays; int result = 1; DISPLAY_DEVICE dd; dd.cb = sizeof( DISPLAY_DEVICE ); vector< string > display_names; for( num_displays = 0; result; ++num_displays ) { if( ( result = EnumDisplayDevices( 0, num_displays, &dd, 0 ) ) ) { display_names.push_back( dd.DeviceName ); } } if( !num_displays ) { cout << "EnumDisplayDevices failed!" << endl; return EXIT_FAILURE; } DEVMODE dm; dm.dmSize = sizeof( DEVMODE ); result = 1; for( int i = 0; i <= num_displays; ++i ) { for( int cur_mode = 0; result; ++cur_mode ) { if( ( result = EnumDisplaySettings( display_names[ i ].c_str( ), cur_mode, &dm ) ) ) { cout << display_names[ i ] << ", Mode "; cout.fill( ' ' ); cout.width( 2 ); cout << cur_mode << ": "; cout.fill( ' ' ); cout.width( 4 ); cout << dm.dmPelsWidth << " x "; cout.fill( ' ' ); cout.width( 4 ); cout << dm.dmPelsHeight << " x "; cout.fill( ' ' ); cout.width( 2 ); cout << dm.dmBitsPerPel << ", "; cout.fill( ' ' ); cout.width( 3 ); cout << dm.dmDisplayFrequency << "Hz" << endl; } } } }Greetz, Swordfish
-
#include <windows.h> #include <iostream> #include <set> void Resolution() { typedef std::pair<DWORD, DWORD> Resolution; typedef std::set<Resolution> ResolutionSet; ResolutionSet resolutions; DWORD modeNumber = 0; DEVMODE dm; dm.dmSize = sizeof(dm); dm.dmDriverExtra = 0; while(EnumDisplaySettings(NULL, modeNumber, &dm) != 0) { Resolution resolution(dm.dmPelsWidth, dm.dmPelsHeight); resolutions.insert(resolution); ++modeNumber; } for(ResolutionSet::const_iterator iter = resolutions.begin(); iter != resolutions.end(); ++iter) { std::cout << iter->first << "x" << iter->second << std::endl; } } int main() { Resolution(); }
-
vielen dank

wie kann ich alle auflösungen ab 800x600 mit einer Farbtiefe von 16/32 Bit ausgeben?
-
kernel64 schrieb:
vielen dank

wie kann ich alle auflösungen ab 800x600 mit einer Farbtiefe von 16/32 Bit ausgeben?mit if