Ich vermute ich habe einen von diesen offensichtlichen Tippfehlern, die man einfach nur nicht sieht, kann mir vielleicht jemand die Augen öffnen?
Ich habe ein UNICODE multiline edit Feld, wo ich Text eingeben kann, begrenzt auf max.2000 Zeichen.
Damit man dort auch Sonderzeichen in exotischen Sprachen lesen kann, habe ich einen "courier new" Font erstellt und weise diesen dem edit Feld zu.
So weit so gut, ich kann da wunderbar alles mögliche eingeben, und hinterher auslesen.
Nun möchte ich den buffer zu wstring konvertieren, also
Und jetzt der Gag:
WENN der Text relativ kurz ist, bekomme ich auch hier prima den richtigen Text angezeigt, aber WENN der Text zu lang wird (ich habe nicht genau herausgefunden ab welcher Länge) dann ist Mytext LEER.
Ich vermute, dass wenn der Text Sonderzeichen enthält, so dass es über 2000 byte werden, irgendwie die Grösse des buffers nicht reicht, aber ich verstehe echt nicht, wieso die MessageBox vom buffer immer stimmt, der wstring aber ab einer bestimmten Länge plötzlich ganz leer ist.
Was mache ich da falsch?
Ich habe ein UNICODE multiline edit Feld, wo ich Text eingeben kann, begrenzt auf max.2000 Zeichen.
Damit man dort auch Sonderzeichen in exotischen Sprachen lesen kann, habe ich einen "courier new" Font erstellt und weise diesen dem edit Feld zu.
Code:
Myinput = CreateWindow(
L"edit",0,
WS_CHILD|ES_MULTILINE|WS_VSCROLL|ES_AUTOVSCROLL|WS_VISIBLE,
20,80,410,195,
hWnd,0,hinstance,0
);
SendMessage(Myinput, EM_LIMITTEXT, 2000, 0);
SendMessage(Myinput, WM_SETFONT , (WPARAM)MyFont, 0);
So weit so gut, ich kann da wunderbar alles mögliche eingeben, und hinterher auslesen.
Code:
wchar_t buffer[GetWindowTextLength(Myinput)];
GetWindowText(Myinput,buffer,GetWindowTextLength(Myinput)+1);
MessageBox(0,buffer,L"Eingegebener Text",MB_OK);
Nun möchte ich den buffer zu wstring konvertieren, also
Code:
wstring Mytext(buffer);
MessageBox(0,Mytext.c_str(),L"Eingegebener Text",MB_OK);
Und jetzt der Gag:
WENN der Text relativ kurz ist, bekomme ich auch hier prima den richtigen Text angezeigt, aber WENN der Text zu lang wird (ich habe nicht genau herausgefunden ab welcher Länge) dann ist Mytext LEER.
Ich vermute, dass wenn der Text Sonderzeichen enthält, so dass es über 2000 byte werden, irgendwie die Grösse des buffers nicht reicht, aber ich verstehe echt nicht, wieso die MessageBox vom buffer immer stimmt, der wstring aber ab einer bestimmten Länge plötzlich ganz leer ist.
Was mache ich da falsch?