Bei MessageBox Ping abschalten



  • Danke WebFritzi!
    Der Link hat sehr geholfen. Und für alle, die es interessiert, so macht man eine MessageBox ohne Sound:

    MSGBOXPARAMS MsgParam;
    MsgParam.cbSize=sizeof(MSGBOXPARAMS);
    MsgParam.hwndOwner=Application->Handle;
    MsgParam.hInstance=NULL;
    MsgParam.lpszText="Diese MessageBox \"plingt\" nicht!";
    MsgParam.lpszCaption="Titel";
    MsgParam.dwStyle=MB_USERICON|MB_YESNO;
    MsgParam.lpszIcon=IDI_ASTERISK;
    MsgParam.dwLanguageId=LANG_NEUTRAL;
    MessageBoxIndirect(&MsgParam);
    

    Wichtig ist dabei das Flag MB_USERICON, weil Windows diesem Flag keinen Sound zuordnen kann.

    Phips



  • Einwandfrei recherchiert (-;

    ...und damit wir nun das blöde Struct wieder loswerden, setzen wir einfach MB_USERICON bei den üblichen Flags bei dem MessageBox-Aufruf ein und alle sind glücklich:

    MessageBox(Application->Handle, "Diese Message \"plingt\" auch nicht", "Titel", MB_OK | MB_USERICON | MB_ICONASTERISK);

    -junix



  • Original erstellt von junix:
    alle sind glücklich

    Ganz sicher? Ich hatte das hier auch getestet, allerdings "nur" mit dem Kommandozeilencompiler. Und dort erscheint bei der Kombination MB_USERICON | MB_ICONASTERISK überhaupt kein Icon mehr.



  • naja der 'beep' ist weg, aber das icon MB_ICONASTERIX wird nicht mehr angezeigt wird, wenn man es direkt setzt!

    [ Dieser Beitrag wurde am 26.03.2003 um 13:44 Uhr von Sunday editiert. ]



  • Es geht eigentlich nur mit der Struct-Methode einwandfrei. Bei den Standard-Methoden wird das Icon verschluckt. 😞

    Phips



  • Hmmm merkwürdig... bei mir hats - als ich das vorhin schnell getestet habe - gut funktioniert... naja, wie das hald so ist mit schnellen tests. vielleicht hab ich da was verbockt... (: Tschuldigt

    -junix



  • @Phips: Sauber! Ich hab da auch damit versucht. Nur bin ich nicht auf die gloreiche Idee gekommen, bei lpszIcon was einzusetzen. 🙄 Allerdings hatte ich auch versucht, ne Messagebox ohne Sound und ohne Icon hinzubekommen. Wenn es so deinen Vorstellungen entspricht, ist ja alles wunderbar. 🙂



  • Blöde Frage, aber: Kann man dem Parameter "MB_USERICON" ein Icon nach Wahl(z.B nicht das Icon, welches man für das eigene Prog nimmt, aber ein anderes...) zuweisen? 😕

    Ich habe festgestellt, das bei dem Office-Installer bei Installationsabbruch die MessageBox das "Office-Logo"-Icon beinhaltet. 😮



  • Ja das funktioniert. Schau dir mal in der Ms-Hilfe den Punkt MSGBOXPARAMS an. Da ist eigentlich alles genau beschrieben.

    Phips



  • Herrje... nein... Nichts gefunden... (Oje...) MSGBOXPARAMS hat bei mir keinerlei Wirkung in der MS-Hilfe...

    [ Dieser Beitrag wurde am 27.05.2003 um 10:14 Uhr von Bowser editiert. ]



  • Dann gibts genau zwei Möglichkeiten. Entweder Du installierst dir noch nachträglich die Ms-Hilfe von der Borland-CD dazu (Wird meines Wissens nach leider NICHT standardmäßig installiert) oder Du guckst direkt bei Microsoft vorbei.

    Gruß,
    Phips



  • Grundsätzlich hat diese Frage auch nichts mehr mit der Ursprünglichen Frage zu tun. Bitte weitere Nachfragen in einem neuen Thread machen.

    -junix



  • Original erstellt von Bowser:
    **Herrje... nein... Nichts gefunden... (Oje...) MSGBOXPARAMS hat bei mir keinerlei Wirkung in der MS-Hilfe...
    **

    LOOOOOOOOOOOOOOOOOL du hast jetzt 2 monate fürs suchen gebraucht? har har



  • Was haltet ihr davon diese | durch + zu ersetzen?
    also:

    Application->MessageBox("Sind Sie sicher, dass Sie den PC herunterfahren möchten?"," ",MB_YESNO+MB_ICONASTERISK+MB_USERICON);



  • Apropos, weiß einer den Befehl zum PC herunterfahren, der bei Win98 bis Win XP funktioniert? Also bei Win98 ist es rundll32.exe user,exitwindows, und bei XP?



  • Original erstellt von Spieleprogrammierer:
    Apropos, weiß einer den Befehl zum PC herunterfahren, der bei Win98 bis Win XP funktioniert? Also bei Win98 ist es rundll32.exe user,exitwindows, und bei XP?

    Was hat das mit diesem thread zu tun?

    Achja, das mit dem + kann nicht funktionieren, da dies keine Logische Verknüpfung ist. 😉



  • Spieleprogrammierer:

    1. Apropos wovon? Wo gehts in diesem Thread ums Herunterfahren?
    2. Die Frage gehört doch klar ins WinAPI Forum? (Vielleicht dort mal Suchfunktion bemühen?)
    3. In diesem speziellen Fall ist das Ersetzen von | durch + ungefährlich, da es sich um Konstanten handelt, die jeweils nur 1 Bit gesetzt haben (0x01, 0x02, 0x04, etc). Ich würd aber darauf verzichten und trotzdem die logischen Verknüpfungen verwenden.
    4. Vielleicht solltest auch du dich endlich an die Boardregeln halten: Pro Frage 1 Thread, pro Thread eine Frage.

    Weitere Beiträge die nichts mit dem Abschalten des Systemtons beim Anzeigen einer Messagebox zu tun haben, werden ab sofort kommentarlos gelöscht. Weitere Fachfragen bitte in neuen Threads stellen. Probleme mit Usern, Ergänzungen zu off-topic-Aussagen von usern, Gemecker über User sind per Mail an den betroffnen User oder, sollte man sich dazu nicht im Stande fühlen, in einem Thread Neuigkeiten oder Offtopic-Forum zu erörtern.

    -junix



  • Original erstellt von PuppetMaster2k:
    Achja, das mit dem + kann nicht funktionieren, da dies keine Logische Verknüpfung ist. 😉

    Und ob, ich habs getestet, denn ich programmiere schließlich damit 😉

    Und wenn man's genau nimmt, dann stellt man damit ja den Ton aus, wenn man den PC herunterfährt 🙂 Scherz...

    [ Dieser Beitrag wurde am 27.05.2003 um 12:53 Uhr von Spieleprogrammierer editiert. ]



  • Vieleicht solltest du mal den Thread zuende lesen bevor du postest, junix hat dazu was geschrieben eine Stunde vor deinem Post 🙄

    Es geht schon, aber führt in speziellen Fällen, zum beispiel wenn
    #define MB_USERICON 0xC0 ist, also mehr als eine 1 im binärcode vorkommt.



  • Zu was führt das dann?


Anmelden zum Antworten