Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.03.2010, 19:29

Ist meine Grafikkarte auf Chinesisch?

Hi Leute,

Ich da ein kleines Problem mit dem ersten Beispielprogramm im Buch 3D-Spieleprogrammierung. Es soll die Adapterinformationen anzeigen. Nur leider ist die Ausgabe auf Chinesisch!
Hier mal das Listing:

C-/C++-Quelltext

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
#include <windows.h>
#include <TriBase.h>
#include <D3D9.h>
#include <stdio.h>

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if(!pD3D)
    {
        MessageBox(NULL, L"Direct3D 9 konnte nicht initialisiert werden!\nInstallieren Sie bitte die neuste DirectX-Version.",
                    L"Fehler",MB_OK | MB_ICONEXCLAMATION);
        return 1;
    }

    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])))
        {
            MessageBox(NULL, L"Adapterinformationen konnten nicht abgefragt werden!",
                        L"Fehler", MB_OK | MB_ICONEXCLAMATION);

            pD3D->Release();
            delete[] pAdapters;
            return 1;
        }

        char acAdapterInfo[1024];
        sprintf(acAdapterInfo, "Adapter-ID: %d\n",
            "Name: %s\n"
            "Treiber: %s\n"
            "Treiberversion: %d",
            iAdapter,
            pAdapters[iAdapter].Description,
            pAdapters[iAdapter].Driver,
            pAdapters[iAdapter].DriverVersion);

        MessageBox(NULL, (LPCWSTR)acAdapterInfo, L"Adapter gefunden",
            MB_OK | MB_ICONINFORMATION);
    }

    pD3D->Release();
    delete[] pAdapters;

    return 0;
}


Dies erzeugt nun durch den Aufruf der letzten MessageBox-Funktion eine Chinesische Ausgabe. Wenn ich nun anstatt

C-/C++-Quelltext

1
(LPCWSTR)acAdapterInfo
nur

C-/C++-Quelltext

1
L"Hallo"
eingebe, dann steht da auch "hallo". Wie kann das sein?

Hoffe auf schnelle Antwort,

3D-Anfaenger

2

17.03.2010, 19:34

Benutze besser den MultiByte Zeichensatz.
Metal ist keine Musik sondern eine Religion.

3

17.03.2010, 19:35

hast du bei den Projekteeinstellungen/Allgemeines bei Schriftart Unbestimmt angegeben.

Hatte auch schon heiße Probleme mit LPCWSTR ;)

4

17.03.2010, 19:42

Hey,

Vielen Dank für die schnelle Antwort!
Und in dieser Rekordzeit(5min)!
Dann mach ich mich mal weiter an das Buch *schonhalbamlesen*

Tschau!

Werbeanzeige