wxWidgets事件焦点textcontrol

时间:2013-09-12 22:16:49

标签: events wxwidgets

我有另外一个关于事件和焦点的wxWidgets问题。

我已经在这里看过教程和这个老问题,但我仍遇到问题C++ Event (Focus) Handling

基本上我有一个带有两个wxTextCtrl元素和一个Button的对话框。 我想要实现的是,当我点击按钮时,它需要告诉我以前哪两个元素有焦点。

在我的Dialog的构造函数中,我创建了所有元素,然后将它们连接到事件处理程序,如下所示:Ttop->Connect(TOP,wxEVT_KILL_FOCUS,(wxObjectEventFunction)&UI_ADDENTRY::hasfocus); Tbottom->Connect(BOTTOM,wxEVT_KILL_FOCUS,(wxObjectEventFunction)&UI_ADDENTRY::hasfocus);

然后有一个eventhandler保护id成为焦点

void UI_ADDENTRY::hasfocus(wxFocusEvent& event){
    focus= event.GetId();
    event.Skip();}

然而,当我尝试在Button函数中访问焦点时,它总是告诉我:0而不是TOP或BOTTOM /我给textcontrols的id

void UI_ADDENTRY::OnRecord(wxCommandEvent &event){
     wxString tmp;
     tmp << this->focus;
     wxMessageBox(tmp);}

我做错了什么?还有另一种方法可以找出最后两个文本框中的哪一个是焦点?

谢谢

2 个答案:

答案 0 :(得分:0)

最简单的方法是在文本控件中捕获EVT_SET_FOCUS并记住收到它的最后一个。这并不比你正在做的更难,但应该没有问题。

不幸的是,不能在所有平台上始终如一地实现FWIW EVT_KILL_FOCUS,特别是GTK +没有提供有关窗口焦点丢失的任何信息。

答案 1 :(得分:0)

认为你的意思是事件.GetWindow()。GetId()。虽然我不确定如何从int转换为字符串。