代码之家  ›  专栏  ›  技术社区  ›  Adam Vandenberg

获取wxwidgets弹出窗口以在父级被单击时解散的正确方法?

  •  0
  • Adam Vandenberg  · 技术社区  · 16 年前

    前言:Windows上的WXWidgets2.8.10项目。

    我有一个主应用程序窗口(框架中的控件)。如果用户按热键,则弹出窗口(实现为wxdialog)显示在父级中居中。

    我想要的行为是,如果用户单击弹出窗口外部的父窗口,那么弹出窗口将关闭ala endmodal(wxid_cancel)。

    但是如果用户在弹出窗口外点击进入另一个应用程序,弹出窗口就应该留在那里。

    有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  0
  •   BuschnicK    16 年前

    在弹出窗口中处理evt_kill_focus怎么样?在窗口外单击将使单击的窗口接收焦点。

        2
  •  0
  •   mghie    16 年前

    如果要在鼠标被按下到屏幕区域之外时关闭对话框,则需要捕捉鼠标单击。不幸的是,父窗体不会接收它们,因为在显示模式对话框时它被禁用。这种情况发生在系统级,所以在应用程序中不会有任何鼠标消息发送到禁用的窗口(实际上我的第一个想法是使用 wxApp::FilterEvents() ,但由于这个原因,这是无用的)。

    一个办法是使用 CaptureMouse() 方法,该方法可用于将所有鼠标事件定向到具有捕获功能的窗口,即使鼠标光标位于其屏幕区域之外,但位于应用程序的其他窗口之上。

    推荐文章