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.


Anmelden zum Antworten