gpt4 book ai didi

c++ - 在 wxFrame 上处理来自 wxTextCtrl 的事件 - C++/wxWidgets

转载 作者:太空狗 更新时间:2023-10-29 20:17:50 32 4
gpt4 key购买 nike

我有一个 MyFrame 派生自 wxFrame。一个 wxTextCtrl 被添加到这个框架。我可以在框架中处理此文本控件的 EVT_KEY_DOWN 吗?类似的东西,

BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
EVT_KEY_DOWN(MyFrame::OnKeyDown)
END_EVENT_TABLE()

上面的代码似乎不起作用。文档说这样的事件只能由发起事件的对象处理。那么我是否应该继承 wxTextCtrl 来处理这个问题并以某种方式将信息发送到框架?

这样做的最佳方法是什么?

最佳答案

wxCommandEventwxNotifyEvent来自子控件的类型事件被设置为自动向上传播到父框架。然而,wxKeyEvent源自 wxEvent所以它不会传播到父框架。那么,您可以使用动态事件处理程序将一些事件路由到任何 wxEvtHandler派生对象。

在 wxWidgets 2.8 下你应该使用 wxEvtHandler::Connect .此方法描述 here .您也可以查看 this sample code .

在 wxWidgets 2.9 和 SVN 下你应该使用 wxEvtHandler::Bind<> :

MyFrame::MyFrame(...)
{
m_textcontrol->Bind(wxEVT_KEY_DOWN, &MyFrame::OnTextControlKeyDown, this);
}

wxEvtHandler::Bind<>方法描述here .

关于c++ - 在 wxFrame 上处理来自 wxTextCtrl 的事件 - C++/wxWidgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5813693/

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