Win 32 API Textboxen

-.-'' ähhm okay ..

Danke funktioniert natürlich super .. mann, dass ich da nicht alleine drauf gekommen bin ..

und @Deepthroat: das ist die Antwort xDD .. sry hab den Wald vor Bäumen nicht gesehen ..

Okay danke an alle ..
 
Übrigens reservierst du nicht genug Speicher bzw. übergibst falsche Werte an die GetWindowText Funktion. Der 3. Parameter gibt die max. Länge inklusive des abschließenden NUL Zeichens an. Da du Speicher für x Zeichen reserviert hast, kannst du nicht einfach x + 1 dort angeben. Du müßtest vielmehr x+1 Zeichen reservieren.

buffer[x] reserviert x + 1 Zeichen Platz, nämlich 0 bis x
Nur GetWindowText() braucht die +1, weil sonst das letzte Zeichen nicht mit zurückgegeben wird, bzw. GetWindowText() das letzte Zeichen abschneidet und stattdessen \0 einfügt.

Wers nicht glaubt, soll es ausprobieren.

Code:
int x = GetWindowTextLength(Textbox);
char buffer[x+1]; // reserviert x+2 Zeichen
GetWindowText(Textbox, buffer, x); // gibt x - 1 Zeichen zurück plus \0

MessageBox(0,buffer,"Inhalt um 1 Zeichen gekürzt",MB_OK);
 
Code:
int x = 9;
char buffer[x];
strcpy(buffer,"123456789");
for(UINT i = 0; i < 9; i++)
{
cout << "Zeichen Nr. " << i << " : " << buffer[i] << endl;
}
if(buffer[9] == '\0')
{
cout << "Zeichen Nr. 9 ist \\0" << endl << endl << "Das sind insgesamt 10 Zeichen";
}
 
Code:
int x = 9;
char buffer[x];
strcpy(buffer,"123456789");
for(UINT i = 0; i < 9; i++)
{
cout << "Zeichen Nr. " << i << " : " << buffer[i] << endl;
}
if(buffer[9] == '\0')
{
cout << "Zeichen Nr. 9 ist \\0" << endl << endl << "Das sind insgesamt 10 Zeichen";
}
Das beweist nur das du es nicht verstanden hast.
C++:
int x = 9;
char buffer[x];

cout << sizeof(buffer) << " Bytes" << endl;
Lern erstmal die Grundlagen.

Gruß
 

Neue Beiträge

Zurück