wxWidgets Windows-> MacOS或Linux

时间:2017-11-10 18:20:43

标签: c++ cross-platform wxwidgets

我做了一个C ++代码,其GUI用wxWidgets 3.1实现,我在Windows上运行。作为跨平台解决方案,我尝试在MacOS上编译项目。 我遇到了几个问题:

  • wxWindow :: SetDoubleBuffered似乎没有在MacOS上实现(在Linux上也是如此?)。我可以绕过并关闭双缓冲,但代价是Mac用户的绘图中有些闪烁。那不太理想:是否有相当于Mac / Linux的东西?
  • 构造函数wxBitmap(const wxImage& image,const wxDC& dc)在MacOS上似乎不存在。我使用它可以在从RGB三元组的C风格数组创建的wxImage上使用“dc.DrawBitmap”(与dc.SetUserScale结合)。 Mac用户如何使用wxWidgets在屏幕上显示像素阵列?
  • 显然在MacOS上没有对std :: string转换的wxString(no viable conversion from 'wxString' to 'std::string'错误)。它甚至是特定于操作系统的?
  • (次要细节):error: use of undeclared identifier 'sample_xpm' : SetIcon(wxICON(sample));似乎sample_xpm是Windows上可用的默认图标,而不是MacOS ....(?)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

最好分别提出单独的问题,因为如果我们一起讨论所有这些问题会让人感到困惑,但这里有基本答案:

    wxOSX中未提供
  1. dc,因为所有窗口都是双缓冲的。为了便携性,仍然应该提供它的存根,但是它仍然会什么也不做,不应该调用它不应该导致任何闪烁。
  2. 具有此签名的wxBitmap ctor没有故意记录,对于非MSW平台来说它没有任何意义。只需使用不带std::string参数的ctor。
  3. 从wxString到wxUSE_STL=1的转换不是特定于操作系统的,但取决于您的构建选项:只有在setup.h中设置了--enable-stl时才隐式提供它(或{{1}配置选项)。为避免依赖此问题,您始终可以明确使用ToStdString()。或者确保在所有平台下使用相同的选项进行构建。
  4. 大概是在您自己的代码中出现此错误,并且必须归因于不包含XPM文件。没有任何特定于平台的内容,你实际上通常在MSW下需要XPM,所以我不确定你在那里做了什么 - 但只看看你如何以及在哪里包含它。< / LI>