MFC Taschenrechner - Buttons funktioniern nicht.



  • Hallo,

    ich habe eben eines meiner ersten MFC Programme geschrieben, bin dieser Seite gefolgt: http://home.wtal.de/ranzurmall/visualc/ und bin auf folgendes Problem gestoßen:

    Ich habe mit dem Classwizard jedem Button eine Funktion zugewiesen, diese auch soweit funktionsfähig geschrieben, nur passiert nichts, wenn ich auf einen der Buttons drücke bei ausgeführtem Programm.

    Es handelt sich um ein auf Dialogfeldern basierendes Programm.
    Hier die Funktionscodes, die ausgeführt werden sollten, wenn einer der Buttons gedrückt wird:

    // taschenrechner.cpp: Implementierungsdatei
    //
    
    #include "stdafx.h"
    #include "Taschenrechner Dialog.h"
    #include "taschenrechner.h"
    #include "afxdialogex.h"
    
    // taschenrechner-Dialogfeld
    
    IMPLEMENT_DYNAMIC(taschenrechner, CDialog)
    
    taschenrechner::taschenrechner(CWnd* pParent /*=NULL*/)
    	: CDialog(taschenrechner::IDD, pParent)
    	, Wert_Eingabe1(0)
    	, Wert_Eingabe2(0)
    	, Wert_Ergebnis(0)
    {
    
    }
    
    taschenrechner::~taschenrechner()
    {
    }
    
    void taschenrechner::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	DDX_Text(pDX, IDC_Eingabe1, Wert_Eingabe1);
    	DDX_Text(pDX, IDC_Eingabe2, Wert_Eingabe2);
    	DDX_Text(pDX, IDC_Ergebnis, Wert_Ergebnis);
    }
    
    BEGIN_MESSAGE_MAP(taschenrechner, CDialog)
    	ON_BN_CLICKED(IDC_Plus, &taschenrechner::OnClickedPlus)
    	ON_BN_CLICKED(IDC_Minus, &taschenrechner::OnClickedMinus)
    	ON_BN_CLICKED(IDC_Mal, &taschenrechner::OnClickedMal)
    	ON_BN_CLICKED(IDC_Geteilt, &taschenrechner::OnClickedGeteilt)
    END_MESSAGE_MAP()
    
    // taschenrechner-Meldungshandler
    
    void taschenrechner::OnClickedPlus()
    {
    	UpdateData(TRUE);
    	Wert_Ergebnis = Wert_Eingabe1 * Wert_Eingabe2;	
    	UpdateData(FALSE);
    }
    
    void taschenrechner::OnClickedMinus()
    {
    	UpdateData(TRUE);
    	Wert_Ergebnis = Wert_Eingabe1 - Wert_Eingabe2;	
    	UpdateData(FALSE);
    }
    
    void taschenrechner::OnClickedMal()
    {
    	UpdateData(TRUE);
    	Wert_Ergebnis = Wert_Eingabe1 * Wert_Eingabe2;
    	UpdateData(FALSE);
    }
    
    void taschenrechner::OnClickedGeteilt()
    {
    	UpdateData(TRUE);
    	if(Wert_Eingabe2 != 0)
    	{
    		Wert_Ergebnis = Wert_Eingabe1 / Wert_Eingabe2;
    		UpdateData(FALSE);
    	}
    	else
    	{
    		AfxMessageBox(" Durch 0 können Sie nicht Teilen !");
    	}
    }
    


  • Außerdem kann ich Schritt 4 nicht durchführen, da mir: "Starten Sie ClassWizard und Wählen die Klasse CTrechnerView. Markieren Sie bei Object-IDs CtrechnerView und wählen Sie die Nachricht WM_LBUTTONDOWN." fehlt. Woran kann das liegen?



  • Die einfachste Variante sich einen funktionsfähigen Klickevent für einen Button zu erstellen ist,
    wenn du im Formdesigner einen Doppelklick auf den Button machst.
    Visual Studio erstellt Dir dann automatisch einen OnClick Event für diesen Button und springt direkt zur Methode. Da schreibst du dann deinen Code rein.
    Du kannst (unten rechts bei den Properties / Formdesigner) auf den Blitz klicken (Events) und dort Dein Event gegebenenfalls auch ändern oder weitere hinzufügen.
    Womöglich kannst Du da auch deine aktuellen Events eingeben. Sicherlich hast du dort nicht die entsprechenden Methoden eingetragen, welche bei einem Event aufgerufen werden sollen.

    EDIT: Dein "Programmierbeispiel" ist aus dem Jahr 1999. In der Zwischenzeit hat sich einiges geändert und ist auch sehr viel leichter geworden.
    Ich würde dir raten, dir ein aktuelles Beispiel zu suchen.


Log in to reply