Eingabe im Eingabefeld komfortabel manipulieren und danach aktualisieren
-
Hallo zusammen,
ich hätt da eine kleine Frage die mich beschäftigt. Ich hab eine einfache Dialoganwendung mit der MFC realisiert, sie enthält nun ein Eingabefeld in dem ich einen Zahlenwert eintragen kann.
Desweiteren enthält der Dialog ein Gruppenfeld mit 8 Auswahlmöglichkeiten (Optionen). Ich will nun das sich der Zahlenwert im Eingabefeld arithmetisch verändert je nachdem welche der 8 Auswahlmöglichkeiten angeklickt wird, z.B. ich klicke das dritte Optionsfeld an und der Zahlenwert im Eingabefeld wird duch die Zahl 12 geteilt die als Text neben der entsprechendem Option steht.
Das zu realisieren ist ja an sich nicht so schwer aber ich müsst ja dann 8 Routinen schreiben die auf das anklicken reagieren und dann das Feld daraufhin aktualisieren oder ich wähle eine automatische aktualisierung wenn sich die Maus nur bewegt oder so, dass scheint mir aber alles sehr kompliziert...
Gibt es da eine einfachere Möglichkeit einen solchen Prozess zu realisieren???
Vielen Dank für eure Hilfe!!!
-
Wie wäre es mit 8 Handlern (für die Radiobuttons, geht ja per Mausklick) und einer Funktion, die dann immer aufgerufen wird?
void Aktualisiere(int Teiler);Die holt den Wert aus dem Edit, rechnet und packt zurück.
Weißt du, wie ich meine?

-
Oder noch eleganter - du kannst per ON_COMMAND_RANGE() bzw. ON_CONTROL_RANGE() einen Message-Handler einrichten, der alle Radiobuttons auswertet.
(das geht nicht über den Klassen-Assistenten, aber du kannst den Eintrag von Hand in die Message-Map eintragen)BEGIN_MESSAGE_MAP(CMyDialog,CDialog) //{{AFX_MSG_MAP(CMyDialog) ... //}}AFX_MSG_MAP ON_CONTROL_RANGE(BN_CLICKED,ID_BUTTON0,ID_BUTTON7,OnRadioButton) END_MESSAGE_MAP() void CMyDialog::OnRadioButton(UINT id) { UpdateDate(TRUE); int fact[8]={2,4,8,16,32,64,128,256}; m_value/=fact[id-ID_BUTTON0]; UpdateDate(FALSE); }
-
Für ON_CONTROL_RANGE müssen die IDs der Radiobuttons aber auf jeden Fall fortlaufend sein.

-
Deshalb verwende ich am liebsten ON_COMMAN_EX für so etwas...
-
Ah genau!
Darauf hätt ich auch kommen können, ich brauch ja so logischerweise nur eine Funktion mit entsprechender Aktion die von der Auswahl abhängig ist... logisch!

Das mit ON_COMMAND_... hört sich auch gut an, ich probier beide Methoden mal, Übung macht den Meister!
