【问题标题】:OS X fullscreen in wxWidgets 3.0wxWidgets 3.0 中的 OS X 全屏
【发布时间】:2014-10-22 04:46:51
【问题描述】:

我贡献了一个使用 wxWidgets 稳定版本 - 3.0.2 构建的跨平台应用程序。

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

我知道应该可以从 wxWidgets 应用程序中调用本机 Cocoa API 来启用全屏模式,但我不知道该怎么做,也无法在网上找到任何信息。

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

作为参考,this question 询问如何使用 wxPython 做同样的事情,并得到了答案 - 但 python 与 C++ 有很大不同,我无法弄清楚在标准 wxWidgets 中如何做。

【问题讨论】:

    标签: c++ macos cocoa wxwidgets


    【解决方案1】:

    您可以使用wxWindow::MacGetTopLevelWindowRef() 获取NSWindow。请参阅 this commit 了解之后您可以使用它做什么。

    【讨论】:

    • 谢谢。我还找到了 GetWXWindow(),它似乎也返回了 NSWindow。但是,尽管我已经看到了您链接到的代码,但我无法弄清楚该怎么做。我真的需要在应用程序中添加一个 .mm (Objective C) 文件吗?有没有办法直接从我的 C++ 代码中调用所需的方法,就像我链接到的答案中的 Python 一样?每当我尝试对 NSWindow 进行任何操作时,都会出现错误:成员访问不完整类型“struct NSWindow”。但我无法弄清楚我会包括什么标题来避免这种情况。我对 C++ 和 wxWidgets 相当缺乏经验...
    • 你无法避免使用 Objective-C。而且我认为您确实需要使用MacGetTopLevelWindowRef() 来获得正确的NSWindow
    • 嗯。行。所以问题就变成了,我如何从我的 C++ 应用程序中包含必要的 Objective C,以及我如何只在 OS X 上这样做。我将在这方面做更多的研究。
    猜你喜欢
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2017-04-19
    • 2012-12-13
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多