FXRuby截取窗口关闭

FXRuby截取窗口关闭,ruby,window,modal-dialog,fxruby,Ruby,Window,Modal Dialog,Fxruby,我创建了一个“确认退出”对话框,在退出时提示用户。我已成功地将其连接到“退出”菜单命令,但我还想将其连接到窗口关闭(X)按钮。我该怎么做?我对JavaSwing有一些经验,为了完成这项任务,您必须在调用此提示符的框架中添加一个窗口侦听器。我必须在这里做类似的事情吗?这样做: require 'fox16' include Fox class MyApp < FXMainWindow def initialize(app) @app = app super(app, "

我创建了一个“确认退出”对话框,在退出时提示用户。我已成功地将其连接到“退出”菜单命令,但我还想将其连接到窗口关闭(X)按钮。我该怎么做?我对JavaSwing有一些经验,为了完成这项任务,您必须在调用此提示符的框架中添加一个窗口侦听器。我必须在这里做类似的事情吗?

这样做:

require 'fox16'
include Fox

class MyApp < FXMainWindow
  def initialize(app)
    @app = app
    super(app, "Test", :height => 150, :width => 350, :opts=> DECOR_ALL)
    self.connect(SEL_CLOSE, method(:on_close))
  end

  def create
    super
    show(PLACEMENT_SCREEN)
  end

  def on_close(sender, sel, event)
    q = FXMessageBox.question(@app, MBOX_YES_NO, "Sure?", "You sure?")
    if q == MBOX_CLICKED_YES
      getApp().exit(0)
    end
  end
end

FXApp.new do |app|
  MyApp.new(app)
  app.create
  app.run
end
require'fox16'
包括福克斯
类MyApp150,:宽度=>350,:选项=>DECOR_ALL)
自连接(选择关闭,方法(:打开关闭))
结束
def创建
超级的
显示(放置屏幕)
结束
def on_关闭(发送器、sel、事件)
q=FXMessageBox.question(@app,MBOX_YES_NO,“确定吗?”,“确定吗?”)
如果q==MBOX\u单击了\u是
getApp().退出(0)
结束
结束
结束
FXApp.new do| app|
MyApp.new(应用程序)
app.create
app.run
结束
更安全的退出方式是“getApp().exit(0)”。我使用的是FXRegistry,如果我只使用“exit”退出,它就不会写入磁盘。这就解决了问题。