Edit Box auslesen aber wie? THX



  • Hallo C++ Freuende!!!

    Ich bin neu hier und versuche mein Glück mit wahrscheinlich einer dummen Frage:
    Wie kann ich aus meinen Editfeld einen Wert herauslesen?
    Ich habe das schon über eine Member Variable die MFC ClassWizard geschafft, und jetzt möchte ich das versuchen dynamisch zu erzeugen.

    Vielen Dank
    Coder24h



  • GetDlgItemText ( IDC_NAME_DEINER_EDITBOX, strBuf /*CString Object*/);
    

    odda eben DDX-Variablen...



  • Danke sehr LUZA !

    Ich bin mir sicher, dass das mir ausreichen wird.
    Und falls nicht, dann melde ich mich noch mal^^.

    Viele Grüße
    coder24h



  • no porb



  • Die GetDlg... Funktionen und UpdateData unterwandern die objektorientierten Prinzipien.Ist ne Stilfrage ob man diese Funktionen benutzt oder für seine Controls Membervariablen anlegt.

    MfG Spacelord



  • UpdateData unterwandert die

    Spacelord@work schrieb:

    Die GetDlg... Funktionen und UpdateData unterwandern die objektorientierten Prinzipien.
    MfG Spacelord

    was is denn OBJEKTORIENTIERTEN PRINZIPIEN treu???



  • Was hat die Verwendung einer API mit Objektorientierung zu tun.

    Das Anlegen von Membervariablen ist mühsam und nicht notwendig.
    UpdateData verwendet der Profi eigentlich sehr selten.



  • was die frage abba noch nicht beantwortet...

    soweit ich das verstanden habe, ist UpdateData
    doch SEHR objekt-mäßig



  • Unix-Tom schrieb:

    Was hat die Verwendung einer API mit Objektorientierung zu tun.

    Das Anlegen von Membervariablen ist mühsam und nicht notwendig.
    UpdateData verwendet der Profi eigentlich sehr selten.

    Nehmen wir mal(ohnehin fragwürdigen)Code wie diesen,der ja sehr oft anzutreffen ist:

    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    pEdit->SetWindowText("blablub");
    

    Nehmen wir mal an dieser Code kommt in einer großen Anwendung zigmal vor.
    Wenn du jetzt aus irgend einem Grund darauf kommst ne Klasse von CEdit abzuleiten die SetWindowText überschreibt,dann musst du in der kompletten Anwendung deinen Cast von (CEdit*) auf (CDeinEdit*) ändern.
    Damit werden doch die Vorteile der Objektorientierung ad absurdum geführt.
    Wenn du ne Membervariable für dein Edit-Control angelegt hast änderst du nur den Typ deiner Variablen und alles ist gut.
    Das Control ist ein Objekt und sollte auch als solches behandelt werden.
    Ist zumindest meine Meinung.

    MfG Spacelord



  • Aus dieser Sicht habe ich das noch garnicht betrachtet.

    Edit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    pEdit->SetWindowText("blablub");
    

    So etwas mach ich nicht.

    GetDlgItem(IDC_EDIT1)->SetWIndowText("hallo");
    reicht vollkommen aus.

    Aber bei Änderung einer Klasse muss man sowieso Suchen/ersetzen machen. Somit spart man sich Arbeit wenn man keine Membervariablen anlegt.



  • Aber bei Änderung einer Klasse muss man sowieso Suchen/ersetzen machen. Somit spart man sich Arbeit wenn man keine Membervariablen anlegt.

    Suchen/Ersetzen kannst du aber auch nur im Optimalfall nutzen 😉 .
    Wenn in deinem Code noch andere CEdit´s(um beim Beispiel zu bleiben) sind,die diesen Typ auch behalten sollen,ist die gute alte Handarbeit gefragt 😃 .

    MfG Spacelord


Anmelden zum Antworten