gpt4 book ai didi

c++ - 如何单击 wxWidgets 处理程序 OnClose 中的按钮?

转载 作者:行者123 更新时间:2023-11-28 04:54:37 25 4
gpt4 key购买 nike

我有一个用于对话框中关闭按钮(右上角)的处理程序和一个用于对话框内添加按钮的处理程序。我的自定义按钮有 wxID_CANCEL 作为 ID。处理程序 OnClose 应该执行处理程序 OnButtonCancel。发生了什么:它关闭了对话框和应用程序,因为对话框在一个被覆盖的 wxApp:OnInit 中。但是 OnButtonCancel 没有被执行。

void Dialog_Test::OnClose(wxCloseEvent& event) {
wxCommandEvent event_button_clicked(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
event_button_clicked.SetEventObject(this);
this->ProcessEvent(event_button_clicked);
}

void Dialog_Test::OnButtonCancel(wxCommandEvent& WXUNUSED(event)) {
wxMessageBox(_("TODO: Dialog_Test::OnButtonCancel")); // <---- not executed
EndModal(wxID_CANCEL);
}

这里发生了什么?

编辑 #1: 在 wxFrame 中,我在 OnClose 中使用 ProcessCommand(wxID_CLOSE_FRAME),但在 wxDialog 中没有 ProcessCommand。

最佳答案

您应该添加一个单独的函数(即 Dialog_Test::DoCancel())并从 Dialog_Test::OnClose()Dialog_Test::OnButtonCancel().

关于c++ - 如何单击 wxWidgets 处理程序 OnClose 中的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47468834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com