C ++如何在没有Win32 API的情况下创建一个简单的窗口?

时间:2016-10-07 20:16:53

标签: c++

我一直想在C ++中从头开始创建一个简单的窗口,但我在互联网上找到的唯一结果是使用Win32 API,DirectX或OpenGL。我想在没有任何API的情况下制作它。 Win32也可以与Windows以外的其他操作系统兼容。我想创建一个与所有不使用任何API的操作系统兼容的程序,除了创建窗口的普通C ++之外。

2 个答案:

答案 0 :(得分:5)

我认为你误解了这些API的目的。你不能简单地在" Plain C ++"中创建一个窗口。最终,此任务需要与操作系统(Windows)或位于操作系统之上的窗口管理器进行协调。您可以与操作系统协调的唯一方法是使用它提供的API(在Windows上,Win32就是这样做的。)

如果您正在努力寻找能够在许多平台上显示窗口的可移植代码,您可以使用像Qt框架,wxWidgets或任何其他此类跨平台GUI库的库。这些库将代表您与操作系统和/或窗口管理器进行通信。它们将包装所有不同的Windows / Mac / Linux API以创建和显示窗口,并为您提供一个一致且相对易于使用的API,适用于所有平台。在下面,他们将使用API​​编译应用程序的平台。

答案 1 :(得分:4)

在Windows上,如果要创建窗口,则无法避免使用Win32 API。您使用的所有内容最终都将使用Win32 API调用来为您创建窗口。

也就是说,使用一个好的图形库或GUI库来创建你想要的窗口。我个人推荐Allegro 5(http://liballeg.org),但您也可以使用SDL,SFML,ClanLib,Qt,WxWidgets或任何其他库来为您创建一个窗口。

在Allegro 5中,创建和显示窗口非常简单:

#include "allegro5/allegro.h"

int main(int argc , char** argv) {
    if (!al_init()) {return -1;}
    ALLEGRO_DISPLAY* display = al_create_display(800,600);
    if (!display) {return -2;}
    al_clear_to_color(al_map_rgb(255,255,255));
    al_flip_display();
    al_rest(5.0);
    return 0;
}