Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events wxWidgets事件焦点文本控件_Events_Wxwidgets - Fatal编程技术网

Events wxWidgets事件焦点文本控件

Events wxWidgets事件焦点文本控件,events,wxwidgets,Events,Wxwidgets,我还有一个关于事件和焦点的问题 我已经看过了教程和这个老问题,但我仍然遇到了问题 基本上,我有一个带有两个WXTCTRL元素和一个按钮的对话框。 我想实现的是,当我点击按钮时,它需要告诉我这两个元素中的哪一个之前有焦点 在对话框的构造函数中,我创建了所有元素,然后将它们连接到事件处理程序,如下所示:Ttop->Connect(TOP,wxEVT\u KILL\u FOCUS,(wxObjectEventFunction)&UI\u ADDENTRY::hascocus); Tbottom->Co

我还有一个关于事件和焦点的问题

我已经看过了教程和这个老问题,但我仍然遇到了问题

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

在对话框的构造函数中,我创建了所有元素,然后将它们连接到事件处理程序,如下所示:
Ttop->Connect(TOP,wxEVT\u KILL\u FOCUS,(wxObjectEventFunction)&UI\u ADDENTRY::hascocus);
Tbottom->Connect(底部,wxEVT_KILL_焦点,(wxObjectEventFunction)和UI_ADDENTRY::hasfocus)

然后是eventhandler,它将id安全地保存到焦点中

void UI_ADDENTRY::hasfocus(wxFocusEvent& event){
    focus= event.GetId();
    event.Skip();}
然而,当我尝试在按钮功能中访问焦点时,它总是告诉我:0而不是我给文本控件的顶部或底部/ID

void UI_ADDENTRY::OnRecord(wxCommandEvent &event){
     wxString tmp;
     tmp << this->focus;
     wxMessageBox(tmp);}
void UI\u ADDENTRY::OnRecord(wxCommandEvent&event){
wxString tmp;
tmp焦点;
wxMessageBox(tmp);}
我做错了什么?有没有另一种方法可以找出两个文本框中的哪一个在上一次被关注


谢谢

最简单的方法是在文本控件中捕捉
EVT\u SET\u FOCUS
,并记住最后一个收到它的控件。这并不比你正在做的事情更困难,但应该毫无问题地工作


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

在think u mean event.GetWindow().GetId()中。虽然我不知道如何将int转换为string。

你能不能在你的按钮点击处理程序中选中
Ttop->HasFocus()
Tbottom->HasFocus()
。。。如果(Ttop->HasFocus(){wxMessageBox(“TOP”);}正确,但似乎不是每单击一个按钮都会从wxtxtCtrl中移除焦点。如果它设置了一个竞赛条件,使得它有时只返回true。是的,你是对的。FindFocus()只会返回我单击的按钮的ID,只是想知道这个问题的解决方案可能是什么-当然我不是第一个必须处理这个问题的人-但是google一点帮助也没有/wxWidgets的文档对我来说不清楚。谢谢你的回复,但我已经尝试过了。我有一个int id;作为我班的一员。然后我在eventhandler中写了这个:hasfocus(wxFocusEvent&event){this->id=event.GetId();但是id总是0 event.Skip();}
event.GetId()与类的成员
id
不同。。。改用
GetEventObject()