000
23.03.2003, 21:08 Uhr
CPlusPlus
|
Hallo erstmal an alle Leute, so erstmal eine kleine Beschreibung was ich überhaupt machen möchte bzw. was ich schon angefangen habe:) Nun das was ich machen möchte is ganz einfach zu beschreiben, einen Rechner auf Basis eines Dialogfensters. Das Habe ich bisher gemacht: Dialogfenster erstellt, Eingabefeld eingebunden und Zwei Buttons("1","+") Das habe ich bis jetzt erstmal für testzwecke erstellt. Mein Problem ist nun, wenn ich auf den Button mit der 1 drücke, tue ich über eine Variable die Zahl 1 an das Anzeige- bzw.Eingabefeld übergeben. Wenn ich den Button aber erneut drücke steht auf dem Anzeige- bzw.Eingabefeld nicht 11 sondern wieder 1. Ich weis das das was mit der Variable zu tuen hat aber ich weis nicht wie ich das problem lösen könnte. Ich habs auch schon mit Strings versucht aba das klappt irgendwie auch nicht so. Würd mich freuen wenn jemand einem Anfänger wie mir helfen könnte.
Hier habe ich nochmal den Quellcode, für das besser Verständnis.
C++: |
// resource.h #define IDD_DIALOGFELD 101 #define IDR_MAINFRAME 128
#define IDC_DISPLAY 1001 #define IDC_ADD 1002 #define IDC_EINS 1003
|
C++: |
// rechner.rc #include "resource.h" #include <afxres.h>
// Icon
IDR_MAINFRAME ICON "Rechner.ico"
// Dialog
IDD_DIALOGFELD DIALOGEX 0, 0, 80, 94
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Rechner"
FONT 8, "MS Sans Serif"
BEGIN EDITTEXT IDC_DISPLAY, 0, 0, 80, 14, ES_RIGHT
PUSHBUTTON "+", IDC_ADD, 0, 14, 20, 20
PUSHBUTTON "1", IDC_EINS, 20, 14, 20, 20 END
|
C++: |
// rechner.h
#include "resource.h"
class CRechnerApp : public CWinApp { public: virtual BOOL InitInstance(); };
|
C++: |
// rechner.cpp
#include <afxwin.h> #include "rechner.h" #include "rechnerdlg.h"
CRechnerApp App;
BOOL CRechnerApp::InitInstance() { CRechnerDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); return FALSE; }
|
C++: |
// rechnerdlg.h
class CRechnerDlg : public CDialog { public: CRechnerDlg(CWnd* pParent = NULL);
double m_Anzeige; double m_ZwischenSpeicher; double m_Ergebnis; double m_Zahl; double m_test;
void OnClickedAdd(void); void OnClickedNum();
protected: virtual void DoDataExchange(CDataExchange* pDX);
HICON m_hIcon;
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP() };
|
C++: |
// rechnerdlg.cpp
#include <afxwin.h> #include "rechner.h" #include "rechnerdlg.h"
CRechnerDlg::CRechnerDlg(CWnd* pParent) : CDialog(IDD_DIALOGFELD, pParent), m_Anzeige(0) { m_test = 5; m_ZwischenSpeicher = 0; m_Ergebnis = 0; m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
void CRechnerDlg::DoDataExchange(CDataExchange* pDX) { DDX_Text(pDX, IDC_DISPLAY, m_Anzeige); CDialog::DoDataExchange(pDX); }
BEGIN_MESSAGE_MAP(CRechnerDlg, CDialog) ON_BN_CLICKED(IDC_ADD, OnClickedAdd) ON_BN_CLICKED(IDC_EINS, OnClickedNum) END_MESSAGE_MAP();
BOOL CRechnerDlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); return TRUE; }
void CRechnerDlg::OnClickedAdd(void) { UpdateData(TRUE); if(m_ZwischenSpeicher == 0) { if(m_Ergebnis != 0) { m_ZwischenSpeicher = m_Ergebnis + m_Anzeige; m_Anzeige = m_ZwischenSpeicher; } m_ZwischenSpeicher = m_Anzeige; } else { m_Ergebnis = m_ZwischenSpeicher + m_Anzeige; m_Anzeige = m_Ergebnis; m_ZwischenSpeicher = 0; } UpdateData(FALSE); }
void CRechnerDlg::OnClickedNum() { UpdateData(TRUE);
m_Zahl = 1; m_Anzeige = m_Zahl;
UpdateData(FALSE); }
|
Danke schon mal im Voraus für die mühe.
Edit: Smilie entfernt :) Dieser Post wurde am 23.03.2003 um 21:16 Uhr von Uwe editiert. |