2014-10-22 35 views
0

我使用wxWidgets稳定版本 - 3.0.2构建了一个跨平台的应用程序。wxWidgets 3.0中的OS X全屏幕

我想让应用程序在OS X Lion及更高版本上使用本机全屏系统。该功能在wxWidgets的当前开发版本中实现,但不在3.0.2中。

我知道应该可以从wxWidgets应用程序中调用本地Cocoa API来启用全屏模式,但是我无法解决如何操作并且无法在线查找任何信息。

如何从我的wxWidgets C++代码直接访问NSWindow类?

作为参考,this question询问如何对wxPython进行相同的操作,并获得答案 - 但是Python与C++的不同之处在于我无法解决如何在标准wxWidgets中执行此操作。

回答

0

您可以使用wxWindow::MacGetTopLevelWindowRef()得到NSWindow。请参阅this commit以了解可以使用它之后的操作。

+0

谢谢。我还发现GetWXWindow(),它也似乎返回NSWindow。但是,我还没有弄清楚该怎么做,尽管我已经看到了你链接的代码。我真的需要将.mm(Objective C)文件添加到应用程序吗?没有办法直接从我的C++代码中调用所需的方法,就像他们在我链接的答案中使用Python一样?每当我尝试用NSWindow做任何事情时,我都会得到一个错误:成员访问不完整的类型'struct NSWindow'。但我无法弄清楚我会包含哪些头以避免这种情况。我对C++和wxWidgets没有经验...... – Caesar 2014-10-22 16:29:12

+0

你无法避免使用Objective-C。我想你真的需要使用'MacGetTopLevelWindowRef()'来获得正确的'NSWindow'。 – 2014-10-22 17:03:16

+0

嗯。好。所以问题变成了,我如何从我的C++应用程序中包含必要的Objective C,以及如何仅在OS X上执行它。我将在该行中进行更多的研究。 – Caesar 2014-10-22 19:19:38