FLTK:窗口在 MacOS 上获得焦点时的事件
FLTK: Event when a window gets focus on MacOS
使用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 );
都会被召唤,但事实并非如此。所以,我的问题是:当我的窗口焦点发生变化时,我如何收到通知?
您应该对Fl_Window进行子类化以覆盖其句柄方法以监视FL_FOCUS和FL_UNFOCUS事件。下面是一个示例:
class MyWindow : public Fl_Window {
public:
MyWindow(int X,int Y,int W,int H, const char* title) : Fl_Window (X, Y, W, H, title) {}
int handle(int e) {
switch(e) {
case FL_FOCUS:
std::cout << "Window " << label() << " is focused" << std::endl;
break;
case FL_UNFOCUS:
std::cout << "Window " << label() << " has lost focus" << std::endl;
break;
}
return(Fl_Window::handle(e));
}
};
int main() {
MyWindow win1(100, 100, 200,200, "Window 1");
win1.show();
MyWindow win2(350, 100, 200,200, "Window 2");
win2.show();
return Fl::run();
}
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 跟踪滚动条上的鼠标事件
- 什么是事件表 (wxWidgets)?
- 如何在 MFCaptureEngine 中获取"Camera removed"事件
- 给定顺序中的事件处理
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何创建事件驱动的 SDL2 应用程序
- Windows 进程间同步类似事件?
- 如何从C++端挂接到 QML 项的 onClick 事件
- FLTK:窗口在 MacOS 上获得焦点时的事件
- 虚拟键盘在焦点事件上隐藏
- 哪个事件属于qt c ++中的窗口焦点更改
- 使用 CMFCPropertyGrid 捕获可停靠窗格上的丢失焦点事件
- 无法连接 wxWIdgets 3.0 C++中的焦点事件