Adapterinformationen auslesen



  • Hi Leute,
    weis nicht ob ich hier richtig bin aber da meine Frage mit DirectX zu tun hat versuch ichs mal.
    Ih möchte also die Infos über meine GraKatre auslesen und mittels MessageBox ausgeben. Ich schreibe dazu mit swprintf die INfos in ein wchar_t Array und gebe dieses Array mit der MessageBox aus. Es klappt alles wunderbar, nur das die eigentlichen Infos die ich will nur als kleine Kästchen dargestellt werden. Das hängt wohl irgendwie mit wchar_t und char zusammen.
    Hier mein Code:

    void AdapterInformation()
    {
    	for(int i = 0; i < g_pD3D->GetAdapterCount(); i++)
    	{
    		D3DADAPTER_IDENTIFIER9 strAdapterIdentifier;
    		wchar_t szMsg[512];
    
    		if(FAILED(g_pD3D->GetAdapterIdentifier(i, 0, &strAdapterIdentifier)))
    		{
    			swprintf(szMsg, L"Fehler beim ABfragen der Adapterinfos", i);
    			D3DERROR((LPCWSTR)szMsg);
    			break;
    		}
    //
    		swprintf(szMsg, L"Informationen für Adapter %d:\nTreiber: %s;\nGerätename: %s;\nBeschreibung: %s.",
    				i, 
    			    strAdapterIdentifier.Driver, 
    				strAdapterIdentifier.DeviceName, 
    				strAdapterIdentifier.Description); 
    
    		MessageBox(NULL, (LPCTSTR)szMsg, L"Adapterinformationen", MB_OK | MB_ICONINFORMATION); 
    	}
    }
    

    Ich had in der DX documentation nachgeschaut, und da sind die Infos die ich brauche als char Arrays definiert.
    was muss ich tun damit alles richtig dargestellt wird?

    Ich benutze VC++ 2005 Express und das DirectX SDK(June 2006).

    Danke schonmal im voraus.



  • Es könnte evtl. mit UNICODE zusammenhängen ...



  • Ok, danke erstmal für die schnelle antwort aber was sagt mir das?
    Hab ja nach längerer Pause wieder angfangen mit C++ und hab davor nie probleme mit sowas gehabt. Was hat sich denn geändert? Hab mal irgndwo gelesen das die Programme nicht mehr ANSI sondern UNICODE sind. Was muss ich denn dabei beachten?



  • TomasRiker schrieb:

    Es könnte evtl. mit UNICODE zusammenhängen ...

    lol

    @Scripta: auf meinem System hat ein char 8 Bit und ein wchar_t 16 Bit
    wenn man 8 Bit hat kann man 256 Zeichen darstellen (die ein Designer entwerfen muss) mit 16 Bit kann man 65536 unterschiedliche Informationen darstellen (da hat der Designer viel arbeit - da er faul ist designt er aber nur die wichtigsten Zeichen des Unicodes - der Rest wird als "komisches Quadrat" ausgegeben"
    vielleicht sind deine Codes aber auch zufällig nicht druckbare Zeichen, diese werden auch als komisches quadrat ausgegeben

    mach einfach ein #undefine UNICODE in deinen Code und fertig
    oder wandle char nach wchar_t um



  • Danke VertexWahn, bin schier durchgedreht und mit einer Zeile war alles wieder in Ordnung. Hat das eigentlich jetzt negative Auswirkungen, oder später vielleicht, wenn ich kein Unicode benutze?



  • Scripta schrieb:

    Hat das eigentlich jetzt negative Auswirkungen

    Japp, TGGC kommt und lacht dich aus. f'`8k

    Gruß, TGGC (\-/ returns)



  • 🕶👍


Anmelden zum Antworten