2016-10-07 9 views
1

私はいつも、C++から最初から簡単なウィンドウを作成したいと思っていました。しかし、私がインターネット上で見つけた唯一の結果は、win32 apiまたはdirectXまたはOpenGLを使用していることです。私はそれらのAPIのどれもなしでそれを作りたいです。また、win32はappleやlinux、uinxなどの他のオペレーティングシステムと互換性がありますか?私は、ウィンドウを作成するプレーンC++以外のAPIを使用しないすべてのオペレーティングシステムと互換性のある1つのプログラムを作成したいからです。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をすべてまとめ、という1つのという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; 
} 
関連する問題