Problem bei Displaymode-Auflistung



  • 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]

    Hoffe, es findet jemand den Fehler.

    MfG


Anmelden zum Antworten