【问题标题】:Close wxDialog in wxWidgets在 wxWidgets 中关闭 wxDialog
【发布时间】:2014-05-19 00:41:45
【问题描述】:

如上图所示..

我在 wxWidgets 中创建了一个 wxDialog。用户可以单击“是”或“否”。单击任一按钮后,将打开一个标准对话框,并给出一条简单的消息(覆盖成功或覆盖取消)

单击“是”或“否”后,我希望关闭主对话框(较大的对话框)

void OverwriteDLG::OnButton1Click(wxCommandEvent& event)
{
     wxMessageBox ("Overwrite Complete","CopyMeister v1.0",wxOK);
}

以上代码是“是”按钮的事件处理程序。我尝试了破坏功能,并尝试了关闭功能。我彻底搜索了互联网,但找不到太多帮助。有时程序在语法上工作,但对话框永远不会关闭。

对话框称为 OverwriteDLG

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    我彻底搜索了互联网,但找不到太多帮助。

    下面的页面描述了 wxDialog 类。

    http://docs.wxwidgets.org/trunk/classwx_dialog.html

    根据我对该页面的阅读,如果对话框创建为 modal,则可以使用 EndModal 函数关闭对话框,通过返回码返回用户操作。

    【讨论】:

    • 这意味着我需要一个从 ShowModal() 函数中检索的返回码。此对话框的 ShowModal 函数在另一个类的方法中调用。我将它的值保存在一个全局长整数中。但是,如果它来自不同的类,我如何在 end modal 方法中使用这个变量。我知道这可能是一个愚蠢的问题,但我对 C++ 编程和 wxwidgets 还是很陌生。
    • 您调用 ShowModal 来显示对话框,并且在您调用 EndModal 之前该调用不会返回。您可以将您想要的每个值传递给 EndModal,并且您传递的值将由 ShowModal 返回。
    【解决方案2】:

    近距离使用:this->Close(true);

    【讨论】:

    • 这对于模态对话框来说是错误的,需要使用EndModal() 将其关闭,如已接受的答案中所述。
    • 呃,不,不是吗?问题是关于如何关闭对话框。
    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 2021-02-12
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多