Wie kann man ein Bild in eine MessageBox einbauen?



  • Folgendes Problem:
    Ein Programm, es öffnet sich auf Schaltflächenklick ein Fenster mit OK und ABBRECHEN.
    Wie kann man Bestimmen das bei Abbrechen die MÈSSAGEBOX Gschlossen wird
    und dass bei Klick auf OK Ein weiteres Fenster Geöffnet wird
    in dem Dann ein bild ist!



  • Ich brauch hilfe!



  • Du brauchst Geduld und ein wenig Hirn.



  • Ich hab gestern erst mit dem Programmieren Angefangen!!



  • ui, dann haste hier noch nix verloren. komm in einem jahr wieder wenn du die grundlagen kannst.



  • So ich will mal nicht so sein und nehme mich deiner an, aber auch ich empfehle dir erstmal die Grundlagen zu lernen bevor du herumprobierst!!!

    ich nehme an es handelt sich um

    Application->MessageBoxA();
    

    bzw

    Aplication->MessageBox();
    

    Dann gibt diese Funktion auch Int Werte zurück und zwar für Ok=1 und für Abbrechen=2(Das kannst du aber auch alles in der Hilfe nachlesen)
    also schreibst du eine Abfrage, ob OK gedrückt worden ist so:

    int MessageB=Application->MessageBoxA("Test","Test",0+MB_OKCANCEL);
    if(MessageB==1)
    {
           //OK gedrückt
    }
    if(MessageB==2)
    {
           //Abbrechen gedrückt
    }
    

    Zu deiner zweiten Frage:
    Dazu brauchst du eine 2te Form und ein TImage in das du dein Bild lädst.
    So in etwas sieht es dann aus, wenn du die 2te Form öffnen willst und die erste schließen.

    int MessageB=Application->MessageBoxA("Test","Test",0+MB_OKCANCEL);
    if(MessageB==1)
    {
           Form1->Hide();
           Form2->Show();
           //OK gedrückt
    }
    if(MessageB==2)
    {
           //Abbrechen gedrückt
    }
    

    so den Rest lies dir bitte in der sehr umfangreichen Hilfe von Borland durch und zumindest für die VCL hat sie gute Erklärungen in Deutsch, falls du dem Englischen nicht mächtig bist. 😉

    Bis Dann



  • Vielen Dank auch!
    Nur wie soll ich das Lernen, wenn mir niemand Antwortet???http://img21.imageshack.us/img21/1036/format6wg.png
    Nur so zur Info:
    Ich habe das ohne Jedgliche fremde Hilfe Geschrieben!!
    und es Funktioniert!!!
    Der Nein-Button haut ab, sobald man mit der Maus auf ihm ist!
    Und bei Kaputt formatieren Fährt windows Runter!!!

    Is nur n Scherz-programm!



  • Sollen wir dich jetzt beglückwünschen, so wie ich das sehe ist das einfachste VCL Bastelei, die wirklich jeder Anfänger hinkriegt. Das hier ist ein Forum was dir fragen beantwortet aber nicht was dir C++ beibringt, da musst du dich schonmal selber bemühen.

    Und den Sinn hinter dem Programm versteh ich nicht, wenn es die Funktionen nur vorgaukelt.



  • @kevinus

    1. Wieso verwendest Du MessageBoxA?

    Bitte verwende die in windows.hpp definierten Konstanten fuer die Rueckgabewerte der Funktion sonst siehst du in nem halben Jahr nicht mehr durch und hast schnell vergessen, wofür 1-9 steht!

    Gleiches gilt für den 3. Parameter von MessageBox (siehe winuser.h)



  • Sunday schrieb:

    1. Wieso verwendest Du MessageBoxA?

    Ich weiß nicht, warum Kevinus das verwendet, aber zumindest bei mir wird bei Codevervollständigung
    immer MessageBoxA angezeigt.

    Gruß,

    Alexander



  • genau wie bei mir daher verwende ich es auch, aber es ist augenscheinlich egal, also Unterschiede habe ich noch nicht festgestellt.

    Und das mit den Zahlen ist reine Gewohnheit, ich lernte es damals mit dem Builder 1 und meinem Buch so und daher verwende ich es auch noch, ich könnte natürlich auch die definierten Zeichenketten nehmen, wenn es zur Übersicht beiträgt.



  • Kevinus schrieb:

    ich könnte natürlich auch die definierten Zeichenketten nehmen, wenn es zur Übersicht beiträgt.

    Nicht könnte, solltest! Speziell dann, wenn du das noch als Beispiel für einen Anfänger zur Verfügung stellst!



  • Ich denke mal der Verückte Bastler will nur ne Messagebox nutzen mit Ausrufezeichen, Fragen zeichen etc erstellen.

    Ich nutze dazu folgenden Code:

    int MessageB= Application->MessageBoxA("Box","Hinweis",68);
    if(MessageB==1)
    {
           //OK gedrückt
    }
    

    zum Verständniss:

    bis zum "Hinweis" ist ja alles klar. zu der "68" diese setzt sich einfach aus den gewünschten Schaltflächen und dem gewünschten Bild zusammen. Einfach folgende Zahlen nutzen:

    Für die gewünschten Schaltflächen in (klammern) stehen die Rückgabewerte

    0 OK(1)
    1 OK und Abrechen(2)
    2 Beenden(3), Wiederholen(4), Ignorieren(5)
    3 Ja(6), Nein(7), Abbrechen
    4 Ja, Nein
    5 Wiederholen, Abbrechen

    zu den Bildern:

    16 Warnkreuz
    32 Fragezeichen
    48 Ausrufezeichen
    64 Infozeichen

    Also zeigt der Code oben eine Message mit Infozeichen und den Schaltflächen Ja, Nein (64+4=68) 😃

    Ich hoffe hier nicht über die Stränge geschlagen zuhaben. 🙄
    Mir hat das Forum mehr als genug geholfen deshalb hoffe ich mit dem Beitrag vieleicht den einen oder anderen geholfen zu haben.

    Grüße Noli



  • Hallo

    und statt der Zahlen selber kannst du auch gleich die Konstanten benutzen, die dafür definiert sind.

    bis bald
    akari



  • akari schrieb:

    Hallo

    und statt der Zahlen selber kannst du auch gleich die Konstanten benutzen, die dafür definiert sind.

    bis bald
    akari

    Die Zahlen sind schon definiert. Ist das gleich ob ich zum beispiel
    MB_OK schreibe oder dafür 1 nehme. Finde es wesentlicher einfacher die ZAhlen zu nehmen als MB_YESNOCANCEL etc zu schreiben.

    😉
    Grüße



  • Einfacher zu schreiben oder einfacher zu lesen?
    Wie oft schreibst Du den Code und wie oft wird der Code wieder gelesen?

    Gruß,

    Alexander



  • Alexander Kempf schrieb:

    Einfacher zu schreiben oder einfacher zu lesen?
    Wie oft schreibst Du den Code und wie oft wird der Code wieder gelesen?

    Gruß,

    Alexander

    ok, beim lesen wird es schwierig für jemanden der die zahlen nicht kennt.
    zum schreiben: ich habe ne Funktion der ich die parameter übergebe. Da übergeb ich einfach die Strings und einen Int- wert und fertig. Die Funktion gibt mir zurück was geklickt wurde und gut.

    Finde es für mich so einfacher 2 Strings 1 int-Wert und zurück kommt ein Int- wert und gut.

    denke mal ist klar wie ichs meine. 😉

    Grüße Noli



  • Noli schrieb:

    denke mal ist klar wie ichs meine. 😉

    Mir nicht.

    Gruß,

    Alexander



  • Alexander Kempf schrieb:

    Noli schrieb:

    denke mal ist klar wie ichs meine. 😉

    Mir nicht.

    Mir auch nicht.

    Was ist denn bitte lesbarer?

    int MessageB= Application->MessageBoxA("Box","Hinweis",68);
    //-- oder
    int MessageB= Application->MessageBoxA("Box","Hinweis",MB_OK + MB_ICONEXCLAMATION);
    


  • ok, würde einfach sagen wir beenden die diskussion. Der eine schreibt so der andere so. Ich gehe davon aus das

    int MessageB= Application->MessageBoxA("Box","Hinweis",MB_OK + MB_ICONEXCLAMATION);
    

    die Regel, und auch eindeutiger ist. Ich habe es eben mit den Zahlen gelernt und habe es so von Anfang an so verwendet, das funzte und warum sollte ich da was ändern?

    Habe mir in der msdn mal das Kapitel MessageBox zugeführt.
    Man kann sich dran gewöhnen es auch mit MB_OK und Co zu schreiben. 😃

    Grüße Noli



  • Noli schrieb:

    das funzte und warum sollte ich da was ändern?

    Vielleicht, weil man ab und zu noch was dazulernt. Mein Code sieht heute auch anders aus als vor fünf Jahren,
    sogar anders als vor einem Jahr.
    Die Aussage "es funktioniert, also ist es richtig" halte ich für nicht ganz korrekt. Was hilft es, wenn Dein Programm
    heute funktioniert, aber in einem halben Jahr eine Änderungsanforderung kommt und Du Deinen eigenen Code nicht mehr
    verstehst, bzw. viel länger dafür brauchst? Dass ein Programm funktionieren sollte, sehe ich als selbstverständlich
    an, aber Wartbarkeit und Erweiterbarkeit halte ich für (fast) genauso wichtig. Und da ist es von großem Vorteil,
    wenn der Code gut lesbar ist.

    Allerdings sind das Betrachtungen, die mit dem ursprünglichen Thema recht wenig zu tun haben 🙂

    Gruß,

    Alexander


Anmelden zum Antworten