Poroblem mit SendMessage in Dialogbasierter Anwendung



  • Hallo,

    ich möchte beim Beenden eines Dialoges eine WM_Message die ich vorher deklariert habe an einen anderen Dialog senden.
    Mein Porblem ist, das ich in meinem Dialog kein CWindow Objekt erstellen kann und somit nur die SendMessage mit 3 Parametern verwenden kann (CWnd::SendMessage anstatt CWindow::Sendmessage)

    void CDlgServiceCall::OnOK() 
    {
    
    	CWnd *pWndPrev=FindWindow(_T("CDolmetscherDlg"),NULL);
    	pWndPrev->SendMessage(WM_SERVICECALLCLOSE, 0, 0);
    ...
    }
    

    da krieg ich aber eine AccesViolation.
    Wie krieg ich da ein CWindow Objekt????

    Desweiteren wie greife ich auf eine globale Variable zu?
    Ich bekomm immer diese fehler Meldung

    error C2205: 'm_bActive' : cannot initialize extern variables with block scope

    Help! I need Somebody



  • wenn die globale Variabel woanders steht(also in einer anderen Headerdatei), musst du dort, wo sie gebraucht wird, "extern <variablenname>" angeben, damit der Linker bescheid weis.



  • Hab ich doch!
    im cpp steht
    extern m_bActive=FALSE

    und im Header wird deklariert!



  • monne81 schrieb:

    Hab ich doch!
    im cpp steht
    extern m_bActive=FALSE

    und im Header wird deklariert!

    das ist falsch was du hier machst. du definierst die Variable, dadurch wird eine neu mit selben Namen erstellt. Du darsft nur deklarieren, wenn es keine neue sein soll, also nur

    extern m_bActive;
    

    und in deinen Methdoe kannst du dann den Wert setzen

    m_bActive = false;
    


  • Alles klar !

    Thanx! 🙂



  • extern m_bActive;
    

    klappt das? weis jetzt garnet mehr ob der Typ da mit hin musste 😕 *waah* kleiner blackout

    extern BOOL m_bActive;
    

    das zweite ist glaube korrekt?

    edit: jo du musst den Typ mit abgeben!!!



  • btw: CWindow ist ATL. Das willst du nicht. Wenn du unbedingt die mit 4 Parametern aufrufen willst, dann nimm die WinAPI-Funktion ::SendMessage



  • Danke für Eure Tipps!
    Funktioniert alles wie geschmiert! 👍


Anmelden zum Antworten