Я не нашел подробностей об обнаружении закрытия окна в документации Графика. Как обнаружить это, чтобы я мог вызвать действие при закрытии?Обнаружение закрытия окна OCaml Graphics
спасибо.
Я не нашел подробностей об обнаружении закрытия окна в документации Графика. Как обнаружить это, чтобы я мог вызвать действие при закрытии?Обнаружение закрытия окна OCaml Graphics
спасибо.
Используя простую тестовую программу (включенную в конце этого ответа) и закрытия окна вручную говорит нам, что следующее исключение сгенерировано:
Fatal error: exception Graphics.Graphic_failure("fatal I/O error")
Это означает, что мы можем обрабатывать окно закрывается с помощью с помощью обработчика исключений:
try
(* Here goes the code opening and manipulating the window *)
with
| Graphic_failure("fatal I/O error") ->
(* Here goes the code handling the window being closed manually*)
Тестовая программа (вам нужно запустить ocamlc graphics.cma test.ml -o test
для компиляции):
open Graphics
let rec loop() = loop()
let() =
(*
try
*)
Graphics.open_graph " 400x600";
loop()
(*
with
| Graphic_failure("fatal I/O error") ->
print_string "Caught exception";
print_newline()
*)
Для меня это вызывает «Graphic_failure» («Ошибка Xlib: BadDrawable (недопустимый параметр Pixmap или Window)»). ... Также мои приложения имеют некоторую графику, но управляются терминалом, что-то вроде интерпретатора, поэтому у меня нет цикл для события. У меня все еще есть цикл для команд, поэтому я мог поймать исключение после отправки команды ... Таким образом, временное решение должно соответствовать 'Graphic_failure (« фатальная ошибка ввода-вывода »)' и 'Graphic_failure (« Ошибка Xlib: BadDrawable (недопустимый параметр Pixmap или Window) ")', но как я мог знать, что нет других исключений, которые я должен поймать? –
Даже если я попытаюсь поймать это исключение в моем главном, это приведет к фатальной ошибке. Я окружил код, который запускает команду (текстовую и графическую) с 'try match' для' Graphic_failure' выше, и это не помогает. Я также пытался сопоставить 'Graphic_failure _', и он по-прежнему не помогает ... –