Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Anfänger-Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.03.2005, 12:17 Uhr
BoeserWest



Hi leute,

ich sollte aus einer Konsolenanwendung (Taschenrechner) eine objektorientierte Anwendung machen ... gesagt getan, dass hab ich ja noch hinbekommen....

nun muss ich aber mein objektorientiertes in ein windows programm also mit userform erstellen... die userform erstellen ist ja kein problem, ne edit box und paar buttons ... aber wie kann ich diese buttons usw mit meiner klasse und deren ereignisse usw koppeln?
oder gibts noch ne andere lösung?
hier mal der code


C++:
//Einfaches Taschenrechenprogramm

#include <iostream.h>
#include <conio.h>
#include <dos.h>

class Taschenrechner
{
private:
    char Wahl;
    float Zahl1, Zahl2, Ergebnis;

public:
    Taschenrechner (float x=0)
    {
        Zahl1=x;
        Zahl2=x;
        Ergebnis=x;
    }

    ~Taschenrechner (){}

    void Eingabe ()
    {
        cout << "Taschenrechner\n";
         cout << "==============\n\n\n";
        cout << " Zahl_1 :              "; cin >> Zahl1;
         cout << " Eingabe (+, -, *, /): "; cin >> Wahl;
         cout << " Zahl_2 :              "; cin >> Zahl2;
    }

    void Berechnung ()
    {
        switch(Wahl)
            {
                case '+':
                    Ergebnis = Zahl1 + Zahl2;
                    break;
                case '-':
                    Ergebnis = Zahl1 - Zahl2;
                    break;
                case '*':
                    Ergebnis = Zahl1 * Zahl2;
                    break;
                case '/':
                    Ergebnis = Zahl1 / Zahl2;
            }
    }

    void Ausgabe ()
    {
        cout << "\nDas Ergebnis\n"
                     << "betraegt               " << Ergebnis;
    }
};





//----------------------------------------------------------------------------
int main () {
    //textbackground(1);
    //clrscr();
    char Nochmal;


do{
      Taschenrechner *Rechnung= new Taschenrechner;
      Rechnung->Eingabe();
      Rechnung->Berechnung();
      Rechnung->Ausgabe();
      delete Rechnung;

        puts("\n\n");
        cout << "Weitere Berechnung?\nEingabe (j/n): ";
        cin >> Nochmal;
        clrscr();
    }while(Nochmal == 'j' || Nochmal == 'J');
    cout << "\n\n\n\tProgrammende ...";
    _sleep(2);
    return 0;
}

//----------------------------------------------------------------------------



also das ganze soll nun mit einer windows oberfläche und nicht mehr in der konsole laufe ...

bin für jede hilfe dankbar

gruß
west

Dieser Post wurde am 10.03.2005 um 12:18 Uhr von BoeserWest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.03.2005, 12:49 Uhr
Diablo



dazu musst du in deinem project erst mal beim linker von console auf windows umstellen!
dann machst du einen winmain thread auf:

C++:
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
//beliebig gestaltetes window)

    UpdateWindow(hWnd);//wenn du buttons/textboxen etc in dein fenster einbaust, solltest du es updaten um diese objecte darzustellen!
    MSG msg;
    // Empfangen der Nachrichten
    while (GetMessage(&msg,NULL, 0, 0) == TRUE)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}



um das ganze zu steuern brauchen wir eine callback funktion:

C++:
LRESULT CALLBACK WfFu(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
/***/
LRESULT CALLBACK WfFu(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
/*hier kannst du alles mögliche steuern; zb wenn wo draufgeklickt(BN_CLICKED) wurde, oder den text einer textbox kannst du mit WM_GETTEXT herrausfinden etc...
du kannst spy++ benützen um die ganzen commands herrauszufinden!*/

    case BN_CLICKED:
        //...

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
}




wie man ein window mit textboxen und buttons gestaltet, kannst du in dem F.A.Q nachlesen oder einfach die suchfunktion verwenden!

gruß, Dia

Dieser Post wurde am 10.03.2005 um 12:52 Uhr von Diablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.03.2005, 13:20 Uhr
Th



Für dein kleines Projekt muß du wohl den Code noch mal neu schreiben (cin und dout funktionieren mit grafischer Oberfläche nicht).
Für größere Programme sollte man die Logik von der Ein- und Ausgabe trennen, so daß man sowohl ein kleines Konsolenprogramm als Test erstellen kann, als auch eine GUI benutzen kann.

P.S. Wenn du nur lokale Variablen verwendest, brauchst du nicht new/delete zu benutzen.


C++:
  Taschenrechner Rechnung;
  Rechnung.Eingabe();
  Rechnung.Berechnung();
  Rechnung.Ausgabe();


Dieser Post wurde am 10.03.2005 um 13:22 Uhr von Th editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.03.2005, 15:49 Uhr
~BoeserWest
Gast


Danke ihr 2 ^^

@ diabolo ....

könntest du mir deine infos nicht evtl. direkt in den code einbauen? wie gesagt, bin anfänger und hab überhaupt kein plan

achso falls das klappen sollte, dass mir jemand den code lauffähig macht, dann bitte ne kurze info, wie ich diese buttons für die grundrechenarten sowie die textbox nennen soll, damit das auch alles harmoniert

noch als kleine anmerkung, der rechner muss nicht mehr können als die grundrechenarten und operationen mit 2 zahlen... also 2+2+2 muss er nicht können lediglich 2+2 oder 2*2

irgendwie schon peinlich, ich habe seit 2,5 jahren anwendungsentwicklung unter borlandbuilder als nebenfach, aber ahnung hab ich so gut wie keine

cu
west
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.03.2005, 16:00 Uhr
Th



Also wenn du den Borland C++ Builder benutzt, dann poste mal im entsprechenden Forum.

Außerdem ist es mit dem BCB sehr einfach, Formulare (Windows) zu erstellen.
Aber wenn du seit 2,5 Jahren dies immer noch nicht kannst, dann kann man dir wohl nicht mehr weiterhelfen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: