Message von Button an Hauptfenster



  • Hallo,

    ich programmiere gerade eine sehr spezielle Software für eine Messaufgabe. Eigentlich möchte ich bestimmte Buttons und Regler direkt in der Ansicht des SDI haben. Ich weiß, man könnte das auch über einen nicht-modalen Dialog machen. Für diese Anwendung wären bestimmte Dialoge aber immer auf, was das Anbringen der Bedienelemente auf der Ansicht irgendwie nahelegt.
    Das Erzeugen und Darstellen des Buttons und Sliders in der ...View::OnCreate -Methode geht und sieht auch so aus wie gewünscht. An's delete in View::OnDestroy habe ich auch gedacht.
    Das Problem ist, dass die Message WM_LBUTTONDOWN nicht beim View-Fenster ankommt, die WM_HSCROLL message aber schon? Für beides habe ich im Klassenassistenten in der View-Klasse einen Handler erzeugt.
    Wenn ich irgendwo im View-Fenster den linken Button klicke wird ...View::OnLButtonDown angesprungen nur eben auf dem Button nicht.



  • Also ich habe jetzt eine Lösung gestrickt.
    Der button wird erzeugt mit

    int Ctest_sdiView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {...
    	m_buttontest = new CButton();
    	m_buttontest->Create(_T("Hallo"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,buttonSize,this,IDC_BUTTONTEST);
    

    in test_sdiView.cpp

    BEGIN_MESSAGE_MAP...
    //Handeinfügung
    ON_BN_CLICKED(IDC_BUTTONTEST, &Ctest_sdiView::ButtonGedrueckt)...
    ...
    END_MESSAGE_MAP()
    

    und in die Resource.h ein

    //Handeinfügung
    #define IDC_BUTTONTEST					1042
    

    eingefügt

    Dann springt er beim Druck auf den Button auch die richtige Methode Ctest_sdiView::ButtonGedrueckt

    Vielleicht bin ich auch schon zu Wizard-geschädigt, aber insbesondere das von Hand einfügen in die Resource.h kann doch eigentlich nicht der richtige Weg sein. 😞


  • Mod

    Wenn Du einen Formview erzeugen würdest macht der Ressource-Editor das für Dich.

    Wenn Du manuell IDs erzeigst bleibt Dir nichts anderes über.
    Ich packe solche IDs aber nie in die Resource.h. Diese werden code-nah bei mir erzeugt.



  • Dann bewege ich mich aber wieder im Bereich von C++/CLI. Ich erhalte zumindest eine dahingehende Meldung, wenn ich dem Projekt ein Windows Form hinzufügen möchte.

    Das wäre in Sachen eigener Programmierweiterbildung sicherlich mal wieder interessant, aber ich muss langsam mal zu eigentlichen Messaufgabe zurück.

    Wenn ich nun die IDs selber vergebe, wie stellt man dann am geschicktesten die Eindeutigkeit sicher? Nehme ich einfach einen Nummernbereich, der weit weg von den automatisch vergebenen ist?


Log in to reply