restet Button definieren



  • Hallo Gemeinde,

    ich habe folgende MFC-Anwendung (Dialogbox) erstellt.
    Programmiert kann man das ja nicht nennen.

    Jetzt habe ich da zwei Eingabe-Felder drauf. Eins für PS und das andere für KW.
    Es rechnet immer, wenn man auf einen Button klickt das andere Feld aus.
    Also: PS -> KW oder KW -> PS.

    Jetzt möchte ich nache einer FAlscheingabe in eines der Eingabefelder dieses zurücksetzen auf 0 (oder nichts) per Button. Halt so eine Art reset Button.

    Welchen programmcode könnte ich dazu verwenden ?

    Die Schnittstelle sieht folgend aus:

    .....
    
    void CPsKwDlg::OnBnClickedPskwbtn()
    {
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    	// Übernahme Eingabefeld-Daten in die zugehörigen Attribute
    	UpdateData(TRUE);
    
    	m_Kw = m_Ps * 0.736;	// Konvertierung PS nach KW
    
    	//Aktualisierung der Eingabefelder mit den neu berechneten Attributwerten
    	UpdateData(FALSE);
    
    }
    
    void CPsKwDlg::OnBnClickedKwpsbtn()
    {
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    
    	// Übernahme Eingabefeld-Daten in die zugehörigen Attribute
    	UpdateData(TRUE);
    
    	m_Kw = m_Ps / 0.736;	// Konvertierung PS nach KW
    
    	//Aktualisierung der Eingabefelder mit den neu berechneten Attributwerten
    	UpdateData(FALSE);
    }
    
    void CPsKwDlg::OnEnChangeKwEdit()
    {
    	// TODO:  Falls dies ein RICHEDIT-Steuerelement ist, wird das Kontrollelement
    	// diese Benachrichtigung nicht senden, es sei denn, Sie setzen den CDialog::OnInitDialog() außer Kraft.
    	// Funktion und Aufruf CRichEditCtrl().SetEventMask()
    	// mit dem ENM_CHANGE-Flag ORed in der Eingabe.
    
    	// TODO:  Fügen Sie hier Ihren Code für die Kontrollbenachrichtigungsbehandlung ein.
    }
    
    void CPsKwDlg::OnBnClickedButton2()
    {
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    }
    
    [cpp]void CPsKwDlg::OnBnClickedreset()
    {
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein !! Hier msollte die Programmanweisung stehen 
    }
    
    ..........
    
    void CPsKwDlg::OnBnClickedPskwbtn()
    

    Umrechnung: PS -> KW

    void CPsKwDlg::OnBnClickedKwpsbtn()
    

    Umrechnung_ KW -> PS

    void CPsKwDlg::OnBnClickedreset()
    

    hier ??

    Vielen Dank im Voraus

    mfg
    Matze



  • Wenn du deine MFC-Frage auch im MFC-Forum stellen würdest bestünde auch
    Hoffnung auf Antwort, weil es im C++-Standard keine Buttons gibt. 😉



  • hm du hast doch schon die Lösung: in deinem Reset-Button werden die Membervariablen halt nicht ausgerechnet wie bei deinen Berechnen-Buttons, sondern auf 0 gesetzt. Natürlich nicht die beiden UpdateData vergessen 🙂



  • reicht dir ein GetDialogItem() (um das "richtige" Eingabefeld zu finden) und SetText() (um den Inhalt des Eingabefeldes zu ändern) dafür aus?



  • CStoll schrieb:

    reicht dir ein GetDialogItem() (um das "richtige" Eingabefeld zu finden) und SetText() (um den Inhalt des Eingabefeldes zu ändern) dafür aus?

    Zu kompliziiert, wenn er doch eh schon die Membervariablen vom Assistenten hat erstellen lassen 🙂



  • @CStoll:

    ja da die Anwendung 0 Komfort erreichen soll, reciht das oben genannte aus.
    Jetzt muss ich nur noch lesen wie es genau geht.

    @Pellaeon: 👎
    no comment

    Vielen Dank der Hilfe

    mfg
    Matze



  • trivial_ schrieb:

    @Pellaeon: 👎
    no comment

    😕 😕



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • @Pellaeon

    sorry, ich habe überreagiert. Aber ich komm nicht weiter. Ich fand das nicht so passend, die Aussage

    , Zu kompliziiert, wenn er doch eh schon die Membervariablen vom Assistenten hat erstellen lassen 🙂

    ich brauche eine Lösung und kein Witzle

    mfg
    Matze



  • Im Konstrutor des Dialoges steht schon der Code den du brauchst.
    Dort werden ja die Variablen initialisiert.

    Kopier das rüber in die OnBnClickedreset und mach ein UpdateData(FALSE); drunter.
    Das sollte reichen. 🙂



  • Hallo estartu_de,

    ääähhhhmmm im Konstruktor CAboutDlg(); der Klasse PsKwDlg.cpp steht doch gar nichts drin. Oder blcik ichs nicht ?

    mfg
    Matze



  • im Konstruktor CAboutDlg(); der Klasse PsKwDlg.cpp

    Grundlagenfrage: Was ist ein Konstruktor und wie erkennt man ihn?
    Antwort: Der Konstruktor heißt genauso wie die Klasse und dort werden u.a. die Membervariablen initialisiert.

    Nun guck nochmal deine Aussage an. Ich glaube du hast in die falsche Funktion geguckt.
    Das ist ein Konstruktor, aber nicht von CPsKwDlg. 😉



  • trivial_ schrieb:

    Jetzt möchte ich nache einer FAlscheingabe in eines der Eingabefelder dieses zurücksetzen auf 0 (oder nichts) per Button. Halt so eine Art reset Button.

    Welchen programmcode könnte ich dazu verwenden ?

    void CPsKwDlg::OnBnClickedPskwbtn()
    {
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die           
            Benachrichtigung ein.
    	// Übernahme Eingabefeld-Daten in die zugehörigen Attribute
    	UpdateData(TRUE);
    
    	m_Kw = m_Ps * 0.736;	// Konvertierung PS nach KW
    
    	//Aktualisierung der Eingabefelder mit den neu berechneten   
            Attributwerten
    	UpdateData(FALSE);
    }
    

    Das sollte kein Witz sein. Schau mal deinen Code an, da rechnest du einen Wert aus und tust das Ergebnis in deinem Dialog darstellen. Wo ist nun der Unterschied, ob du einen Wert ausrechnest oder ihn einfach 0 setzt? Du kannst also deinen obigen Code nehmen und einfach die Berechnung durcheine 0 - Zuweisung ersetzen.

    m_Kw = 0;
    //Aktualisierung der Eingabefelder mit den neu berechneten   
    //Attributwerten
    UpdateData(FALSE);
    

    Und Schwups steht in deinem Kw-Feld ne 0 drinnen, so wie du es wolltest(hab ich zumindest so aufgefasst). Du siehst, ich habe nur deinen Code benutzt. Du hattest die Lösung als schon 🙂
    Das hab ich gemeint. Und das m_kw ist doch eine mit dem Assistenten erstellte Variable oder? Sonst würde da das UpdateData nix bewirken.



  • Hallo Pellaeon,

    ok danke der Hilfe ich habs bloss nicht gesehen. Jetzt läufts. 👍

    Und das m_kw ist doch eine mit dem Assistenten erstellte Variable oder?
    Sonst würde da das UpdateData nix bewirken.

    JA, die Variable m_Kw ist mit dem Assistenten erstellt 😕

    Vielen Dank

    mfg
    Matze



  • Also ne einfach Lösung wäre wenn du die Variablen auf 0 setzt. Ich gehe davon aus das die Funktion OnBnClickedreset() zum Reset Button gehören soll.

    [cpp]void CPsKwDlg::OnBnClickedreset() 
    { 
    // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein !! Hier msollte die Programmanweisung stehen
    
    UpdateData(true);
    m_Kw = 0;
    m_Ps = 0; 
    UpdateData(false);
    }
    

    So werden allerdings beide Felder bzw. Variablen auf 0 gesetzt. Wie gesagt nur ne kleine einfach Lösung.

    Gruß



  • Ronn schrieb:

    Also ne einfach Lösung wäre wenn du die Variablen auf 0 setzt. Ich gehe davon aus das die Funktion OnBnClickedreset() zum Reset Button gehören soll.

    [cpp]void CPsKwDlg::OnBnClickedreset() 
    { 
    // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein !! Hier msollte die Programmanweisung stehen
    
    UpdateData(true);
    m_Kw = 0;
    m_Ps = 0; 
    UpdateData(false);
    }
    

    So werden allerdings beide Felder bzw. Variablen auf 0 gesetzt. Wie gesagt nur ne kleine einfach Lösung.

    Gruß

    Hab ich doch geschrieben 😉
    Außerdem kann man das UpdateData(TRUE) weglassen. Ergibt hier keinen Sinn, da die aktuellen Werte aus dem Steuerelement nicht benötigt werden.


Anmelden zum Antworten