Wie bekomme ich einen anderen Sprachtext von GetWindowText? Ich habe ein Whiteboard-Projekt modifiziert. Wenn der Benutzer das Whiteboard eingibt, wird die Onchange-Funktion aufgerufen und zeigt den Text im Whiteboard an. Wenn ich jedoch japanischen Text (keine Systemstandardsprache) eintippe, wird "?" stattdessen. Das folgende ist der Code-Spinet für onchange.Wie bekomme ich einen anderen Sprachtext von GetWindowText?
void CHBEdit::OnChange()
{
static bool bChanged = true;
CDC *pDC = GetDC();
if (bChanged) {
CString str;
GetWindowText(str);
m_strText = str;
int iStartChar, iEndChar;
GetSel(iStartChar, iEndChar);
CRect rect;
GetWindowRect(&rect);
CFont *Oldfont = (CFont *)pDC->SelectObject(&m_Font);
CSize size = pDC->GetOutputTextExtent(str); //+ "a");
pDC->SelectObject(Oldfont);
SetWindowPos(NULL, 0, 0, size.cx, size.cy, SWP_NOMOVE);
bChanged = false;
SetWindowText(str);
SetSel(iStartChar, iEndChar);
}
else
bChanged = true;
ReleaseDC(pDC);
}
Ich bin wirklich neu in C++. Ich habe recherchiert und GetwindowTextW mit UTF8 Unicode versucht, aber es zeigt immer noch "?". Vielleicht ist die Logik falsch.
Ich würde es schätzen, wenn mir jemand die Lösung geben könnte, um verschiedene Sprache Text im Whiteboard zu zeigen. Vielen Dank.
Dank für Ihre Antwort danken. Das Projekt war ein Multi-Byte-Zeichensatz und kann nicht geändert werden, um GetWindowTextW zu verwenden. Dann konvertierte ich das ganze Projekt mit dem Unicode-Zeichensatz anstelle des Multi-Byte-Zeichensatzes. Allerdings hat diese Methode viele Variablen gezwungen, ihren Typ zu ändern. –
Ich weiß nicht, wie dies in VS 2005 implementiert ist, aber in modernen Versionen sollten Sie 'GetWindowTextW '/' GetWindowTextA' nicht beachten, da 'GetWindowText' als ein Makro implementiert ist, das automatisch in eine dieser beiden Funktionen auflöst, abhängig davon, ob das Projekt als Unicode definiert ist oder nicht. Ich arbeite auch mit Projekten, die die japanische Sprache unter Verwendung von 'GetWindowText' unterstützen und ich habe nicht die Probleme, über die Sie sich beschweren! – sergiol