edit box



  • Hi, wie kann ich bei einer edit textbox einfach text anfügen ?
    also das der text der bereits drinn steht drinnen bleibt, und das ein neuer string einfach dazu kommt ?
    mfg FoX



  • Habe ich auch schonmal gefragt. Hier kommt die Funktion:

    bool AddText (HWND hWnd, char *lpText)
    {
        DWORD dwStart = 0, dwEnd = 0;
        int nLen;
    
        nLen = GetWindowTextLength (hWnd);
        SendMessage (hWnd, EM_GETSEL, (WPARAM) &dwStart, (LPARAM) &dwEnd);
        SendMessage (hWnd, EM_SETSEL, (WPARAM) nLen, (LPARAM) nLen);
        SendMessage (hWnd, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) lpText);
        SendMessage (hWnd, EM_SETSEL, (WPARAM) dwStart, (LPARAM) dwEnd);
    
        return true;
    }
    

    damit kannst du an jedes Control Text ranhängen

    Mfg Ominion



  • @Ominion
    warum hast du der funktion einen boolischen rückgabewert spendiert 😉



  • weil man normal noch guckt ob die parameter ok sind usw-



  • (D)Evil schrieb:

    weil man normal noch guckt ob die parameter ok sind usw-

    mensch ich wollt nur nen denkanstoss geben und du musst alles verraten :p
    oder habe ich den hauch der ironie bei dir übersehen



  • nur für dich miller_m:

    void AddText (HWND hWnd, char *lpText)
    {
        DWORD dwStart = 0, dwEnd = 0;
        int nLen;
    
        nLen = GetWindowTextLength (hWnd);
        SendMessage (hWnd, EM_GETSEL, (WPARAM) &dwStart, (LPARAM) &dwEnd);
        SendMessage (hWnd, EM_SETSEL, (WPARAM) nLen, (LPARAM) nLen);
        SendMessage (hWnd, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) lpText);
        SendMessage (hWnd, EM_SETSEL, (WPARAM) dwStart, (LPARAM) dwEnd);
    }
    

    Mfg Ominion



  • Funktioniert nicht !

    Keine Ahnung wieso, der text wird überschrieben ! Der text der übergeben wird, is dann der einzige text der in der text steht !

    mfg



  • Ominion schrieb:

    nur für dich miller_m: [...]

    Ne, eben nicht!
    Hast du (D)Evil's Hinweis gelesen?

    ➡

    (D)Evil schrieb:

    weil man normal noch guckt ob die parameter ok sind usw-

    @Foxx90: Nimm lieber diese Funktionen, die sind besser ➡ http://winapi.net/index.php?inhalt=s10. Wobei auch hier die Paramter-Prüfung fehlt.



  • ööhhhhmmmm...der link...der...naja egal

    bool AddText (HWND hWnd, char *lpText) 
    { 
        if (hWnd == NULL || hWnd == 0)
            return false;
    
        if (lpText == NULL || lpText == 0)
            return false;
    
        DWORD dwStart = 0, dwEnd = 0; 
        int nLen; 
    
        nLen = GetWindowTextLength (hWnd); 
        SendMessage (hWnd, EM_GETSEL, (WPARAM) &dwStart, (LPARAM) &dwEnd); 
        SendMessage (hWnd, EM_SETSEL, (WPARAM) nLen, (LPARAM) nLen); 
        SendMessage (hWnd, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) lpText); 
        SendMessage (hWnd, EM_SETSEL, (WPARAM) dwStart, (LPARAM) dwEnd); 
    
        return true;
    }
    

    kA warum ich das mit void gemacht habe, war glaube ich ein bisschen abwesend...

    Die Funktion vom Link entspricht meiner!

    Mfg Ominion



  • Ominion schrieb:

    ööhhhhmmmm...der link...der...naja egal

    bool AddText (HWND hWnd, char *lpText) 
    { 
        if (hWnd == NULL || hWnd == 0)
            return false;
    
        if (lpText == NULL || lpText == 0)
            return false;
    [...]
    }
    

    1. NULL ist gleich 0 (in C++).
    2. Die Überprüfung ist falsch 😉 .
    ➡

    if(!IsWindow(hWnd) || lpText == NULL)
      return (false);
    

    Ominion schrieb:

    Die Funktion vom Link entspricht meiner!

    Nein, das (u.a.) Wichtigste ist bei Dir leider abgeändert. Siehe Typ des letzten Parameters.



  • die überprüfung ist nicht falsch, man kann se nur besser machen...

    Mfg Ominion



  • Hmm 2x jeweils auf das selbe zu Prüfen ist nat. schon ne goile Idee ...



  • dann kann man beides wegoptimieren. :p 😉



  • Das vllt. nicht, aber es ist nicht falsch...

    Mfg Ominion


Anmelden zum Antworten