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

07.03.2012, 17:28

Problem mit Code:Blocks und VC++

Hallo,
ich habe ein Problem mit diesen beiden Programmen.
VC++:

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
WNDCLASSEX wndClass = {
        sizeof(WNDCLASSEX),
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,
        MessageHandler,
        0,
        0,
        hInstance,
        LoadIcon(NULL, IDI_WINLOGO),
        LoadCursor(NULL, IDC_ARROW),
        (HBRUSH)GetStockObject(WHITE_BRUSH),
        NULL,
        "WindowClass",//hier soll der fehler sein
        LoadIcon(NULL, IDI_WINLOGO)
    };

    RegisterClassEx(&wndClass);
    
    return CreateWindowEx(
        NULL,
        "WindowClass",
        "Mein Fenster", 
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        0, 0,
        400, 300,
        NULL,
        NULL,
        hInstance,
        NULL); //hier auch

Zitat

1>c:\users\***\documents\visual studio 2008\projects\spielelernen\spielelernen\spielelernen\main.cpp(36) : error C2440: 'Initialisierung': 'const char [12]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\users\***\documents\visual studio 2008\projects\spielelernen\spielelernen\spielelernen\main.cpp(54) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [12]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

Code:Blocks:
Er findet d3d9.h aufeinmal nicht.

Könnt ihr mit bitte helfen? Keines der beiden Programme macht das, was ich will :(

MfG
MazzMan
Hi

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

07.03.2012, 17:52

Jetzt mal ehrlich: der Fehler steht doch direkt da. Du hast den Fehler und die Zeile, selbst wenn du dann immer noch nicht weißt was Sache ist, reichen die Infos doch locker aus mal zu googlen. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

07.03.2012, 18:09

Ok ich hab die Lösung: Ich hab einfach LPCTSTR("WindowClass") an Stelle von "WindowClass" benutzt

//EDIT
Aber jetzt hab ich noch ein Proble. Ich habe das mit dem LPCWSTR("Bla bla") auch bei einer MessageBox anwenden müssen, aber der Text ist in Chinesischen Buchstaben oder so 8|

Hi

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MazzMan« (07.03.2012, 18:35)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

07.03.2012, 19:08

Der Cast ist keine Lösung, du sagst damit nur dem Compiler: "Vertrau mir, ich weiß was ich tue", was aber offenbar nicht der Fall ist ;)
Was du suchst ist das Makro TEXT().

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

5

07.03.2012, 19:09

http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx
Andere Möglichkeit:

Quellcode

1
L"Text"


edit: dot war schneller. :P
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

6

07.03.2012, 19:23

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
HWND CreateMainWindow(HINSTANCE hInstance)
{
    //Fensterklasse erstellen
    WNDCLASSEX wndClass = {
        sizeof(WNDCLASSEX),
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,
        MessageHandler,
        0,
        0,
        hInstance,
        LoadIcon(NULL, IDI_WINLOGO),
        LoadCursor(NULL, IDC_ARROW),
        (HBRUSH)GetStockObject(WHITE_BRUSH),
        NULL,
        TEXT("WindowClass"),
        LoadIcon(NULL, IDI_WINLOGO)
    };

    //Fensterklasser registrieren, damit sie von CreateWindowEx() genutzt werden kann
    RegisterClassEx(&wndClass);
    
    //der rückgabewert der funktion ist auch der rückgabewert der funktion
    return CreateWindowEx(
        NULL,
        TEXT("WindowClass"),
        TEXT( "Mein Fenster"), 
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        0, 0,
        400, 300,
        NULL,
        NULL,
        hInstance,
        NULL);

}


Und wieso funktioniert das nicht?
Hi

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

07.03.2012, 19:26

"funktioniert nicht" bedeutet genau was?

8

07.03.2012, 19:29

also diese funktion gibt einen wert vom typ HWND zurück. in einer if-abfrage überprüfe ich, ob dieser wert 0 ist, wenn ja, wir eine msgBox angezeigt. der wert ist null
Hi

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

07.03.2012, 19:36

Das kann alle möglichen Gründe haben. Funktioniert RegisterClassEx()? Was sagt GetLastError()?

10

07.03.2012, 21:39

Es gibt doch eine Möglichkeit in den Projekteinstellungen etwas zu machen, dass ich nicht TEXT() benutzen muss, sondern den String einfach angeben kann. Weiß einer, was ich wo einstellen muss? Ich denke, dass das Problem am TEXT() liegt.
Hi

Werbeanzeige