Button Klickfehler



  • Hi,
    habe mit VS8 ein versuchs Projekt erstellt. Die Hauptklasse für die GUI ist Cversuch001Dlg und darin habe ich die Methode:

    void Cversuch001Dlg::OnBnClickedButton1()
    {
    	UpdateData(TRUE);
    	m_ausgabe = m_eingabe;
    	UpdateData(FALSE);
    }
    

    Wenn ich nun auf den Button klicke schreibt er den einen Wert in die Ausgabe.Das geht ohne Probleme. Nun wollte ich das etwas verändern und schon habe ich Probelem.
    Habe mir die Klasse "bearbeiten" mit entsprechenden Methoden geschrieben.
    bearbeiten.h:

    #pragma once
    #include "versuch001.h"
    
    class bearbeiten :
    	public Cversuch001App
    {
    public:
    	bearbeiten(void);
    	~bearbeiten(void);
    	CString ausgabeBearbeiten(CString);
    };
    

    bearbeiten.cpp:

    #include "StdAfx.h"
    #include "bearbeiten.h"
    
    bearbeiten::bearbeiten(void)
    {
    }
    
    bearbeiten::~bearbeiten(void)
    {
    }
    
    CString bearbeiten::ausgabeBearbeiten(CString bekomme)
    {
    	return bekomme;
    }
    

    Dann habe ich den Aufruf der GUI etwas verändert:

    void Cversuch001Dlg::OnBnClickedButton1()
    {
    	UpdateData(TRUE);
    	bearbeiten bearbeiten;
    	m_ausgabe = bearbeiten.ausgabeBearbeiten(m_eingabe);
    	UpdateData(FALSE);
    }
    

    Nun kompiliert er das zwar aber wenn ich auf den Button drücke kommt eine komische Fehlermeldung wenn ich dann den Debugger starte steht folgendes da:

    ASSERT(AfxGetThread() == NULL);
    

    Also an der Stelle wird das Prog unterbrochen weil es nen Problem hat. Heißt das ich habe nen NULL-Pointer gebaut? Wie werde ich den Fehler los?
    MfG Christian



  • Ich vermute, "Cversuch001App" ist die vom Assistenten erzeugte Anwendungsklasse. Da "bearbeiten" von dieser Klasse abgeleitet ist, erzeugt du durch die Anweisung "bearbeiten bearbeiten;" praktisch eine zweite Instanz der Anwendungsklasse. Das ist unzulässig. Das Problem ist gelöst, wenn du "bearbeiten" nicht von der Anwednungsklasse ableitet.

    Gruß Frdln



  • 😃 supi danke das wars. Sieht dann so aus:

    class bearbeiten
    {
    public:
    

    dann habe ich bearbeiten im Konstruktor eingefügt:

    class Cversuch001Dlg : public CDialog
    {
    	bearbeiten bearbeiten;
    

    und es funktioniert alles ....
    MfG Christian


Anmelden zum Antworten