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

monomaniacs

Frischling

  • »monomaniacs« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Sierndorf

Beruf: Schüler

  • Private Nachricht senden

1

06.11.2005, 18:14

Seite 112 Warum kommt keine 2.te message box

Hi hätt mal ne frage...

Auf 112 das Beispiel funzt nicht ganz, die erste messagebox kommt korrekt, aber die nächste wo die ganzen infos drin sein sollen nicht..

Thanks schon jetzt..


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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <Windows.h> 
#include <stdio.h> 
#include <D3D9.h> 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd) 
{ 
    // Schnittstelle für Direct3D erzeugen 

    PDIRECT3D9 pD3D = Direct3DCreate9 ( D3D_SDK_VERSION ); 
    
    if (!pD3D) 
    { 
        // Fehler! 

        MessageBox    (    
                        NULL, "Fehler beim Erzeugen der Direct3D-Schnittstelle!\n" 
                        "Bitte installieren sie die neueste DirectX Version!", 
                        "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, "Adapterinformationen konnten nicht abgefragt werden!", 
                            "Fehler", MB_OK | MB_ICONEXCLAMATION 
                        ); 
                        
            // Aufräumen 

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

        char acAdapterInfo[1024]; 
        
        sprintf    ( 
                    acAdapterInfo, 
                    "Adapter-ID: %d\n" 
                    "Name: %s\n" 
                    "Treiber: %s\n" 
                    "nTreiberversion: %d", 
                    iAdapter, 
                    pAdapters[iAdapter].Description, 
                    pAdapters[iAdapter].Driver, 
                    pAdapters[iAdapter].DriverVersion 
                ); 
        MessageBox( NULL, acAdapterInfo, "Adapter gefunden", MB_OK | MB_ICONINFORMATION ); 
    } 

    // Die Variable iAdapter enthält die ID des Gerade aufgelisteten Adapters. 

    
    // Ermitteln, wie viele 16-Bit-Videomodi verfügbar sind 

    int iNumModes = pD3D->GetAdapterModeCount( iAdapter, D3DFMT_R5G6B5 ); 
    
    if ( iNumModes > 0 ) 
    { 
        // Speicherplatz reservieren und den String zurücksetzen 

        D3DDISPLAYMODE* pModes = new D3DDISPLAYMODE [iNumModes]; 
        char acModes[16384] = ""; 
        
        // Jeden Videomodus durchgehen 

        for ( int iMode = 0; iMode < iNumModes; iMode++ ) 
        { 
            // Informationen über diesen Modus abfragen 

            pD3D->EnumAdapterModes( iAdapter, D3DFMT_R5G6B5, iMode, &pModes [iMode] ); 
            
            // Nummer, Breite, Höhe und Bildwiederholfrequenz in den String schreiben 

            sprintf (    
                        acModes, "%s\nModus %d: %dx%d bei %d Hz (0: Standard)", 
                        acModes, 
                        iMode, 
                        pModes[iMode].Width, 
                        pModes[iMode].Height, 
                        pModes[iMode].RefreshRate 
                    ); 
        } 
        
        // Videomodi anzeigen 

        MessageBox    ( 
                        NULL, 
                        acModes, 
                        "Verfügbare 16-Bit-Videomodi", 
                        MB_OK | MB_ICONINFORMATION 
                    ); 
        // Speicher wieder freigeben 

        delete[] pModes; 
    }    

    // Aufräumen 

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

2

06.11.2005, 18:31

Ohne ein Problem gefunden zu haben, empfehle ich dir ganz einfach zu debuggen.

mfg Markus

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

06.11.2005, 18:37

Lass dir mal den Wert von iNumModes ausgeben. Oder füge die zeilen nach delete[] pModes ein:

C-/C++-Quelltext

1
else MessageBox(NULL, "War wohl nichts", NULL, NULL);
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

4

08.11.2005, 13:38

Moin. Ich hab bei dem ersten Beispiel auch nen Problem.
Bei mir kommt immer nur die MB in der steht das das Prog. keine Adapter finden konnte. Und dann bricht dett Programm halt ab (wies es bei nem Fehler ja auch sein sollte....) Woran liegt das nun? Unterstützt mene GK ken DirectX oder was kann das sein?

~°MetCiple°~

Paul_C.

Frischling

Beiträge: 81

Wohnort: Duisburg

  • Private Nachricht senden

5

10.11.2005, 22:06

Du musst da nach

C-/C++-Quelltext

1
if (!pZeiger)
abfragen. Keine Ahnung wie pZeiger da nun wirklich hieß. Ich meine pD3D oder so. ;)

monomaniacs

Frischling

  • »monomaniacs« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Sierndorf

Beruf: Schüler

  • Private Nachricht senden

6

24.11.2005, 22:06

iNumModes -> 0

das ist ja das was mich wundert...
hab keinen schimmer warum, macht eigentlich alles richtig, aber die Funktion findet einfach nichts...

Werbeanzeige