Verständigungsfrage zu den dynamisch erzeugten Buttons



  • Hallo zusammen,

    ich bin neuling in der MFC-Programmierung und habe gleich eine Frage zum Thema "Dynamische Buttons, die aus einer Konfig-Datei geladen werden"
    Wenn die Buttons geladen und angezeigt werden, wie führt man dann die vorgesehehe Aktion mit dem entsprechenden Button aus?
    Wird die Aktion auch in der Konfig-Datei mitangegeben oder wie?
    Vielen Dank für euere Hilfe.

    MfG, Maticky



  • Ich versuche jetzt nochmal mein Problem anhand eines kleinen Beispiels zu verdeutlichen:

    Button1 ---> soll Aktion A ausführen
    Button2 ---> soll Aktion B ausführen
    Button3 ---> soll Aktion C ausführen

    Es wird einen ID-Bereich für die Buttons festgelegt:

    #define FIRST_BUTTON_ID     10000
    #define LAST_BUTTON_ID      11000
    

    Nachdem die Buttons geladen worden, soll dann die vorgesehene Aktion mit dem entsprechenden Button ausführt werden.

    void OnButtonClicked(UINT iID) 
    { 
        int iButton = iID - FIRST_BUTTON_ID; 
        switch (nButton) 
        { 
        case 0:       // 10000-10000 ;  Button1 
            Aktion A ausführen;
            break; 
        case 1:      // 10001-10000 ;   Button2
            Aktion B ausführen;
            break; 
        case 2:      // 10002-10000 ;   Button3
            Aktion C ausführen;
            break; 
        }        
    }
    

    Aber, wenn ich jetzt z.B. Button1 aus der Konfig-Datei entferne (ausklammere), dann bekommen die Buttons andere ID's als vorhin und es werden falsche Aktionen ausgeführt.

    void OnButtonClicked(UINT iID) 
    { 
        int iButton = iID - FIRST_BUTTON_ID; 
        switch (nButton) 
        { 
        case 0:       // 10000-10000   
            Aktion A ausführen;  //  Button2 wird die Aktion von Button1 ausführen
            break; 
        case 1:      // 10001-10000
            Aktion B ausführen;  //  Button3 führt de Aktion von Button 2 aus  
            break;               //   hier ist schluß
    
        case 2:      // 10002-10000  
            Aktion C ausführen;
            break; 
        }        
    }
    

    Da die ID sich ändern kann, wüsste ich gerne, wie der Button erkennbar bleibt, um die für ihn vorgesehene Funktion ausführen kann!??

    Ich hoffe, ihr versteht mein Problem und würde mich sehr freuen, wenn ihr mir helfen könntet.

    Danke,
    Maticky



  • Ist es korrekt dass Du einmal "iButton" und einmal "nButton" hast!?



  • er hat sich bestimmt verschrieben


Anmelden zum Antworten