あなたの意見では、WindowsでGUIを作成するための最良の方法は何ですか? gtkまたはwin32apiで?
WindowsにGTKをお勧めしますか?はい ?番号 ?どうして ?
どれどれ。
個人的には、Windows固有の処理を行う場合は、.NETを使用します。VisualStudioのツールは非常に強力であり、すべてを網羅した優れたスイートです。
プラットフォームに依存しないものにはJavaを使用しますが、それはあなたが選択するツールではないかもしれません。 QTがその目的で多く使用されているのを見てきました。
Windows専用のGUIを作成している場合は、WIN 32Apiを強くお勧めします。 GTK +、pyGtk、FLTKで多くのアプリケーションを作成し、Qt、MFC、SmartWin ++を学びました。私を信じてください、しかし私はWin32Apiが一番好きです。学習曲線が急な場合がありますが、ネイティブWindowsアプリケーションを作成する場合は、最速で最高です。また、プログラムが複雑になるほど、Win32Apiは他のツールキットと比較して簡単になります。また、Win32 Apiで実行できることがありますが、他のツールキットでは実行できません。
テスト済み:
開始時間(メニューとボタンを備えた単純なGUI):GTK + = 7秒; Qt = 4秒; WxWidgets = 3.32秒; FLTK = 1秒; Win32 Api = 0.34秒;
使用スペース:Gtk + = 132 kb; Qt = 4.5 mb; WxWidgets = 4.5 mb; FLTK = 54 kb; Win32 Api = 6.5 kb;
Qt、wxWidgets、GTK +/gtkmm、WinAPI、MFC、.NET WinForms/WPF ...から選択できるGUIツールキット/フレームワークが本当にたくさんあります。これらは人気のあるものだけです。
自分をC++に制限しているので、.NETを削除します。NET上のC++は、管理されていない世界と管理されている世界の間の接続として機能することを目的としているためです。これは、他のタイプの開発に使用できないという意味ではありませんが、構文が厄介で、数え切れないほどの落とし穴があるため、使用しません。さらに、VSのWinFormsコードジェネレーターは、フォームのコードをヘッダーファイルに配置します。brrrr
他の人が述べているように、WinAPIはCで記述されており、非常に高速で強力ですが、レベルが非常に低く、プログラミングや学習が容易ではありません。 MFCはC++で記述されているためオプションであり、WinAPIよりも使いやすく、非常に強力です。ただし、これはほとんど廃止されています(ほとんどの場合、.NETが存在するため)。
GTK +/gtkmm(GTK +のC++ラッパー)はお勧めしませんWindowsの場合ネイティブウィンドウの外観が得られないため、開発者のマシンでセットアップするのはかなり面倒で、ドラッグもしますユーザーマシンにインストールする必要のある大量の依存関係。特にgtkmmは非常に美しいクラス階層とデザインを持っているので、それは実際には残念です。おそらく最もよく設計されたGUIライブラリの1つ:)
そうは言っても、私は何をお勧めしますか? QtまたはwxWidgetsのいずれか。どちらも(かなり現代的な)C++で書かれており、積極的に開発されており、優れたライブラリデザインを備え、マルチプラットフォームで実行され、多くの機能を提供します。いずれにせよ、ここの回答にリストされているライブラリのいくつかを試してみて、どれが最も簡単にやりたいことを実行できるかを確認してください:)
win32 apiは複雑すぎ、MFCは煩わしすぎます。私はWindowsでMFC、win32api、およびQtを使用しました。私の意見では、Qtが最高です。私はGTKを試したことがないので、何も知らずに申し訳ありません。
2019年の編集:これらのオプションはすべてoutdated
のようですが、クロスプラットフォームソリューションはどうですか、 react-native windows 、 electron
個人的にはQtが好きですが、実際にはどのような種類のユーザーインターフェイスを作成するかによって異なります。
Win32に対して:
些細なことを達成するための低レベル、高複雑さ。あなたはすべてをしなければなりません
このルートに行くなら、 Petzold のような本をお勧めします。
プロQt:
格好良いGUI
スタイルシートを作成することで、ルックアンドフィールを非常に簡単に変更できます
信号とスロットのメカニズムは、「ボタンがクリックされました」などのUIイベントを通知します。
素敵なレイアウトシステム
Visual StudioIDEと統合
最新のオブジェクト指向c ++コード、理解と使用が簡単
Qtアシスタント(非常に優れたドキュメント)
比較的リベラルなライセンス(LGPL)
QtDesigner-フォームデザインに使用できるWYSIWYGデザインツール
XML、ネットワーキング、イベントループ、スレッド化、データベースアクセスなど、その他の豊富なc ++機能が付属しています。
Qtに対して:
プロWPF:
私は過去にマルチプラットフォームアプリケーションにGTK +を使用しました。習得して使用するのは比較的簡単だと思いました。私の考えでは、GTK +の主な利点は、アプリケーションを他のウィンドウシステムに移植できることです。そして主な欠点は、他のWindowsアプリケーションとまったく同じようには見えないことです。クロスプラットフォームの作業を行っている場合、またはすでにGTK +に精通している場合(そして新しいツールキットの学習に費やす時間がない場合)は、それをお勧めします。
どちらもc用ですが、gtk(gtkmm)用の優れたラッパーがあります。
gtkには独自の外観があるため、ユーザー側でui要素のスキニングはありません(Windowsスタイルの場合)。しかし、私はそれでもっとプログラミングするのが好きです。
win32、mfc、.netは主にmsビジュアルスタジオに限定されていますが、gtkはvsで使用するのが非常に困難です。
win32、.net、gtkmm、qtをご覧ください。簡単なhelloworldプログラムを作成してコンパイルしてみてください
win32の利点:
欠点:
gtk(mm)の利点:
欠点:
Linux(またはMac)の互換性が懸念される場合は、Qt。それ以外の場合はWin32。
WinformsまたはWPFを試してみることをお勧めします。 C/C++の使用に制限されている場合は、コンパイラの/ clrオプションを使用して.NETコードを埋め込み、WinformsまたはWPFの.NETコードを埋め込むことができます。出典:
http://msdn.Microsoft.com/en-us/library/k8d11d4s(VS.71).aspx
http://msdn.Microsoft.com/en-us/library/ms754130.aspx
http://msdn.Microsoft.com/en-us/library/system.windows.forms.form.aspx
個人的体験
プラットフォームに依存しない開発には、現在のGTKではなくQtをお勧めします。 GTK2の描画は、QtやWin32と比較して非常に低速でした。ネイティブのルックアンドフィールが好きなら、 wxWidgets があなたのために作られています。