MessageBox mit multilines



  • eine messagebox die multiline ist (im editor) wie die folgende:

    MessageBox(NULL, "lala1 "
                     "lala2 "
                     "lala3 "
                     "lala4", "titel", 64);
    

    klappt problemlos zum compilieren. was muss ich jedoch machen wenn jedes lala noch von einer funktion eingelesen wird, beachten? dann kriegt man eben einen fehler wie ")" fehlt beim funktions aufruf.

    MessageBox(NULL, Funktion("lala1 ")
                     Funktion("lala2 ")
                     Funktion("lala3 ")
                     Funktion("lala4"), Funktion("titel"), 64);
    

    das lösen mit einem + am ende jeder zeile geht ja bei const char nicht. da kriegt man einen unzulässigen zeigeradditions fehler. wie mache ich dem compiler also klar das die anweisungen nicht beendet sind, sondern eben auf multiline bezogen wie das erste beispiel.



  • Ein Zeilenumbruch wir üblicherweise mit
    "Zeile1\r\nZeile2"
    erzeugt



  • ich weis. es geht mir aber nicht um den zeilenumbruch sondern darum, das ich auf dem editor alles sehen kann. deswegen der editor line unterbruch. die messagebox wird so dann als eine line angezeigt.



  • gewöhn dir gleich die parameter-angabe von planko-zahlen ab! siehe winuser.h oder in die hilfe fuer die bezeichner der messagebox-flags.

    wenn du funktionen aufrufst, die einen string zurueckgeben, musst du den string natuerlich mit den anderen string verknüpfen. wenn du nur "bla" "fasel" schreibst, macht das der compiler fuer dich automatisch zu einem "blafasel".

    AnsiString Msg_1(AnsiString text) { return text; }
    AnsiString Msg_2(AnsiString text) { return text; }
    AnsiString Msg_3(AnsiString text) { return text; }
    AnsiString Msg_4(AnsiString text) { return text; }
    AnsiString MsgTitle(AnsiString text) { return text; }
    
    // MessageBox erwartet char* (c_str())
    MessageBox(NULL, (Msg_1("Ich ") +
                      Msg_2("bin ") +
                      Msg_3("eine ") +
                      Msg_4("MessageBox ")).c_str(), MsgTitle("Titel").c_str(), 
                      MB_ICONASTERISK);
    


  • misst ich muss mich korrigieren. die funktion ist nicht String sondern auch char* ... wie geht es dann? somit klappt das mit dem + leider nicht.



  • Im BCB1 mach ich das so:

    MessageBox(NULL, "lala1\
                      lala2\
                      lala3\
                      ...viele lalas...", "titel", 64);
    

    weißn nich, obs mit anderen Versionen auch klappt..



  • Hallo,

    char* addiert man mit strncpy. Alternativ kannst du das Ergebnis deiner Funktion in AnsiString umwandeln und die dann einfach addieren.


Anmelden zum Antworten