1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#include <Windows.h>
#include <stdio.h>
#include <D3D9.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd)
{
// Schnittstelle für Direct3D erzeugen
PDIRECT3D9 pD3D = Direct3DCreate9 ( D3D_SDK_VERSION );
if (!pD3D)
{
// Fehler!
MessageBox (
NULL, "Fehler beim Erzeugen der Direct3D-Schnittstelle!\n"
"Bitte installieren sie die neueste DirectX Version!",
"Fehler", MB_OK | MB_ICONEXCLAMATION
);
return 1;
}
// Anzahl der Adapter ermitteln
int iNumAdapters = pD3D->GetAdapterCount();
D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9 [iNumAdapters];
for ( int iAdapter = 0; iAdapter < iNumAdapters; iAdapter++ )
{
if ( FAILED( pD3D->GetAdapterIdentifier( iAdapter, 0, &pAdapters[iAdapter] ) ) )
{
// Fehler!
MessageBox (
NULL, "Adapterinformationen konnten nicht abgefragt werden!",
"Fehler", MB_OK | MB_ICONEXCLAMATION
);
// Aufräumen
pD3D->Release();
delete[] pAdapters;
return 1;
}
// Adapterinformation anzeigen
char acAdapterInfo[1024];
sprintf (
acAdapterInfo,
"Adapter-ID: %d\n"
"Name: %s\n"
"Treiber: %s\n"
"nTreiberversion: %d",
iAdapter,
pAdapters[iAdapter].Description,
pAdapters[iAdapter].Driver,
pAdapters[iAdapter].DriverVersion
);
MessageBox( NULL, acAdapterInfo, "Adapter gefunden", MB_OK | MB_ICONINFORMATION );
}
// Die Variable iAdapter enthält die ID des Gerade aufgelisteten Adapters.
// Ermitteln, wie viele 16-Bit-Videomodi verfügbar sind
int iNumModes = pD3D->GetAdapterModeCount( iAdapter, D3DFMT_R5G6B5 );
if ( iNumModes > 0 )
{
// Speicherplatz reservieren und den String zurücksetzen
D3DDISPLAYMODE* pModes = new D3DDISPLAYMODE [iNumModes];
char acModes[16384] = "";
// Jeden Videomodus durchgehen
for ( int iMode = 0; iMode < iNumModes; iMode++ )
{
// Informationen über diesen Modus abfragen
pD3D->EnumAdapterModes( iAdapter, D3DFMT_R5G6B5, iMode, &pModes [iMode] );
// Nummer, Breite, Höhe und Bildwiederholfrequenz in den String schreiben
sprintf (
acModes, "%s\nModus %d: %dx%d bei %d Hz (0: Standard)",
acModes,
iMode,
pModes[iMode].Width,
pModes[iMode].Height,
pModes[iMode].RefreshRate
);
}
// Videomodi anzeigen
MessageBox (
NULL,
acModes,
"Verfügbare 16-Bit-Videomodi",
MB_OK | MB_ICONINFORMATION
);
// Speicher wieder freigeben
delete[] pModes;
}
// Aufräumen
pD3D->Release();
delete[] pAdapters;
return 0;
}
|