Il est maladroit d' avoir envoyé ton ON_ERROR à la même routine que ON_CLOSE, et même la même routine que la ligne de menu pour fermer le programme.
Ce sont des actions de nature différente. Tu devrais envoyer chacune à un sous-programme différent. Dans la routine appelée par ON_ERROR, tu peux gérer ta situation d'erreur, faire ron beep, afficher un message, etc. Et si tu le décides, tu peux faire TERMINATE.
La routine ON_CLOSE est appelée chaque fois que la form 0 est fermée par la croix rouge. Il n'y a aucune suite possible. La commande RETURN de cette routine retourne au système qui simplement termine le process Windows qui contient le programme Panoramic. Ne fais PAS de commande TERMINATE dans cette fonction !
La routine appelée par le menu pour fermer le programme est la seule qui s'exécute dans un contexte "normal". Tu peux y poser la question "Voulez-vous vraiment sortir ?", et si la réponse est négative, ti fais simplement RETURN et tu restes dans le programme. Tu peux aussi y faire TERMINATE, le RETURN après cvela est iinutile car jamais exécuté. Par contre, ta routine ON_CLOSE sera appelée dans ce cas car la form 0 sera fermée par TEMINATE.
Tu vois, le mélange des genres peut provoquer des réactions inattendues !