Frage zu GetTextExtentPoint32
-
Mein aufruf sieht so aus:
SIZE size; GetTextExtentPoint32(hdc, ausgabe.c_str, ausgabe.size, &size);Was erst mal ganz harmlos ausschaut, scheint das nicht zu sein...
Es gibt folgenden Error:error C2664: 'GetTextExtentPoint32W': Konvertierung des Parameters 2 von 'const wchar_t *(void) const' in 'LPCWSTR' nicht möglich Es gibt keinen Kontext, in dem diese Konvertierung möglich istwie vielleicht schon aus dem Fehler ersichtlich, ist der string folgendermaßen definiert:
basic_string<TCHAR> ausgabe(_T("TEST!"));Und das Symbol UNICODE ist auch definiert...
Was kann ich ändern, um die Ausgabe möglich zu machen? Nicht den String, der muss so bleiben!
-
Caste mal nach LPCTSTR.
-
Hinter c_str fehlen die Klammern zum Aufruf der Funktion: c_str()
edit: Hinter size ebenfalls.
Das steht aber auch alles exakt so in der Fehlermeldung.

ness schrieb:
Konvertierung des Parameters 2 von 'const wchar_t *(void) const' in 'LPCWSTR' nicht möglichDie Fehlermeldung nennt Parameter 2 als Ursache, das ist also dieses c_str. Die Fehlerbeschreibung geht aber noch weiter:
"const wchar_t *(void)" ist ein Funktionszeiger, und den will und kann der Compiler nicht in einen string konvertieren. Funktionszeiger tauchen aber nur dann auf, wenn irgendwo der Name einer Funktion ohne Klammern steht.
-
Funktioniert net!:
error C2440: 'static_cast': 'const wchar_t *(__thiscall std::basic_string<_Elem,_Traits,_Ax>::* )(void) const' kann nicht in 'LPCTSTR' konvertiert werdenOder meintest du dynamic_cast? oder reinterpret_cast?
Kenn mich mit den beiden net so aus, ich weiß nur das der letzte auf biegen und brechen das tut was er soll, benutze ihn aber nie 8aus eben diesem Grund)!
-
static_cast ist Blödsinn, Funktionszeiger können nicht sinnvoll in normale Zeiger konvertiert werden (hier ist es nicht sinnvoll).
Bei dir fehlen nur Klammern hinter c_str und size.
-
cd9000 hat den Fehler schon gefunden
