wxWidget 按下了哪个按钮(wxButton)?

wxWidget which button (wxButton) was pressed?

我正在尝试使用此代码创建一个按钮数组

for(int i = 0; i < 10; i++)
{
    wxButton *btn_random = new wxButton(this, wxID_ANY, _T("Button " + std::to_string(i)), wxPoint(250, 10*i + 10*i), wxSize(60, 25), 0);

    btn_random->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &MyFrame::OnPressed, this);
}

在函数OnPressed(wxCommandEvent& event)中我可以获得按钮的唯一Id,但是我想在OnPressed函数中更改和修改按钮。我该怎么做?

此外,我了解到在使用 wxWindow::GetWindowById(id) 时可以投射 wxWindow,但我无法使用此方法。

您可以使用 event.GetEventObject() 检索生成事件的对象。但是,您需要 (dynamic_-) 将其转换为正确的类型。如果您想避免这种情况,则需要使用固定 ID,例如MY_BUTTON_OFFSET + i 并将按钮指针自己存储在某处,然后使用 event.GetId() - MY_BUTTON_OFFSET 作为检索它们的索引。

P.S。与你的问题无关,但 wxEVT_COMMAND_BUTTON_CLICKED 又长又笨重,现在只是为了兼容性而存在,只需使用 wxEVT_BUTTON 即可。