WX:单击文本字段时尝试选择值

时间:2010-09-17 18:01:37

标签: c++ wxwidgets

我们正在实现一个文本字段来进行数字输入。我们将标准wxTextCtrl子类化。行为是当用户决定编辑该值时,他们会得到一个完整的精度版本并被选中。

首次尝试覆盖焦点处理程序,以便在字段获得焦点时,值将以完整和选定的方式显示。除了单击该字段的情况外,此方法效果很好。在这种情况下,调用焦点处理程序并选择值...但在此之后的某个时间取消选择并将编辑点放在鼠标单击发生的位置。我想也许我可以覆盖SetSelection并设置一个调试点,但它似乎使用一些其他方法来设置选择!我不得不走过几英里的事件处理垃圾来弄清楚......我在想鼠标按钮处理程序,但到目前为止我还没有找到任何东西。

如果有人可能已经知道我需要覆盖什么来指出它,那就太好了。我需要在哪里寻找?

2 个答案:

答案 0 :(得分:0)

我会为你的wxTextCtrl尝试这个代码(但我不确定这是你想要的 - 焦点和点击)

m_textCtrl1->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( MyDialog1::LeftDown ), NULL, this );
m_textCtrl1->Connect( wxEVT_SET_FOCUS, wxFocusEventHandler( MyDialog1::SetFocus ), NULL, this );


void LeftDown( wxMouseEvent& event );
void SetFocus( wxFocusEvent& event );

如果您执行的操作被控件的默认(系统)处理程序覆盖,您可以尝试使用'wxPostEvent'来执行您想要的操作(在默认处理之后)。

我还建议使用设计器(对于这个问题,我偷了一些由wxFormBuilder生成的代码)

答案 1 :(得分:0)

答案是它无法完成。我试图覆盖的行为是由win32组件本身实现的,并且wx没有提供任何方法来执行此操作....没有绕过WX来获取win32句柄并使用win32 api。

需要在WX api中编写一个新组件以获得所需的行为。