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

flux

Treue Seele

  • Private Nachricht senden

31

07.08.2006, 21:14

Also du hast doch schonmal das hier gehabt:

C-/C++-Quelltext

1
LPCWSTR szClassName = L"Erstes Fenster";

Und jetzt wird wieder ein LPCWSTR verlangt von CreateWindowEx().

Dann wirst du das wohl genauso mach müssen oder?

Das hab ich übrigens vorhin schon geschrieben. Vllt. solltest du auch mal versuchen nicht ganz so Faul zu sein und dir alles in den Popo schieben lassen sonder wirklich mal die Suchfunktionen, die DarkRaider gepostet hat zu nutzen. Das hilft einem echt weiter.

32

07.08.2006, 21:17

Zitat

Und jetzt wird wieder ein LPCWSTR verlangt von CreateWindowEx()
Hmm.. ist indirekt FALSCH! Wenn UNICODE nicht definiert ist, wird ein LPCSTR verlangt. D.h. würde man das ganze, wenn man nicht abhängig von UNICODE oder nicht sein will, mit LPCTSTR machen... und vor einer Zeichenfolge gehört dann auch nicht L sondern ein _T( davor und ein ) danach ;).
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

33

07.08.2006, 21:22

Also... wenn es Faul ist das ich seit 2 Tagen hier sitze und dieses blöde Problem lösen will dann weiß ich nicht wie ihr das macht...

Ich habe das selbe Probiert... mit dem Erfolg das ich besagte Linker-Fehlermeldungen bekommen hab...

also bevor du Anschuldigungen über Faulheit loslässt, solltest du mal über 2 Dinge nachdenken :

1) Wenn ich dieses Buch lese um das es hier in diesem Teil des Forums geht bin ich sicher kein Profi sondern fange mit der Materie erst an
2) Vielleicht mal vorher nachfragen ob ich nicht vielleicht genau das schon getan hab....

und wenn ich dann sage, ich hab keinen Bock mich mit dem Problem rumzuärgern und lass lieber euch die Arbeit machen, dann darfst du sehr gerne und mit gutem Recht mir die Faulheit nachsagen...

Und um mal konkret auf mein Versuch einzugehen... ich habe eine zweite Variable angelegt :

LPCWSTR szWindowTitel = L"Erstes Fenster";

und dann unten anstelle des Strings diese Variable eingesetzt:

hWnd = CreateWindowExW (NULL,
szClassName,
szWindowTitel ,
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100,
300, 250,
NULL,
NULL,
hInst,
NULL);

... und danach die selben Fehlermeldungen vom Compiler bzw. Linker bekommen wie eben gerade erwähnt... deswegen dachte ich, ich habe was falsch verstanden und deswegen frage ich ständig nach...

flux

Treue Seele

  • Private Nachricht senden

34

07.08.2006, 21:22

@Devil: Jo...hmm...ich hatte mich jetzt auf koschkas Code und auf das LPCWSTR von DarkRaider/VeilOfOblivion bezogen.
Mit TCHAR hab ich mich noch nicht wirklich befasst und kann da also nichts zu sagen.

und
@VeilOfOblivion: HAt mich nur aufgeregt, weil ich nicht weiss wo dein Problem ist. Die Lösung von deinem Problem wurde doch schon gepostet und koschka hat einen voll Funktionierenden Code gepostet. Ach egal... ob du faul bist kann ich nicht beurteilen, da haste Recht. Sorry

35

08.08.2006, 06:47

Kein Problem flux. Langsam glaube ich das da mit dem Compiler was nicht stimmt. Vielleicht sollte ich den mal deinstallieren, die PSDK runterwerfen und beides nochmal neu installieren. Weil so blöd bin ich normalerweise nicht das ich das überhaupt garnicht hinbekomme... außerdem habe ich jetzt gemerkt das die Vorgabe wenn ich eine Win32-Application erzeugen lasse (also das Grundgerüst) die gleiche Fehlermeldung bekomme :-)

36

08.08.2006, 07:59

So... hab den Visual C++ Express Edition + Platform SDK auf einem anderen PC installiert, mein von euch verbessertes und bei mir nicht laufendes Listing reinkopiert, gestartet und siehe da... es läuft... liegt wohl an meiner Installation... werd das heute Abend mal alles runterwerfen und neu installieren... und wegen sowas zweifelt man schon an seiner Auffassungsgabe.... *grummel*

Trotzdem vielen Dank an alle und sorry für die ewige Fragerei...

P.S. und für meine Faulheit *fg zu flux* ;-)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

37

09.08.2006, 12:55

Das Platform SDK war nicht richtig installiert. Deswegen kames auch die unaufgelösten Symble.

38

11.08.2006, 08:51

Genau. Hab die neu installiert und schon lief alles... und da soll man als C++-Anfänger erstmal drauf kommen :-)

Mr. Schmidt

Frischling

Beiträge: 24

Wohnort: Nürnberg

  • Private Nachricht senden

39

23.09.2006, 12:50

CreateWindow

Hallo alle zusammen,

ich benutze auch Visual C++ Express mit installiertem Platform SDK und hab ein ähnliches Problem. Mein Problem ist, dass CreateWindow nicht den zweiten Parameter, also den Namen, annimmt.
Hier ist die betreffende Stelle:

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
    hText = CreateWindow ("STATIC",
                            TEXT("Beispieltext"),
                            WS_VISIBLE | WS_CHILD,
                            0, 100,
                            300, 20,
                            hWnd,
                            (HMENU)ID_BEISPIELTEXT,
                            hInst, 
                            NULL);

    hButton = CreateWindow ("BUTTON",
                            TEXT("Beispieltext"),
                            BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD,
                            90, 150,
                            95, 40,
                            hWnd,
                            (HMENU)ID_BEISPIELBUTTON,
                            hInst, 
                            NULL);

    hEdit = CreateWindow ("EDIT",
                            TEXT("Bitte Text eingeben!"),
                            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_CENTER,
                            20, 10,
                            250, 20,
                            hWnd,
                            (HMENU)ID_BEISPIELEDIT,
                            hInst,
                            NULL);


Ich wollte nämlich den Code im Buch erweitern, so wie der Ratschlag darin lautet. Wenn ich den Code mit der mitgelieferten Autoren-Edition kompiliere gibt es überhaupt kein Problem. In der Express-Edition bringt der Kompiler jedoch für jedes CreateWindow folgende Fehlermedlung:

Zitat


g:\visual c++ express\projekte\listing 10_1\listing 10_1\listing 10_1.cpp(83) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [5]' in 'LPCWSTR' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

Das eigentliche Listing 10_1 hab ich mit eurem Tipp TCHAR und TEXT() zu verwenden zum laufen bekommen und ich dachte das würde bei CreateWindow auch funktionieren. Ich hab auch schon verschiedene Tipps von hier durchprobiert, aber keiner funktioniert. Und bei den Beispielen aus dem Internet wird der Name einfach ohne irgendetwas davor angegeben, das klappt aber auch nicht.

Vielen Dank schonmal für eure Hilfe und Entschuldigung wenn ich mich zu dumm anstelle

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

40

23.09.2006, 12:56

Zitat


HWND CreateWindowEx( DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
);


Schau dir mal an, welcher der 2. Parameter in der RICHTIGEN Funktion ist...
Mehr gibts dazu nicht zu sagen... ;)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige