Form schließt schneller als Midi-Device



  • Hallo,

    in einer Midi-Anwendung soll vorm Schließen des Programms das Midi-Device geschlossen werden (u.a. um evtl. noch klingende Töne zu beenden).

    In Variante A funktioniert es wie gewünscht, sobald der Dialog geöffnet wird. - Aber am Ende eines Programms einen Dialog wegklicken, ist ja äußerst unschön.

    In Variante B blende ich als Alternative dazu einen Ende-Bildschirm ein, der nach drei Sekunden automatisch geschlossen wird. Aber leider wird das Midi-Device nicht geschlossen.

    Woran kann das liegen? Verhält sich ein Form anders als eine Dialog?

    Variante A

    void __fastcall TForm_Main::FormClose(TObject *Sender,
          TCloseAction &Action)
    {
    
        DM->sub_MidiDevice_schliessen();
    
        MessageDlg("Hier bei FormClose"
          , mtInformation, TMsgDlgButtons() << mbOK, 0);
    
    }
    

    Variante B

    void __fastcall TForm_Main::FormClose(TObject *Sender,
          TCloseAction &Action)
    {
    
        DM->sub_MidiDevice_schliessen();
    
        // Form mit Timer, das nach 3 Sekunden geschlossen wird
        Form_Ende = new TForm_Ende(Application);
        Form_Ende->ShowModal();
        delete Form_Ende;
    }
    

    Gruß
    Leo



  • Viel interessanter/relevanter wäre vermutlich der Code aus sub_MidiDevice_schliessen(), ggf. auch der Code, mit dem du das Device öffnest.



  • Setz in DM->sub_MidiDevice_schliessen();
    ne Variable. Deine Form bendet, wenn Variable gesetzt wurde! (Das kannste mit nem Timer abfragen)

    Als Variable geht z.B. Form1->Tag


Anmelden zum Antworten