Wie bekomme ich den Text einer string Var in eine MessageBox???



  • Nun habe ich aber schon das nächste Problem - oder besser gesagt zwei...

    1. Mein Quellcode sieht nun wie folgt aus:

    #include <windows.h>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    main()
    {
    string tester="Testtext";    
    ifstream Datei;
    Datei.open("nachricht.txt");
    getline(Datei,tester);
    MessageBox (NULL,tester.c_str(),"Titel", MB_ICONEXCLAMATION);
    return 0;
    }
    

    Hierbei liest er ja die erste Zeile der Datei nachricht.txt (welche dann im gleichen VZ wie die Programm.exe liegt) aus und gibt sie in der MessageBox aus.
    Doch kann man es auch schaffen das mehrere Zeilen der Datei ausgelesen und dann in die MessageBox gepackt werden???
    Wenn ja, wie???

    2. Gibt es eine Möglichkeit Text (-teile) innerhalb der MessageBox zu formatieren? Also die Farbe und evtl. Schriftgröße zu ändern?!

    Ich habe da was gefunden:

    MessageBox(Handle,Format("...").c_str(), "Titel", MB_OK);
    

    Ich weis nicht ob das mit dem Format ein Ansatz wäre, zumal ich dazu keine weiteren Beschreibungen finde. Nur diesen Codeschnipsel...

    Daher die Frage, ob und was man da tun kann...
    Danke nochmal,
    Jafix



    Indem du die gesamte Datei ließt?

    #include <string>
    #include <sstream>
    #include <fstream>
    
    #include <windows.h>
    
    int main( ) {
    
    	const char file_name[ ] = "news.txt";
    	std::ifstream input_file( file_name );
    
    	if( !input_file ) {
    
    		std::stringstream error_message;
    
    		error_message << "Die Datei \"" << file_name << "\" konnte nicht geöffnet werden!";
    		MessageBox( 0, error_message.str( ).c_str( ), "Fehler:", MB_ICONEXCLAMATION );
    		return EXIT_FAILURE;
    	}
    
    	std::stringstream news;
    
    	std::copy(
    
    		std::istreambuf_iterator< char >( input_file ),
    		std::istreambuf_iterator< char >( ),
    		std::ostreambuf_iterator< char >( news )
    	);
    
    	MessageBox( 0, news.str( ).c_str( ), "Die Nachrichten:", MB_ICONINFORMATION );
    }
    

    Mit formatieren ist da nix. Du kannst Dir Deinen eigenen Dialog bauen und ein RichEdit nehmen.

    greetz, Swordfish



  • Danke! Das funktionier!

    Doch wäre es evtl. noch möglich das du den Quellcode noch kommentierst? (Ausführlich?!) Denn ich würde ihn gerne verstehen und nicht einfach nur kopieren...
    Ich mein... Ich will es ja schließlich lernen und nicht nur von anderen machen lassen!



  • Aso bitte!? Schau Dir in Deiner C++ Referenz die Beschreibungen der verwendeten Klassen an, und frag' nach, wenn Dir etwas unklar ist.

    greetz, Swordfish



  • Swordfish schrieb:

    Aso bitte!? Schau Dir in Deiner C++ Referenz die Beschreibungen der verwendeten Klassen an, und frag' nach, wenn Dir etwas unklar ist.

    greetz, Swordfish

    Also bitte?? Ja klar, warum auch einem helfen, der etwas verstehen will und nicht nur kopieren.
    Wozu schreibst du dann hier überhaupt in einem Forum? Erst hilfst du ihm und dann willst du ihm nicht weiterhelfen?? Und beantwortest seine Bitte mit "Also bitte!?" Ja dir war wohl auch früher als Anfänger alles klar und du hast dich gefreut, wenn man dir gesagt hat: "Finds doch selber raus". Sei doch froh, dass er nicht einfach auf vorgefertigten Code gewartet hat. Jemanden in einem, wohlgemerkt, "Forum" so weiterzuhelfen....Respekt!

    @Jafix

    const char file_name[ ] = "news.txt";
         std::ifstream input_file( file_name );
    

    Dies hier macht ncihts anderes als deine Variante. Es wird dem ifstream nur schon während der Deklaration ein Dateiname in Form des Array übergeben. So muss auch nicht explizit input_file.open() benutzt werden.

    Was

    if( !input_file ) {
    
            std::stringstream error_message;
    
            error_message << "Die Datei \"" << file_name << "\" konnte nicht geöffnet werden!";
            MessageBox( 0, error_message.str( ).c_str( ), "Fehler:", MB_ICONEXCLAMATION );
            return EXIT_FAILURE;
        }
    

    bedeutet kann ich dir nicht 100% sagen, aber ich denke das ist wohl auch schon selbsterklärend.

    std::stringstream news;
    
        std::copy(
    
            std::istreambuf_iterator< char >( input_file ),
            std::istreambuf_iterator< char >( ),
            std::ostreambuf_iterator< char >( news )
        );
    

    was das genau ist, weiß ich leider auch nicht so genau. Aber ich nehme mal an, das std::istreambuf_iterator< char >( input_file ), wohl einen Puffer darstellt und die komplette Datei einliest.
    Und std::ostreambuf_iterator< char >( news ) gibt es weder aus.

    Mehr kann ich dir dazu auch nicht sagen. Hoffe hier schreibt dir noch jemand was genau alles bedeutet.



  • @Swordfish
    Womit hast du deine 1800 Beiträge vollbekommen? Waren das wirklich alles "Beiträge"?



  • cored schrieb:

    @Swordfish
    Womit hast du deine 1800 Beiträge vollbekommen? Waren das wirklich alles "Beiträge"?

    Lapp hier nicht so rum, Swordfish hat ja wohl genug geholfen und das er dann möchte, dass Jafix sich selber ein bisschen damit auseinandersetzt ist ja wohl nicht zu viel verlangt. Das sollte auch kein problem für Jafix sein, wenn er wirklich lernen will. ich weiß schon warum viele keine lust mehr haben ganzen code als hilfe zu posten, weil sie dann gleich wieder angemacht werden, warum sie nicht noch eine ausführliche dokumentation dazu geschrieben haben.
    Du sagst es ja selber, es ist ein Forum (lat. für Marktplatz). Hier ist niemand verpflichtet zu helfen und wie er dann hilft ist ihm überlassen. D.h. es ist ein nehmen und geben und kein geben und dann von einer anderen seite noch einen aufn deckel kriegen, weil er nicht genug gegeben hat.



  • cored schrieb:

    Swordfish schrieb:

    Aso bitte!? Schau Dir in Deiner C++ Referenz die Beschreibungen der verwendeten Klassen an, und frag' nach, wenn Dir etwas unklar ist.

    greetz, Swordfish

    Also bitte?? Ja klar, warum auch einem helfen, der etwas verstehen will und nicht nur kopieren.
    Wozu schreibst du dann hier überhaupt in einem Forum? Erst hilfst du ihm und dann willst du ihm nicht weiterhelfen?? Und beantwortest seine Bitte mit "Also bitte!?" Ja dir war wohl auch früher als Anfänger alles klar und du hast dich gefreut, wenn man dir gesagt hat: "Finds doch selber raus". Sei doch froh, dass er nicht einfach auf vorgefertigten Code gewartet hat. Jemanden in einem, wohlgemerkt, "Forum" so weiterzuhelfen....Respekt!

    Wie bist Du denn drauf 😡, und das noch als ⚠ "Unregistrierter" ⚠ . Immerhin hat er dem Jafix einigemale geholfen. Swordish ist nebenbei berufstätig und hat vermutlich noch anderes zu tun, als jemandem sein C++ vorzukauen. Ist es zu viel verlangt, daß man mal in eine Referenz schaut und selbst nachließt? Für Jafix ist das die gleiche Arbeit.



  • @Fake oder Echt, Elektronix: Danke.

    @cored (obwohls wohl zwei coreds sind...):

    cored schrieb:

    Ja dir war wohl auch früher als Anfänger alles klar und du hast dich gefreut, wenn man dir gesagt hat: "Finds doch selber raus".

    Tatsächlich _hab'_ ich's selbst rausgefunden, denn ich habe mir C im Alleingang beigebracht - damals mit 12 Jahren noch ohne Internetzugang. Ich hatte also nicht den "Luxus" bei jedem schmarrn auf fremdes Know How zurückgreifen zu können. Desweiteren behalte ich mir vor, zu helfen, wie ich will, und nicht, wie es mir irgendein Unregistrierter vorschreiben zu müssen glaubt...

    greetz, Swordfish

    PS: Ich hab' ihm Hilfe angeboten, wenn er eine konkrete Frage™ hat.



  • Danke für die Erklärungen - das hat (mir als Noob) schon etwas weiter geholfen!


Anmelden zum Antworten