gpt4 book ai didi

c++ - wxWidgets Windows->MacOS 或 Linux

转载 作者:行者123 更新时间:2023-11-28 01:40:53 24 4
gpt4 key购买 nike

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

  • wxWindow::SetDoubleBuffered 似乎没有在 MacOS 上实现(在 Linux 上也是如此吗?)。对于 Mac 用户,我可以四处关闭双缓冲,但代价是我的绘图出现一些闪烁。这并不理想:是否有适用于 Mac/Linux 的等效产品?
  • 构造函数 wxBitmap(const wxImage &image, const wxDC &dc) 在 MacOS 上似乎也不存在。我用它能够在从 C 样式的 RGB 三元组数组创建的 wxImage 上使用“dc.DrawBitmap”(结合 dc.SetUserScale)。 Mac 用户如何使用 wxWidgets 在屏幕上显示像素阵列?
  • 显然在 MacOS 上没有 wxString 到 std::string 的转换(没有从 'wxString' 到 'std::string' 的可行转换 错误)。它是如何特定于操作系统的?
  • (次要细节):错误:使用未声明的标识符“sample_xpm”:SetIcon(wxICON(sample)); sample_xpm 似乎是 Windows 而非 MacOS 上可用的默认图标。 ..(?)。

感谢您的帮助!

最佳答案

最好分别提出不同的问题,因为如果我们尝试一起讨论所有问题,事情可能会变得困惑,但这里是基本答案:

  1. wxWindow::SetDoubleBuffered() 在 wxOSX 中没有提供,因为所有的窗口都是双缓冲的。为了可移植性,可以说仍然应该提供它的 stub ,但它仍然什么都不做,不调用它应该不会导致任何闪烁。
  2. 带有此签名的 wxBitmap ctor 不是有意记录的,它对非 MSW 平台没有实际意义。只需使用不带 dc 参数的 ctor。
  3. 从 wxString 到 std::string 的转换不是特定于操作系统的,而是取决于您的构建选项:仅当您使用 wxUSE_STL=1 设置构建时才会隐式提供在您的 setup.h(或 --enable-STL 配置选项)中。为避免依赖于此,您始终可以显式使用 ToStdString()。或者确保您在所有平台下使用相同的选项进行构建。
  4. 这个错误大概是在您自己的代码中出现的,并且一定是由于没有包含 XPM 文件。这与平台无关,实际上您通常不需要在 MSW 下需要 XPM,所以我不确定您在那里做了什么——但只要看看您如何以及在哪里包含它。

关于c++ - wxWidgets Windows->MacOS 或 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47228929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com