GetWindowTextLength liefert falschen Wert
-
Hallo!
Mit folgendem Code wird nicht der ganze Textfeldinhalt kopiert. Es fehlt immer ein Zeichen.
size_t len = static_cast<size_t>(GetDlgItem(IDC_EDIT)->GetWindowTextLength()); char *pBuf = new char[len + 1]; memset(pBuf, '\0', len + 1); GetDlgItem(IDC_EDIT)->GetWindowText(reinterpret_cast<LPTSTR>(pBuf), len) // Code... delete [] pBuf;
Wenn ich jetzt aber die Variable len um einen erhöhe,
size_t len = static_cast<size_t>(GetDlgItem(IDC_EDIT)->GetWindowTextLength() + 1);
dann wird der gesamte Inhalt kopiert. Warum ist das so?
Liegt es daran das ich einen 1 Byte starken String übergebe, obwohl ein 2 Bytes starker (LPTSTR -> unsigned short) verlangt wird? Imho doch nicht.
-
Specifies the text length, not including any null-termination character.