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