Text von Editfenstern in Variablen schreiben



  • hi,
    ich habe eine frage zu (einzeiligen) edit-fenstern. ich habe mit visual studio 2005 (std-edition) eine resource-datei angelegt und danach eine dialog box erstellt, die 2 einzeilige editfenster enthält. (weiters noch einen OK und einen CANCEL button...). nun jetz möchte ich in der dialog-prozedur, nachdem man auf OK drückt, die zwei eingaben in den edit-fenstern in eine variable schreiben (welche ist dafür geeignet?).

    Hoffe ihr könnt mir das in kurzen worten erklärn.
    danke vielmals im voraus
    mfg manixx



  • Du solltest dir wirklich ein tut oder so über winapi besorgen weil das sind äußerste Grundlagen 😉
    Also den Text erhählst du mittels GetWindowText oder SendMessage(...) und WM_GETTEXT
    vielleicht noch ein bissel genauer
    GetWindowText(GetDlgItem(hdlg, IDC_EDIT1), buffer, 100);

    schirrmie



  • also am besten waere es du setzt ein limit, wieviele chars reingeschrieben werden dürfen, sagen wir 255, dann legste dir nen char an,
    char szBufferEdit1[ 256 ]. hmmm und dann war des glaub ich mit GetDlgTextItem()
    und so kannste den text in den char container saven, es waere sicher auch noch angebracht, per WM_GETTEXTLENGTH die tatsächliche anzahl an chars in der edit zu ermitelln um sie so als buffergrösse anzugeben... probiers aus.
    des char wo du den kram speicherst musst du global machen um damit im parent fenster zu arbeiten.

    Gruß Tobi.



  • ja ich hab eh ein buch über die api.. nur bin momentan etwas im stress. danke auf jeden fall für die (schnellen) antwort(en). 🙂



  • hmm zu spät -.-



  • ich wuerde die textlaenge undefiniert lassen:

    std::tstring GetItemText(HWND dlgHandle, unsigned int uiId)
    {
        HWND ebItem = ::GetDlgItem(dlgHandle, uiId)
        std::size_t nStrLen = (::GetWindowTextLength(ebItem)+1);
        TCHAR *strTemp = new TCHAR[nStrLen];
        ::SecureZeroMemory(strTemp, nStrLen);
        ::GetWindowText(ebItem, strTemp, nStrLen);
        std::tstring strEditText(strTemp);
        delete [] strTemp;
        strTemp = 0;
        return strEditText;
    }
    
    // spaeter kannst du immer sagen:
    
    std::tstring strEditBoxA = GetItemText(hdlg, IDC_EDIT1);
    

    der vorteil solch einer funktion ist das es mit allen moeglichen elementen eines dialoges funktioniert, und zudem es auch beliebig lang sein kann und als std::string|std::wstring (std::tstring) vorliegt


Anmelden zum Antworten