Edit-Feld auslesen



  • Hi ich hab da ein Problem mit EditFeldern.
    Quelltext: CWnd* pWnd=GetDlgItem(IDC_EDIT1);
    pWnd->GetWindowText(str);
    CString str;

    Fehlermedldung: error C2660: GetDlgItem: function does not take 1 parameters

    Das EditFeld befindet sich in einem anderen DialogFeld.
    Gibt es da noch andere Möglichkeiten?

    (Programmiert mit eMbedded Visual C++ Tool3)

    😕



  • [msdn]

    HWND GetDlgItem(
      HWND hDlg,       // handle to dialog box
      int nIDDlgItem   // control identifier
    );
    

    [/msdn]

    Du musst also noch ein Handle auf den Dialog wo das drin ist mitgeben. Oder schreib eine kleine Funktion im Dialog, die das macht und den Wert nach außen gibt.



  • Gibt es da irgend welche beispiel programme?



  • Keine Ahnung, aber so schwer is das doch eigentlich nicht. Allerdings hab ich nur Erfahrungen mit dem normalen VC++. Da könnte ich dir für den Alternativvorschlag ein Beispiel mit fiktiven Namen häkeln.

    Wär das auch ne Hilfe?



  • ja



  • Im Dialog Header:

    public:
        CString GetEditText();
    

    Im Dialog cpp:

    CString CMyDialog::GetEditText()
    {
        CWnd* pWnd=GetDlgItem(IDC_EDIT1); 
        ASSERT(pWND);
        CString str; 
        pWnd->GetWindowText(str); 
        return str;
    }
    

    Der Aufruf:

    CMyDialog dlg;
    // hier rufst du den bestimmt auf
    CString str = dlg.GetEditText();
    

    Was mir aufgefallen ist:
    Wenn du den Dialog modal aufrufst, funktioniert das Beispiel nicht (das Edit ist ja "destroyed" sobald der Dialog zu ist). Dann muss ich noch ein anderes machen.

    Also, passt es oder muss das andere Beispiel ran?


Anmelden zum Antworten