Hallo ! Bei der Funktion kommt immer eine unbehandlete Ausnahem -> Programm stürtzt völlig ab, kommt bei " g_iNumAdapters=... " was ist da falsch ?
Ich lasse diese Funktion beim Aufufen eines Dialoges ausführen.
bool D3DEnum()
{
int g_iNumAdapters=0;
D3DADAPTER_IDENTIFIER9* g_pAdapters;
char acAdapterInfo[1024];
int iNumModes;
D3DDISPLAYMODE* pModes;
char acModes[16384];
g_iNumAdapters=g_pD3D->GetAdapterCount(); //hier Fehler !!
g_pAdapters=new D3DADAPTER_IDENTIFIER9[g_iNumAdapters];
for(int iAdapter=0;iAdapter<g_iNumAdapters;iAdapter++)
{
if(FAILED(g_pD3D->GetAdapterIdentifier(iAdapter,0,&g_pAdapters[iAdapter])))
{
MessageBox(NULL,"D3D Enum konnte nicht ausgeführt werden !",NULL,NULL);
g_pD3D->Release();
delete[] g_pAdapters;
return false;
}
sprintf(acAdapterInfo,"Adapter-ID: %d\nName: %s\nTreiber: %s\nTreiberversion: %d",iAdapter,
g_pAdapters[iAdapter].Description,g_pAdapters[iAdapter].Driver,g_pAdapters[iAdapter].DriverVersion);
SendMessage(hDlg,CB_ADDSTRING,(WPARAM)0,(LPARAM)acAdapterInfo);
//MessageBox(NULL,acAdapterInfo,NULL,NULL);
iNumModes=g_pD3D->GetAdapterModeCount(iAdapter,D3DFMT_R5G6B5);
if(iNumModes>0)
{
pModes=new D3DDISPLAYMODE[iNumModes];
strcpy(acModes,"");
for(int iMode=0;iMode<iNumModes;iMode++)
{
g_pD3D->EnumAdapterModes(iAdapter,D3DFMT_R5G6B5,iMode,&pModes[iMode]);
sprintf(acModes,"%s\nModus %d: %dx%d bei %d Hz (0
tandard)",acModes,iMode,pModes[iMode].Width,
pModes[iMode].Height,pModes[iMode].RefreshRate);
}
SendMessage(hDlg,CB_ADDSTRING,(WPARAM)0,(LPARAM)acModes);
//MessageBox(NULL,acModes,NULL,NULL);
delete[]pModes;
}
}
return true;
}