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

C++ wxWidget按下了哪个按钮(wxButton)?,c++,event-handling,wxwidgets,C++,Event Handling,Wxwidgets,我正试图使用这段代码创建一个按钮数组 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, &

我正试图使用这段代码创建一个按钮数组

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);
}
for(int i=0;i<10;i++)
{
wxButton*btn_random=新的wxButton(这个,wxID_ANY,_T(“按钮”+std::to_字符串(i)),wxPoint(250,10*i+10*i),wxSize(60,25),0);
btn_random->Bind(单击wxEVT_命令_按钮,&MyFrame::on按下此按钮);
}
在OnPressed函数(wxCommandEvent&event)中,我可以获得按钮的唯一Id,但我想更改和修改OnPressed函数中的按钮。我该怎么做


此外,我还了解到,在使用wxWindow::GetWindowById(id)时可以强制转换wxWindow,但我无法使用此方法。

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


请注意,与您的问题无关,但是单击的
wxEVT\u命令\u按钮
很长且很难操作,并且仅在当前才存在兼容性,只需使用
wxEVT\u按钮

而不是
wxID\u ANY
您应该提供此按钮的特定唯一ID,因此,您将能够确定按下了哪个按钮。@Arkady使用wxID_ANY为它分配了一个唯一的ID。我也尝试过wxNewId(),但有时会出现重复(如0和0或32724和32724)。当我打印event->GetId()时,OnPressed函数中的每个按钮都是唯一的