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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

07.03.2012, 21:50

Das Problem liegt wohl eher daran, dass du irgendwas falsch machst ;)
Du kannst in den Projekteigenschaften unter General das Character Set auf Not Set stellen. Das würde ich allerdings nur als temporäre Lösung betrachten.

12

07.03.2012, 22:02

Man... Das war auch nicht die Lösung... Aber in dem Buch Funktioniert es bei dem einfach...
Ich hatte noch ein Projekt, mit dem genaus selben Code, aber da ging es...
Hi

13

04.04.2012, 17:43

Sry für Doppelpost, aber ich habe noch keine Lösung für das Problem. Das mit den Strings ist gelöst, aber irgendwie kann der kein Fenster erstellen.
Das Problem ist warscheinlich in CreateMainWindow(). Ich habe sogar schon den Code von der CD, das zum Buch gehört, kopier und eingefügt.

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
#include <d3d9.h>
#include <d3dx9.h>
#include <windows.h>

HWND CreateMainWindow(HINSTANCE hInstance);

LRESULT CALLBACK MessageHandler(HWND hwnd,
                                UINT msg,
                                WPARAM wParam,
                                LPARAM lParam);

HWND hWnd = 0;

int WINAPI WinMain(HINSTANCE hInstance,     // Handle der Programminstanz
                HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                LPSTR lpCmdLine,        // Kommandozeile
                int nCmdShow)           // Art wie das Fenster angezeigt werden soll
{
    // Fenster erzeugen und Handle speichern
    hWnd = CreateMainWindow(hInstance);

    // Wenn der Rueckgabewert 0 ist, ist ein Fehler aufgetreten
    if(0 == hWnd)
    {
        MessageBox(0, "Fenster konnte nicht erzeugt werden", "Fehler", MB_OK);
        return -1;
    }

    // Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;

    // Diese Schleife laeuft bis die Nachricht WM_QUIT empfangen wird
    while(GetMessage(&msg, NULL, 0, 0))
    {
        // Nachricht an die Callbackfunktion senden
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass =
    {
        sizeof(WNDCLASSEX),                                 // Groesse angeben
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,    // Standardstile
        MessageHandler,                                     // Callback-Funktion
        0,                                                  // Zusaetzliche Angaben
        0,                                                  // nicht benoetigt
        hInstance,                                          // Anwendungsinstanz
        LoadIcon(NULL, IDI_WINLOGO),                        // Windows-Logo
        LoadCursor(NULL, IDC_ARROW),                        // Normaler Cursor
        (HBRUSH)GetStockObject(WHITE_BRUSH),                // Weisser Pinsel
        NULL,                                               // kein Menue
        "WindowClass",                                      // Der Name der Klasse
        LoadIcon(NULL, IDI_WINLOGO)                         // Windows Logo
    };

    // Klasse registrieren
    RegisterClassEx(&wndClass);

    return CreateWindowEx(NULL,                 // Keine erweiterten Stile nutzen
                        "WindowClass",          // Klassenname
                        "D3DDrawText",          // Fenstertitel
                        WS_OVERLAPPEDWINDOW |   // Fenster
                        WS_VISIBLE,             // Eigenschaften
                        50, 50, 800, 600,       // Anfangsposition und Groesse
                        NULL,                   // Handle des Elternfensters
                        NULL,                   // Handle des Menues
                        hInstance,              // Anwendungsinstanz
                        NULL);                  // wird nicht benoetigt
}

LRESULT CALLBACK MessageHandler(HWND hwnd,
                                UINT msg,
                                WPARAM wParam,
                                LPARAM lParam)
{
    switch(msg)
    {

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    break;
    }
    return DefWindowProc(hWnd, msg, wParam, lParam);
}
Hi

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

04.04.2012, 17:49

Und was genau ist das Problem?

15

04.04.2012, 17:57

Ich weiß nicht wo das Problem liegt, aber das Problem ist, dass das Fenster nicht erstellt werden kann.
Hi

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

04.04.2012, 18:03

Na dann debugg eben mal und check die Rückgabewerte der ganze Funktionen, um rauszufinden wo genau der Fehler auftritt!?

17

04.04.2012, 18:25

Beim Debuggen kommt auch nichts raus...

//EDIT
Hab in getLastError geschaut, und da kommt das raus: Fehler 1400: Ungültiges Fensterhandle
Hi

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MazzMan« (04.04.2012, 19:41)


Werbeanzeige