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

23.01.2013, 18:12

Message Box String

Warum kann der den String net konvertieren?


#include "StdAfx.h"


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)
{
std::string test = "jhfuoasdfhasduohfo";
MessageBox(NULL, test, "Fenster Titel", MB_YESNO|MB_ICONINFORMATION);
return 0;
}


Habe schon die zwangs methode ausprobiert:


#include "StdAfx.h"


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)
{
std::string test = "jhfuoasdfhasduohfo";
MessageBox(NULL, (LPCWSTR) test, "Fenster Titel", MB_YESNO|MB_ICONINFORMATION);
return 0;
}

Da kommt aber immer noch dieselbe Fehler Meldung:


error C2440: 'Typumwandlung': 'std::string' kann nicht in 'LPCWSTR' konvertiert werden

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

23.01.2013, 18:15

Das 2. mal in 1 Minute, dass ich das hier posten muss:

Bitte Quellcodetags nutzen

http://www.youtube.com/watch?v=nSg-Cd7TF3M#t=2656s
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Techie

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

3

23.01.2013, 18:42

Weil dein Compiler auf Unicode steht. Entweder wstring nutzen oder in der Messagebox ein L davorstellen z.B.: L"Das ist schon fast Trollerei ,oder?" ( beim MessageBox titel z.B..
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

23.01.2013, 19:34

Man kann auch den Compiler umstellen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Techie

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

5

23.01.2013, 19:53

Stimmt geht auch. Aber ich, kenne DuffCola nicht. Ich persönlich habe schon mal kyrilisch ( Ukrainische Ausgaben :P )
gebraucht.
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Techie« (23.01.2013, 20:00)


6

23.01.2013, 19:59

Unicode

Habe schon von UNICODE auf Nicht festgelegt getsellt.
Bringt nix

MGBeginner

Frischling

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

7

23.01.2013, 20:24

Dann nimm halt mal ein std::wstring und L"abcdef".

Aber mal abgesehen vom Unicode-Problem. Nach meinem Kenntnisstand (ich lerne ja auch noch) sollte die Typumwandlung so aber trotzdem nicht klappen. Sein test ist doch eine Instanz einer Klasse, die kann man doch nicht einfach in LPCWSTR umwandeln kann, oder liege ich da falsch ? Fehlt da nicht auch der Aufruf einer bestimmen Memberfunktion, welche einen Zeiger auf den eigentlichen String selbst zurückgibt ?

8

23.01.2013, 20:41

ne

Ne.

Müsste eig gehen.
Denn LPCWSTR ist ein typdef zu einem C-String.
Und ich habe ne Tutorial Rheihe befolgt, in der er mit dieser Konvert Methode convertiert.
http://www.youtube.com/user/SterminioPro…iew=1&flow=grid

Techie

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

9

23.01.2013, 20:58

LPCWSTR braucht einen C-string, du nutzt einen C++ string ,also musst du string.c_str verwenden.

c_str ist eine Memberfunktion der Klasse string. Schau doch mal in die C++-referenz
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

MGBeginner

Frischling

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

10

23.01.2013, 21:12

Genau das meinte ich, übringens, wenn ich deinem Link folge und dort das Tut über std:string mir anschaue, wird c_str() auch erwähnt !! ;)

Werbeanzeige