EditBox aus Unterprogramm



  • Hallo Leute! Hab da ein Problem mit der Ausgabe unter MFC! Hab da nicht so den Durchblick. Folgendes liegt vor:

    2 Unterprogramme: unt_1(), unt_2();

    // +++++++++++++++++++ WICHTIG ++++++++++++++++++++++++++++++++
    unt_1() ist in unt_1.h deklariert und in unt_1.cpp definiert.
    unt_2() ist in unt_2.h deklariert und in unt_2.cpp definiert.
    // ------------------------------------------------------------

    unt_1 wird durch einen Button klick aufgerufen:

    #include "unt_1.h"
    
    void TestAusgDlg::OnGo()
    {
       unt_1();
    }
    

    So, jetzt sind wir in unt_1.cpp, wo wiederum unt_2() aufgerufen wird.

    // unt_1.cpp
    #include "unt_1.h"
    #include "unt_2.h"
    
    int unt_1()
    {
       unt_2();
    }
    

    Jetzt sind wir da, wo mein Problem liegt. Ich möchte, das unt_2(), etwas in eine EditBox (IDC_Ausgabe) ausgibt. Jedoch bringt das so einige Problem mit sich, welche ich selbst nicht lösen kann. Also:

    // unt_2.cpp
    #include "unt_2.h"
    
    int unt_2()
    {
       //SetDlgItemText(IDC_Ausgabe....); PROBLEM
    }
    

    Ich weis, dass ich z.B.: einen this Zeiger setzen muss, jedoch funzt das nur, wenn alles in einem File heruntergetippt ist.
    Hat da jemand von euch eine Idee?

    mfg Flo



  • Wie wäre es, wenn du den Zeiger als Parameter runter gibst?

    Oder von unten eine Nachricht nach oben sendest mit dem Text als Anhang - dann kann das GetDlgItem oben gemacht werden.

    🙂



  • Also: Den pinter Übergeben hab ich schon probiert, funktioniert aber nicht.

    // Dialog Klasse
    CTest_AusgDlg* pointer=NULL;
    
    void CTest_AusgDlg::OnGo() 
    {
    
    	pointer=this;
    
    	unt_1(pointer);
    
    }
    

    Muss ja bei der definition von unt_1() die Parameter angeben
    ( class CTest_AusgDlg *ptr), jedoch da ich in einem andern File bin kennt er die Klasse nicht.

    Und die Variante von wegen von hinten die Melung nach vorne schicken, ist auch schlecht, weil es ja in wirklichkeit nicht 2 Unterprogramme sind, sonder 24, und die Meldungen von einen eigene Thread abgerufen werden.

    mfg Flo



  • Es müßte ein CWnd* als Typ reichen. Und das kennt dann hoffentlich auch deine Dll.

    Außerdem reicht der Aufruf so:

    unt_1(this);
    

    🙂



  • Nö, im header file kennt der kein CWnd.



  • Kennt er HWND?



  • Compiler sagt:

    unt_1.h: HWND nicht deklarierter bezeichner bzw.: CWnd nicht deklarierter bezeichner.



  • Header: Declared in Winuser.h; include Windows.h

    oder auch

    #include <afxwin.h>

    Hilft der der include eines dieser Header weiter? (Schonmal in die MSDN geschaut?)

    Sonst frag Doch im WinApi forum, bei MFC muss man dafür eigentlich nix includen...



  • Die windows.h musser für HWND einbinden. Das CWnd müsste dann damit auch klappen.



  • Compiler sagt:

    unt_1.h: HWND nicht deklarierter bezeichner bzw.: CWnd nicht deklarierter bezeichner.


Anmelden zum Antworten