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

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

11

04.05.2012, 08:31

Weil jeder Wert ungleich 0 als wahr definiert ist, beim Vergleich mit TRUE aber nur 1 als wahr akzeptiert wird.
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

04.05.2012, 10:01

Ok, das ist ein nachvollziehbares Argument. In dem Fall ist das aber wohl egal, weil die Funktion laut Doku im Erfolgsfall explizit TRUE returned ;)

13

05.05.2012, 15:51

Ganz schön viele Antworten! Vielen Dank!

Also vorerst, die zweite Frage mit dem Update hat sich geklärt.

"Einfachste Lösung, wenn du nichts mit Unicode zu tun haben willst:

SetDlgItemTextA(... deinString.c_str() ...) benutzen (beachte das A in SetDlgItemTextA), das ist die Nicht-Unicode-Version der Funktion. "
So funktioniert es einwandfrei! Vielen Dank!

Quellcode

1
2
3
4
5
Statt eines strings einen wstring benutzen.

Das sollte ausreichend helfen. ;)

Meine eigene Lösung wäre es gewesen einen wstring anzulegen mit dem Inhalt deines/meines strings.

Hätte ich nicht gekonnt, da die Funktion einen std::string fordert.

Quellcode

1
Zum Konvertieren kannst du mbstowcs verwenden

Habe mir das mal angeschaut und es in einer anderen Art benutzt, da ich noch ein char* in LPCWSTR oder SetDlgItemTextA in LPCSTR:

Quellcode

1
2
3
4
5
char zWert[35] = Funktion(...);
wchar_t zWert[35];
mbtowc( zWert, szWert, 35);

SetDlgItemText(hWnd, IDC_NAME, zWert);

Sollte dies nicht so funktionieren?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

14

05.05.2012, 16:05

Quellcode

1
2
3
4
5
char zWert[35] = Funktion(...);
wchar_t zWert[35];
mbtowc( zWert, szWert, 35);

SetDlgItemText(hWnd, IDC_NAME, zWert);

Sollte dies nicht so funktionieren?

Die Zeile "zWert[35] = Funktion(...)" sieht verdächtig aus.

15

05.05.2012, 16:41

Was könnte daran falsch sein? Habe dies zu einfachen Erklärung etwas umgestell. Normalerweise Kopiert die Funktion den Ruckgabewert in ein char[35] welches als 1. Parameter angegeben wird. Also würde das genau so:

Quellcode

1
2
char zWert[35];
Funktion(zWert,35);

aus. Das 2. Parameter ist die Länge.

Bu1

Frischling

Beiträge: 66

Beruf: Schüler

  • Private Nachricht senden

16

06.05.2012, 13:34

SetDlgItemTextA(... deinString.c_str() ...) benutzen (beachte das A in SetDlgItemTextA), das ist die Nicht-Unicode-Version der Funktion. "
So funktioniert es einwandfrei! Vielen Dank!


Wenn es so doch funktioniert, wo ist dann das Problem? ^^

Zitat

Sämtliche Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt :!:
Sie können nach belieben kopiert und weiterverwändet werden. :P

17

06.05.2012, 15:03

Das sind gerade zwei verschiedenen Dinge...

Das erste per SetDlgItemTextA(....zWert.c_str()...) konnte ich mit einem String verwenden.
Nun habe ich allerdings ein Char* also char zWert[35] den ich erst wieder umformen muss.

Quellcode

1
SetDlgItemTextA(..., .... , zWert);


Funktioniert leider nicht. Was es ja eigentlich tun sollte...

Bu1

Frischling

Beiträge: 66

Beruf: Schüler

  • Private Nachricht senden

18

06.05.2012, 16:14

Geht dann nicht

C#-Quelltext

1
SetDiogTextA(..., ..., new string(zWert))


oder

C#-Quelltext

1
String = "" + zWert



Lg Bu1

Zitat

Sämtliche Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt :!:
Sie können nach belieben kopiert und weiterverwändet werden. :P

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

19

06.05.2012, 17:13

Am besten hantierst du gar nicht mit Arrays oder Pointern und benutzt einfach überall std::(w)string!

Werbeanzeige