Window Handle und Nachrichtenverarbeitung



  • ich hab mal wieder Problem 🙄
    ich baue eine Applikation ,die mit einer externen dll kommunizieren soll.
    (diese dient als eine Schnittstelle zur Siemens Netzwerken implementiert)
    Dazu steht in der Beschreibung, dass ich nach der Anmeldung bei der dll, den Handle der Appl mitteilen muss, damit sie weißt, wohin sie die Nachrichten schicken soll.
    So soll es aussehen:

    #define MY_MSG_ID 1500; 
    
    // nach der Anmeldung
    
    int32 s7_set_window_handle_msg ( ord32 cp_descr,  // ord32 = unsignet long
                                     ord32 hWnd,
                                     ord32 MY_MSG_ID
                                   )
    

    ich habe eine Dialog Appl.
    Meine Frage: wie bekomme ich Handle hWnd, den ich übergeben muss?
    Und noch wichtiger, wie baue ich die benutzerdefinierte Nachrichten in eine MFC Anwendung ein. Alle Tutorials und Bücher, die ich habe behandeln nur die Verarbeitung der standard NAchrichetn wie BN_CLICKED usw. die man in Klassen Assistenten bearbeiten kann. Wie geht das für eigenen Klassen vom Hand??
    Suchfunktion bringt mich auch nicht weiter.

    Danke im voraus



  • wenn du in der MFC bist und eine KLasse hast, welche von CWnd abgeleitet ist, ist das Handle eine öffentliche Memvervariable(m_hWnd);



  • THX, funktioniert prima. Die dll bestätigt mir, dass die Handle gespeichert worden ist. 😋
    Nur kann ich meiner Anwendung beibringen, dass die auf ankommende Nachrichten reagiert. Wo muss ich was einfügen 😕



  • wirklich keine Antwort 😞 ?
    ein Tutorial-Link oder etwas Ahnliches würde mir schon reichen.
    Bitte !



  • Roman007 schrieb:

    Nur kann ich meiner Anwendung beibringen, dass die auf ankommende Nachrichten reagiert. Wo muss ich was einfügen 😕

    Du fügst der Klasse, deren Handle du übergeben hast, eine Methode hinzu:

    afx_msg LRESULT Funktionsname( WPARAM, LPARAM );
    

    Außerdem musst du der Messagemap dieser Klasse eine Zeile hinzufügen:

    ON_MESSAGE( NACHRICHT, Funktionsname )
    


  • THX 🙂
    jetzt funzt.
    Sollte jemand solche Anfängerprobleme haben, wie ich und die Suchfunktion benutzt, füge ich ein Paar Schritt für Schritt Details, wo was hingehört.
    Also ich will in der Dialogklasse Nachrichten Empfangen und entsprechend reagieren:
    1. in der (z.B) CMy_Dialog.cpp

    [code]
    #define MY_MESSAGE ( WM_USER +10 )  // mein Eintrag
    .
    .
    BEGIN_MESSAGE_MAP(CMy_Dialog, CDialog)
    	//{{AFX_MSG_MAP(CMy_Dialog)
    	ON_WM_PAINT()
    	ON_MESSAGE (MY_MESSAGE, TestMsg)    // mein Eintrag
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    

    [/code]
    2. in der Header Datei der Klasse (my_dialog.h) im Abschnitt {{AFX_MSG(CMy_Dialog)..

    [code]
    // Generierte Message-Map-Funktionen
    	//{{AFX_MSG(CMY_Dialog)
    	virtual BOOL OnInitDialog();
    	afx_msg void OnPaint();
    	afx_msg void TestMsg();    // mein Eintrag
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    

    [/code]
    Member Funktion TestMsg() wird beim Empfang der Nachricht MY_MESSAGE ausgeführt.
    Ausserdem erscheint jetzt die MFunktion samt der Nachricht in Klassen Assistenten. :p


Anmelden zum Antworten