2016-10-07 6 views
1

저는 항상 C++에서 처음부터 간단한 창을 만들기 시작했습니다. 하지만 인터넷에서 발견 한 유일한 결과는 win32 api 또는 directX 또는 OpenGL 중 하나입니다. 나는 그러한 API없이 그것을 만들고 싶다. 또한 win32는 apple, linux 및 uinx와 같은 다른 운영 체제와 호환 될 수 있습니까? 왜냐하면 나는 창을 만드는 비행기 C++를 제외한 모든 API를 사용하지 않는 모든 운영 체제와 호환되는 하나의 프로그램을 만들고 싶기 때문입니다.C++ win32 api없이 간단한 창을 만드는 방법은 무엇입니까?

+3

는 Qt를 같은 크로스 플랫폼 프레임 워크를 사용으로 만들고 창을 표시 알레그로 5에서

는 간단하다? – UnholySheep

+2

Qt와 같은 크로스 컴파일 UI 시스템을 사용해보십시오. _ "평면에서 제외 C++"_ _plain C++ _을 (를) 묻는 것으로 가정하고 UI에 대한 언어 표준은 없습니다 (아직). –

+0

@ πάνταῥεῖ : 어쩌면 항공기 사용을위한 C++의 방언이있을 수 있습니다. ; v) –

답변

5

이 API의 목적을 오해 한 것 같습니다. 단순히 "Plain C++"로 창을 만들 수는 없습니다. 궁극적으로이 작업에는 운영 체제 (Windows) 또는 운영 체제 상단에있는 창 관리자와의 조정이 필요합니다. OS와 함께 조정할 수있는 유일한 방법은 제공하는 API를 사용하는 것입니다 (Windows에서는 Win32가 정확히 수행함).

많은 플랫폼에서 창을 표시 할 수있는 휴대용 코드를 사용하려는 경우 Qt 프레임 워크, wxWidgets 또는 다른 크로스 플랫폼 GUI 라이브러리와 같은 라이브러리를 사용할 수 있습니다. 이 라이브러리는 사용자를 대신하여 OS 및/또는 창 관리자와 통신합니다. 그들은 창을 만들고 표시하기 위해 모든 다른 Windows/Mac/Linux API를 마무리 할 것이고 하나의은 모든 플랫폼에서 작동하는 API를 일관되게 사용하기가 쉽습니다. 아래에서, 그들은 애플리케이션이 컴파일 된 플랫폼을 위해 API를 사용할 것이다.

+0

나는 또한 OpenGL을 사용할 수 있습니까? 이 질문은 아마도 내가 처음에 물어 보았던 것과는 조금 다르지만 OpenGL은 크로스 플랫폼일까요? – NathanProgrammer

4

Windows에서 창을 만들려면 Win32 API를 피할 수 없습니다. 모든 것을 사용하면 궁극적으로 Win32 API 호출을 사용하여 창을 만듭니다.

그렇다면 좋은 그래픽 라이브러리 나 GUI 라이브러리를 사용하여 원하는 창을 만들 수 있습니다. 개인적으로 Allegro 5 (http://liballeg.org)를 권장하지만 SDL, SFML, ClanLib, Qt, WxWidgets 또는 기타 여러 라이브러리를 사용하여 창을 만들 수도 있습니다.

#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; 
} 
관련 문제