如何将click事件侦听器添加到使用wxWidgets创建的自定义控件中?自定义控件使用wxWindow作为基础。在事件列表中,我看到了
wxEVT_LEFT_DOWN
wxEVT_LEFT_UP
wxEVT_LEFT_DCLICK
wxEVT_MIDDLE_DOWN
wxEVT_MIDDLE_UP
wxEVT_MIDDLE_DCLICK
wxEVT_RIGHT_DOWN
wxEVT_RIGHT_UP
wxEVT_RIGHT_DCLICK
wxEVT_MOTION
wxEVT_ENTER_WINDOW
wxEVT_LEAVE_WINDOW
wxEVT_MOUSEWHEEL
但没有wxEVT_LEFT_CLICK
或类似的。
答案 0 :(得分:4)
通常,没有“点击”事件(如果是wxWidgets - there isn't )。点击操作分为两部分:鼠标向下和鼠标向上。通常,您认为“左键单击”事件实际上是在“左上”事件中处理的。
尝试一下:
这一次:
答案 1 :(得分:2)
在第一个例子中,我建议继承wxControl而不是wxWindow,wxControl是为了这个目的而设计的,你不太可能发现自己正在与系统作战。当我查看我在自己的wxWidgets应用程序中构建的控件时,我看到我的单击处理程序已附加到wxEVT_LEFT_DOWN。查看我使用wxWidgets的跨平台GUI编程副本,我可以看到所有wxMouseEvents的列表,并且没有wxEVT_LEFT_CLICK。我建议wxEVT_LEFT_DOWN是要使用的事件。
现在发布后我已经阅读了Burly的回答并且我同意他的看法,wxWidgets提供最低级别的活动,让您可以最大程度地控制为用户构建的用户界面。