P
Hi,
Ich wollte mir alle Bildschirmmodi meiner Graka ausgeben lassen, und zwar so:
#include <iostream>
#include <windows.h>
#include <DXErr9.h>
#include <d3d9.h>
LRESULT CALLBACK wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
void move(float delta);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmd, int showCmd)
{
MSG msg;
PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
if(!pD3D)
{
MessageBox(NULL, "Fehler beim Erstellen von D3D", "", MB_OK);
return 0;
}
int numAdapters = pD3D->GetAdapterCount();
D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[numAdapters];
for( int i = 0; i < numAdapters; i++)
{
if(FAILED(pD3D->GetAdapterIdentifier(i, 0, &pAdapters[i])))
{
MessageBox(NULL, "FUCK!", "", MB_OK);
pD3D->Release();
delete[] pAdapters;
return 0;
}
char info[1024];
sprintf(info, "Adapter-ID: %d\n"
"Name: %s\n"
"Treiber: %s\n"
"Treiberversion: %d",
i, pAdapters[i].Description,
pAdapters[i].Driver, pAdapters[i].DriverVersion);
MessageBox(NULL, info, "", MB_OK);
int numModes = pD3D->GetAdapterModeCount(i, D3DFMT_X8R8G8B8);
if( numModes > 0)
{
D3DDISPLAYMODE* pModes = new D3DDISPLAYMODE[numModes];
char acModes[16384];
for( int x = 0; x < numModes; x++)
{
pD3D->EnumAdapterModes(i, D3DFMT_X8R8G8B8, x, &pModes[x]);
sprintf(acModes, "%s\n Modus %d: %dx%d bei %d Hz",
acModes,
x,
pModes[x].Width,
pModes[x].Height,
pModes[x].RefreshRate);
}
MessageBox(NULL, acModes, "", MB_OK);
delete[] pModes;
}
else
MessageBox(NULL, "Zu Wenig!", "", MB_OK);
}
return 0;
}
LRESULT CALLBACK wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case(WM_DESTROY):
{
PostQuitMessage(0);
return 0;
}break;
case(WM_CLOSE):
{
PostQuitMessage(0);
return 0;
}break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
void move(float delta)
{
return;
}
[Win Vista, DxSDK9 August 07]
ist NULL(soweit ich das sagen kann). Ich habe den Code schon mehrfach überprüft und keine Fehler gefunden, er steht genau so im Buch
Hoffe, es findet jemand den Fehler.
MfG