【问题标题】:How to create a cross platform window handler?如何创建跨平台窗口处理程序?
【发布时间】:2012-07-14 04:16:32
【问题描述】:

我可能没有搜索正确的术语,但我会尝试解释我在寻找什么(可能很常见)。

在 Windows 中创建窗口通常通过WinMain(),但并非所有平台(Linux、OS X 等)都使用此函数作为程序的入口点。

虽然我知道那里有很多库,但出于教育原因,我对实施更加好奇,而不是寻找第三方库来为我处理这个问题。

我敢肯定,它的实现是巨大的,但我在更抽象的层面上很好奇,你将如何编写你的入口点来处理多个平台上的窗口创建。

【问题讨论】:

  • 不要重新发明轮子,尤其是那个比你想象的复杂得多的轮子。只需使用可移植的窗口库(Qt、GTK、wxwidgets...)
  • @DavidRodríguez-dribeas - 我感兴趣的是它是如何工作的,而不是如何实现它。
  • ...如果您对实现感兴趣,请先阅读其中一个现有实现
  • 通常,一个工具包有一堆代表窗口、编辑框等的类和它们上面的标准方法。然后他们为每个平台的每个这些类的所有低级位都有一个单独的实现。创建这样一个工具包是一项艰巨的工作。
  • @arx - 我对工具包不感兴趣,我有兴趣获得一个空白窗口来附加 DirectX 或 OpenGL 上下文。

标签: c++ windows linux macos cross-platform


【解决方案1】:

我在更抽象的层面上很好奇,您将如何编写入口点以便能够在多个平台上处理窗口创建。

C++ 程序的入口点是main,即跨平台。之后,您将需要使用创建窗口和其他任何东西所需的特定库。不同的平台/库可以为您提供main 函数,该函数将执行初始化,然后调用特定函数(在Windows 的情况下为WinMain

您可能想看看这个关于 WinMain 的 question

【讨论】:

  • 看过这个问题后,它变得更有意义了。感谢您清理它!
猜你喜欢
  • 2010-11-24
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多