SendMessage von einem Dialog zum anderen



  • Hi.
    Kurze Erläuterung:
    Ich habe einen Dialog welchen ich mit new erstelle und dann in ein TabCtrl lade.
    Jetzt möchte ich wenn ein Button dort gedrückt wird, dass ich ein SendMessage() aufrufe und die Nachricht an das Hauptfenster schicken. Leider kommt diese Nachricht nie dort an...

    Ich hatte es mit GetParent()->SendMessage() versucht.

    Wie mache ich das richtig?
    Oder welche andere Möglichkeit gibt es?



  • Servus,

    wie fängst du denn die Nachricht ab? Rufst du PreTranslateMessage auf oder hast du in deiner MSG Map etwas stehen?

    Bsp.:

    //Global
    const WM_MSG_KATZENKLO = WM_USER +1;
    
    //Nicht Modaler Dlg
    void CTestDlg::OnBnClickedButton1()
    {
    	GetParent()->SendMessage(WM_MSG_KATZENKLO, 0, 0);
    } 
    
    //HauptDlg
    BEGIN_MESSAGE_MAP(CTestMsgDlg, CDialog)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	//}}AFX_MSG_MAP
    	ON_MESSAGE(WM_MSG_KATZENKLO, OnKatzenKlo)
    END_MESSAGE_MAP()
    .
    .
    .
    
    LRESULT CTestMsgDlg::OnKatzenKlo(WPARAM wParam, LPARAM lParam)
    {
    	AfxMessageBox("Jetzt stinkts!!!");
    
    	return 0;
    }
    

    *winke*
    Hellsgore



  • Ich hab wie ich das bisher immer gemacht hatte einfach die WindowProc überschrieben.
    Bisher hat das immer funktioniert, aber da hab ich auch nicht selber die Nachrichten geschickt...



  • Servus,

    LRESULT CTestMsgDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
    	if (message == WM_MSG_KATZENKLO)
    		int Paul = 0;
    
    	return CDialog::WindowProc(message, wParam, lParam);
    }
    

    Ajo, klappt auch. Vielleicht die MSG nicht richtig deklariert oder deine GetParent() gibt keinen Zeiger zurück?

    *winke*
    Hellsgore



  • Ich hab nen

    #define WM_CUSTOM_POS (WM_USER + 3333)
    

    gemacht und verschicke das.
    GetParent() liefert auch nen Pointer auf ein CWnd Objekt zurück. Aber ich hab das Gefühl es ist das falsche... Weil im Hauptdialog kommt die Nachricht nie an. (Rechtschreibfehler sind ausgeschlossen)



  • Ist das Tab Control vielleicht das Parent?



  • Kann sein, darum frag ich ja hier 😉
    Was wäre wenn? Wie komm ich an das Parent des Parents?



  • Test mal:

    AfxGetMainWnd()->SendMessage(Blalalala);
    


  • the_alien schrieb:

    Kann sein, darum frag ich ja hier 😉
    Was wäre wenn? Wie komm ich an das Parent des Parents?

    Dumm?

    GetParent()->GetParent()->...()



  • Hallo anonymer... ich kann dich nicht leiden. Vielleicht kommt man in dem Moment einfach nicht drauf. Danke.

    Werd beides testen.



  • Geht beides. Danke, das wars.


Anmelden zum Antworten