我有另外一个关于事件和焦点的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);}
我做错了什么?还有另一种方法可以找出最后两个文本框中的哪一个是焦点?
谢谢
答案 0 :(得分:0)
最简单的方法是在文本控件中捕获EVT_SET_FOCUS
并记住收到它的最后一个。这并不比你正在做的更难,但应该没有问题。
EVT_KILL_FOCUS
,特别是GTK +没有提供有关窗口焦点丢失的任何信息。
答案 1 :(得分:0)
认为你的意思是事件.GetWindow()。GetId()。虽然我不确定如何从int转换为字符串。