wxFrame 和 wxTaskBarIcon 任务栏事件 Mac OSX:未触发回调
wxFrame and wxTaskBarIcon taskbar event Mac OSX : callback not being triggered
我有一个派生类,用于wxFrame
(MyFrame)(用于OSX - Yosemite平台),它调用: Bind(wxEVT_TASKBAR_RIGHT_DOWN), &HandleTaskBarEvent, this);
问题是当我右键单击扩展坞中的图标时HandleTaskBarEvent
未被调用。
我看到Mac为扩展坞中的主图标提供的通用右键单击菜单(登录时打开,保留在Dock中等)。
另外,我创建了一个wxTaskBarIcon
.我猜这将用于最小化框架后扩展坞中的最小化图标。
systemIcon = new wxTaskBarIcon(); //declared in header
systemIcon.Bind(wxEVT_TASKBAR_RIGHT_DOWN, &HandleTaskBarEvent, this);
Popup = new wxMenu(); //declared in header
QuitMenu = new wxMenuItem(Popup, wxID_ANY, wxString(wxT("Quit")), wxEmptyString, wxITEM_NORMAL); //declared in header
Popup->Append(QuitMenu)
Popup->Bind(wxEVT_COMMAND_MENU_SELECTED, &CloseFunc, this, QuitMenu->GetId());
这是在同一个派生类(MyFrame)中。
我在MyFrame中调用Iconize()
相同的函数,该函数按预期工作。它最小化了窗口。
这是HandleTaskBarEvent
功能(虚拟)
void MyFrame::HandleTaskBarEvent(wxTaskBarIconEvent& event)
{
if(event.GetEventType() == wxEVT_TASKBAR_RIGHT_DOWN)
{
systemIcon->PopupMenu(Popup);
}
}
我看到这篇文章:Mac OSX上WxPython TaskBarIcon的鼠标事件没有触发而且似乎有一个关于它的错误。但是我无法在网上找到该错误或其状态。有人提到问题与wxPython有关,但似乎与我的问题有关。
此外,我为 wxTaskBarIcon 创建了一个派生类,并覆盖了 CreatePopupMenu,并将 systemIcon 作为 MyTaskBarIcon 的实例,但该函数不会因任何点击(左、右等)而被触发。此外,主wxFrame的绑定回调(HandleTaskBarEvent)没有被触发,因此systemIcon无法弹出菜单。
我没有在 Mac 上使用鼠标(而是使用触控板)。不确定右键单击代码是否应该有任何区别,但无论如何都要在此处添加信息。
所以我认为这可能是wxWidget-OSX特定的问题,因为代码可以按预期在Windows上运行。
有谁知道这是否纯粹是wxWidget-OSX不完整的功能,是否有任何关于它的未解决的错误,更重要的是是否有任何解决方案可以显示停靠栏中最小化图标的弹出菜单项,并处理菜单的单击事件。
提前谢谢。
OS X wxTaskBarIcon
实现的限制。请参阅 OSX 上的 wxTaskBarIcon - 双指单击不会发送鼠标事件和相关/链接问题。
我知道的唯一方法(在OS X上)是覆盖wxTaskBarIcon::CreatePopupMenu()。
您应该能够拥有以下内容:
我的应用::wx应用/ MyTaskBarIcon::wxTaskBarIcon (override CreatePopupMenu(),返回一个新的 wxMenu)
这是我在一些应用程序中使用的模型,它在Windows和OS X上的工作方式相同(尽管没有提到的特定点击处理程序)。
- 架构决策:返回std::future还是提供回调
- 正在为Xtensa simcall函数编写回调函数
- 如何在C++中使用非静态成员函数作为回调函数
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 用于在回调中调用解析器的设计模式
- 如何使用C++对象的成员函数作为 C 样式回调?
- Java从C++回调到C++回调
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 从不同的 cpp 调用回调函数会导致bad_function_call
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 不带轮询的 SDL2 事件回调
- C++存储带有可变参数的回调
- 如何使用 Node-addon-API 实现 node-nan 回调
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 访问类C++ C 样式回调
- 处理类内的回调时,必须调用对非静态成员函数的引用
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- 在C++中实现回调
- wxFrame 和 wxTaskBarIcon 任务栏事件 Mac OSX:未触发回调