Dynamische Steuerelemente



  • Hallo,

    ich bin dabei MFC zu erlernen und stehe vor einem Problem.
    Ich habe ein SDI-(CFormView-) Anwendung mit ein paar Seuerelementen dynamisch erstellt.
    Beim Anklicken auf die Buttons soll eine einfache Meldung erscheinen, die zeigt welchen Button gerade angeklickt wurde.

    Über das Makro ON_COMMAND_RANGE(...) habe ich den ID-Bereich festgelegt:

    ON_COMMAND_RANGE(ID_FIRST_BUTTON, ID_LAST_BUTTON, OnButtonMessage)
    

    Mein Handler schaut folgender Maßen aus:

    void OnButtonMessage(UINT nID)
    {
    	int nButton = nID - ID_FIRST_BUTTON; 
    	switch (nButton)
    	{
    	case 0:
    		AfxMessageBox(_T("First button selected"));
    		break;
    	case 1:
    		AfxMessageBox(_T("Second button selected"));
    		break;
             .........
    	default:
    		// Not handled
    		break;
    	}    	
    }
    

    Der Compiler zeigt mir zwar keinen Fehler, aber es wird beim Anklicken auf die Buttons keine Meldung ausgegeben.
    Hat jemand hat eine Idee, wo der Fehler sein könnte?
    Danke im Voraus

    Die



  • Fehlt vieleicht ON_CONTROL_REFLECT in deiner Buttonklasse?


  • Mod

    Wird OnButtonMessage angesprungen?
    Ist ID_FIRST_BUTTON und ID_LAST_BUTTON wirklich korrekt definiert (ID_FIRST_BUTTON<ID_LAST_BUTTON).

    Ich verwende lieber ON_COMMAND_EX! Dabei wird für jeden Button (sofern es wirklich nicht zu viele sind ein Eintrag in der Message-Map angelegt.

    Der Handler sieht dann so aus:
    BOOL CMyClass::OnButtonMessage(UINT nID)
    {
    ...
    }

    BTW: Dein Handler heißt void OnButtonMessage(UINT nID), d.h. hier sehe ich keinen Klassennamen. Ist das Dein Problem?


Anmelden zum Antworten