ein event fuer alle listbox changes



  • ich suche nachm event was triggert wenn irgendeins von meinen listboxen geaendert wird mit der CBN_SELENDOK Nachricht.

    kann mir da wer weiterhelfen???

    thx im voraus



  • ON_LBN_SELCHANGE, wenn Dein Control ein LBS_NOTIFY Style hat.



  • es ist ne combo box bzw nicht nur eine es sind 15 und ich will das sobald irgendeine davon nen anderen wert bekommt eine funktion aufgerufen wird, weil wenn ich fuer jede einzelne combobox nen abruf erstelle ist das derbst umstaendlich



  • Ja, ich hab es ja verstanden... Du musst jede Subclassen...
    Wenn Du Klassen verwendest, kannst Du ja eine Klasse machen... oder was ist Dein Problem?



  • ich habe ne sdi anwendung. da sind ca 15 combo boxen drin und ich will ne berechnung mit den werten aus den comboboxen ausfuehren. so die rechnung muss ja logischerweise neu ausgefuehrt werden sobald irgendeine der comboboxen nen neuen wert bekommt. und da ich nicht 15 funktionen schreiben will nur um immerwieder auf die rechen funktion zugreifen zu muessen wollte ich wissen, ob es irgendwie moeglich ist ne funktion zu erstellen die nur dann ausloest, wenn irgendeine combobox veraendert wurde.

    ich bin quasi zu faul 15 funktionen zu schreiben und suche dafuer eine ultimative funktion so gesehen.



  • Omg... leite eine Klasse von CComboBox ab... reagier dort auf die LBN_SELCHANGE Message... und dann kannst de ja, wenn de bock hast einfach ne ID Variable mit in die Klasse packen(die gibst de dann in der OnInitDialog odg an) und in der LBN_SELCHANGE Message machst de dann ne switch case und rufst dann, der id entsprechend die Funktion dazu auf... ganz simple..



  • warum behandelst du nicht die nachrichten aller listboxen in einer funktion ? meine das so:

    BEGIN_MESSAGE_MAP(CMyDialogDlg, CDialog)
    	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchange)
    	ON_CBN_SELCHANGE(IDC_COMBO2, OnSelchange)
    	ON_CBN_SELCHANGE(IDC_COMBO3, OnSelchange)
             ...
             ...
    END_MESSAGE_MAP()
    


  • Kannst es auch so versuchen:

    BEGIN_MESSAGE_MAP(CComboDlg, CDialog)
    	ON_CONTROL_RANGE(CBN_SELENDOK, IDC_COMBO_START, IDC_COMBO_END, OnComboOK)
    END_MESSAGE_MAP()
    
    void CComboDlg::OnComboOK(UINT nID)
    {
    // ..
    }
    

    Dabei ist muss IDC_COMBO_START die niedrigste und IDC_COMBO_END die höchste Ressourcen-ID haben. Kannste finden und ändern in resource.h.



  • danke fuer die hilfe das letztere mit der range funktioniert gut. thx



  • das mit der range merke ich mir auch, das ist genial 👍


Anmelden zum Antworten