MessageBox in einem Programm



  • Hallo hier der code

    #include<cmath>
    #include<sstream>
    #include<string>
    #include<windows.h>
    #include<iostream>
    #define STRICT
    using namespace std;
    double gesamt;
    int main()
    {
    cout<<"Geben sie die erste Zahl ein!\n";
    double a;
    cin>>a;
    cout<<"Und die zweite Zahl bitte!\n";
    double b;
    cin>>b;
    gesamt=pow(a,b);
    cout<< gesamt;
    system("Pause");
    }
    int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,PSTR cmdline, int cmdshow)
    {
        ostringstream Str;
        Str<< gesamt;
        string NeueZahl(Str.str());
        MessageBox(NULL,gesamt,"Ergebnis",MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON1);
    
    }
    

    also ich wollte versuchen nach meiner berechnung, das ergebnis in einer messagebox ausgeben zu lassen nur irgendwie funktioniert das nicht, ich shcicke euch ma die fehler

    6:1 C:\Dev-Cpp\test.cpp [Warning] "STRICT" redefined 
    4 C:\Dev-Cpp\include\windows.h:48,               from C:\Dev-Cpp\test.cpp In file included from C:/Dev-Cpp/include/windows.h:48,               from C:\Dev-Cpp\test.cpp 
    205:1 C:\Dev-Cpp\include\windef.h [Warning] this is the location of the previous definition 
     C:\Dev-Cpp\test.cpp In function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':
    26 C:\Dev-Cpp\test.cpp cannot convert `double' to `const CHAR*' for argument `2' to `int MessageBoxA(HWND__*, const CHAR*, const CHAR*, UINT)'
    

    jetzt weiß ich nich ob das überhaupt geht was ich machen will aber es kommt ein fehler,könnt ihr mir helfen



  • Wo ist dein Problem? Das dein Code Schwachsinnig ist vllt ...

    #include <iostream>
    #include <cmath>
    #include <windows.h>
    #include <sstream>
    
    #pragma comment(lib, "user32.lib") // brauchst de für die MessageBox ... nur ein Header ist zwar nett ... aber die Library sollte dabei sein.
    
    int main()
    {
    	std::cout << "Zahl 1: " << std::flush;
    	double number_one = 0.0;
    	std::cin >> number_one;
    	std::cout << "Zahl 2: " << std::flush;
    	double number_two = 0.0;
    	std::cin >> number_two;
    	std::ostringstream ss;
    	ss << std::pow(number_one, number_two);
    
    	std::cout << ss.str() << std::endl;
    	MessageBoxA(NULL, ss.str().c_str(), "Info", MB_OK | MB_ICONINFORMATION);
    }
    


  • ok mit deinem gehts, aber ich habe ma probiert, es geht auch ohne der Lib. und dann habe ich noch ne frage wozu kommt das std:: da mit rein, das verstehe ich nich ganz.



  • Ja das kann ohne die Library gehen, wenn dein Linker die automatisch als Standard mitlinkt. Sonnst braucht man die.

    Das std:: heißt nur das die Funktionen aus dem Namespace std kommen.



  • und ich habe es ma ohne std probiert, wieso geht das programm dann nicht ohne std, oder wozu brauche ich denn in dem programm das std??



  • Weil der Compiler dann die Funktionen nicht findet? Kann es sein das du die Grundlagen nicht beherrschst? Namespaces gehören dazu ...



  • naja doch schon, nur ich habe die namespace funktion nie so richtig begriffen auch in dem jetzigen zusammenhang



  • die "standart" Funktionen liegen im namespace std damit man sie nicht verwechseln kann was schonmal vorkommen kann wenn man bedenkt wie viele Funktionen da drin sind. Damit man auf Funktionen auf Funktionen in dem Namespace zugreifen kann braucht man das std::
    Wenn du das nicht immer schreiben willst (was ich dir aber rate) dann benutzt das hier:

    using namespace std;
    

    Das fügt den Namespace std automatisch zu dem aktuellen hinzu.

    mfg tobZel



  • Wobei mit

    tobZel schrieb:

    die "stan****" Funktionen

    alle C++-Funktionen gemeint sind.

    tobZel schrieb:

    Wenn du das nicht immer schreiben willst (was ich dir aber rate) dann benutzt das hier:

    using namespace std;
    

    Das fügt den Namespace std automatisch zu dem aktuellen hinzu.

    Wenn man soetwas macht, sollte man es aber lokal verwenden, da man sonst (bei Benutzung in einem Header beispielsweise) das Prinzip der Namenskonfliktverhinderung (schönes Wort 😃 ) wieder aushebelt.
    Beispiel:

    #include <iostream>
    
    int main()
    {
       using namespace std;
       cout << "Hello World!" << endl;
       return (0);
    }
    

    In einem Header ist dies noch wichtiger (kein Bock n komplettes Beispiel zu tippen 🕶 ).


Log in to reply