Control-Arrays



  • Hi!
    Ist es möglich, mit MFC so etwas ähnliches wie Control-Arrays in VB zu realisieren?

    lg, phreaking



  • Definiere Control-Arrays!

    P.S. In C++ ist sehr viel mehr möglich als in VB, d.h. alles was in VB geht, geht 100%ig auch in C++ ... nur nicht immer mit der MFC!



  • Naja, in VB ist es zB möglich, mehrere Buttons mit dem selben Namen zu erzeugen. Es gibt zusätzlich noch das Index-Feld, in dem man eben eine Nummer eingibt. Wenn man jetzt zB auf einen dieser gleichnamigen Buttons klickt, wird die Funktion (zB Button_Click) aufgerufen, als zusätzlichen Parameter erhält man aber die den Index des Elementes...
    Ich kenne mich in C++ eigentlich eh aus, und das man normal nicht von einer Sprache auf eine andere schließen sollte, ist mir auch klar...

    lg, phreaking



  • Naja, prinzipiell ist das ja auch doppelt gemoppelt!

    Denn, wenn Du jetzt eine Reihe von Buttons hast, hat jeder Button eine ID, nennen wir sie

    enum { IDC_BUTTON_START, IDC_BUTTON2=IDC_BUTTON_START+1, ..., IDC_BUTTON_END };
    

    Wenn nun ein Button gedrückt wird, wird ON_COMMAND(BN_CLICK) ausgeführt! Um nun mehrere Buttons in der gleichen Funktion zu verarbeiten, setzt man das in eine COMMAND_RANGE

    also

    // message map
    ON_COMMAND_RANGE( BN_CLICK, IDC_BUTON_START, IDC_BUTTON_END, OnButtonClick)
    // Funktion
    void ...::OnButtonClick( UINT nID) // Die ID wird übergeben
    {
      int index = nID-ID_BUTTON_START; // Wenn man den Index braucht, berechnet man ihn einfach!
    }
    


  • Danke für die Erklärung!
    Aber was meinst du damit:

    Original erstellt von RenéG:
    **Naja, prinzipiell ist das ja auch doppelt gemoppelt!
    **

    BTW: Das Makro heißt ON_CONTROL_RANGE, ON_COMMAND_RANGE hat nur drei Parameter...

    lg, phreaking

    [ Dieser Beitrag wurde am 27.09.2002 um 10:08 Uhr von phreaking editiert. ]



  • 1. ON_COMMAND_RANGE geht aber auch, man muss nur BN_CLICKED weglassen

    Doppelt gemoppelt heißt, dass, wenn Du die Buttons erst in ein Control-Array legen willst, um den Index rauszubekommen, es umsonst tust, weil Du ja die ID bekommst


Anmelden zum Antworten