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

KOR

Frischling

  • »KOR« ist der Autor dieses Themas
  • Private Nachricht senden

1

30.03.2006, 23:19

Message box Text sind nur Quadrahte

Also mein problem nachdem ich die das erste beispielprogramm aus Davids buch zum laufen gebracht habe, naja laufen ist übertrieben. Anstatt Text kriege ich in der Messagebox nur rechtecke zwei > Zeichen und ein promille Zeichen wollte eigentlich nen screenshot posten aber ich habe noch nicht rausgefunden wie das geht. Im debugger sind die Strings eigentlich soweit ich das sehe in Ordnung deshalb glaube ich das es an der Umwandlung von char zu LPCWSTR liegt

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
#include<Windows.h>
#include<StdIO.h>
#include<D3D9.h>

#pragma comment (lib, "D3D9.lib")
//#pragma comment (lib, "DXErr9.lib")


int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    PDIRECT3D9 pD3D =Direct3DCreate9(D3D_SDK_VERSION);
    if(!pD3D)
    {
        MessageBox(NULL,(LPCWSTR)"Fehler beim Erzeugen der Direct3D- Schnittstelle!",(LPCWSTR)"Fehler",MB_OK|MB_ICONEXCLAMATION);
        return 1;
    }
    //Anzahl der Adapter ermitteln

    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])))
        {
            //Fehler!

            MessageBox(NULL,(LPCWSTR)"Adapterinformationen konnten nicht abgefragt werden!",(LPCWSTR)"Fehler",MB_OK|MB_ICONEXCLAMATION);
            pD3D->Release();
            delete[] pAdapters;
            return 1;
        }
        //Adapterinformationen anzeigen

        char acAdapterInfo[1024];
        sprintf(acAdapterInfo, "Adapter-ID: %d\n"
            "Name: %s\n"
            "Treiber: s\n"
            "Treberversion d",
            iAdapter,
            pAdapters[iAdapter].Description,
            pAdapters[iAdapter].Driver,
            pAdapters[iAdapter].DriverVersion);
        MessageBox(NULL,(LPCWSTR)acAdapterInfo, (LPCWSTR)"Adapter gefunden",MB_OK | MB_ICONINFORMATION);
    }
    pD3D->Release();
    delete[] pAdapters;
    return 0;
}

Das gibt der Compiler nach ende des programms aus
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\user32.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\d3d9.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\d3d8thk.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\version.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\winmm.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\msctf.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\oleaut32.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\ole32.dll', No symbols loaded.
'First DX Program.exe': Loaded 'C:\WINDOWS\system32\CTAGENT.DLL', No symbols loaded.
Diplomatie ist die Kunst guter Hund zu sagen, während man gleichzeitig nach dem nächst größeren Stein ausschau hält.

Anonymous

unregistriert

2

30.03.2006, 23:33

Du versuchst ANSI-Zeichensatz in einen Unicodezeichensatz zu casten aber ihn nicht zu konvertieren!!!

KOR

Frischling

  • »KOR« ist der Autor dieses Themas
  • Private Nachricht senden

3

30.03.2006, 23:38

Die Frage ist jetzt nur noch wie konvertiere ich das ganze oder wie schreibe ich gleich in LPCWSTR im buch brauchte man das nicht umwandeln aber da ich nen compilerfehler bekommen habe hab ich (LPCWSTR) benutzt
Diplomatie ist die Kunst guter Hund zu sagen, während man gleichzeitig nach dem nächst größeren Stein ausschau hält.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

31.03.2006, 08:09

Finde den unterschied und wende es auf alle anderen an ;) :

MessageBoxW(NULL,L"Adapterinformationen konnten nicht abgefragt werden!",L"Fehler",MB_OK|MB_ICONEXCLAMATION);
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

KOR

Frischling

  • »KOR« ist der Autor dieses Themas
  • Private Nachricht senden

5

31.03.2006, 17:19

OK hab jetzt rausgefunden wie es geht für den nächsten der es wissen will

C-/C++-Quelltext

1
2
3
4
5
        size_t origsize = strlen(acAdapterInfo) + 1;
        const size_t newsize = 1024;
        size_t convertedChars = 0;
        wchar_t wAdapterInfo[newsize];
        mbstowcs_s(&convertedChars, wAdapterInfo, origsize, acAdapterInfo, _TRUNCATE);

ach und es fehlen in dem aufruf von sprintf zwei % einmal nach treiber :
und in der Zeile danach
Diplomatie ist die Kunst guter Hund zu sagen, während man gleichzeitig nach dem nächst größeren Stein ausschau hält.

Anonymous

unregistriert

6

31.03.2006, 18:12

ich werd nicht mehr, diese lösung, argh.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

31.03.2006, 19:07

Da nehme ich doch lieber _bstr_t
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Anonymous

unregistriert

8

31.03.2006, 19:21

Nox
ich meine diese Lösung ist unsinn, er kann doch direkt nen unicodestring reinstopfen.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

31.03.2006, 20:14

stümmt :wirbel:
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige