Schleife für WM_GETTEXT wird nicht ausgeführt



  • Warum wird diese Schleife falsch oder garnicht ausgeführt?

    char *buffer[256];
    SendMessage(hEdit1, WM_GETTEXT, sizeof(buffer), (LPARAM)buffer);
    if (buffer[256] == "Hallo") {
     // Funktion ausführen
    }
    

  • Mod

    1. Weil dies kein Vergleich eines Strings ist.
    Dazu musst Du strcmp o.ä. bemühen.
    2. Ist char *buffer[256]; kein String sondern einer Array von Zeigern.

    Lies bitte ein Tutorial und setze Dich grundsätzlich mit der Sprache C/C++ auseinander.



  • 3. ... welche Schleife?



  • Deine Nachricht ist extrem fehleranfällig (run-time error durch stack overflow), weil du es dem Programm erlaubst, zu große Datenmenge in deinen Buffer zu kopieren. sizeof(buffer) ergibt nämlich 1024 ( 256 * sizeof(*buffer) ). Die Anzahl von zu kopierenden Zeichen musst du vorher rausfinden und nur so viel Speicher reservieren:

    char* cBuffer = new char[Edit_GetTextLength(hEdit1)+1];
    

    An deiner Stelle würde ich den Tipp von Martin wirklich annehmen.

    Grüße,
    Rewind.


Anmelden zum Antworten