使用FLTK,我正在编写一个使用多个窗口的桌面应用程序。该应用程序管理一个打开的窗口列表,并在菜单中显示这些行:
for( int i = 0; i < windows.size(); ++i ) {
menu->add(("&Windows/"+windows[i].name).c_str(), 0, MyMenuCallback);
}
现在我想在最顶层窗口的名称前面设置一个复选标记:
flags = FL_MENU_TOGGLE|FL_MENU_VALUE;
menu->add(("&Windows/"+windows[i].name).c_str(), 0, MyMenuCallback, 0, flags);
我坚持安装一个事件处理程序,只要最顶层的窗口发生变化就会调用它。我希望只要焦点发生变化就会调用Fl::add_handler( &genericEventHandler );
,但事实并非如此。所以,我的问题是:当我的窗口焦点发生变化时,如何收到通知?
答案 0 :(得分:2)
您应该将Fl_Window子类化为覆盖其句柄方法以监视FL_FOCUS和FL_UNFOCUS事件。这是一个示例:
integer