これまでのところ、私のC ++プログラムはすべてコマンドラインインターフェイスを使用しており、私が経験した他の唯一の言語は、GUIをサポートしないPHPです。
C ++でのグラフィカルユーザーインターフェイスプログラミングはどこから始めますか?どうすれば作成できますか?
これまでのところ、私のC ++プログラムはすべてコマンドラインインターフェイスを使用しており、私が経験した他の唯一の言語は、GUIをサポートしないPHPです。
C ++でのグラフィカルユーザーインターフェイスプログラミングはどこから始めますか?どうすれば作成できますか?
回答:
基本的に、オペレーティングシステムのウィンドウシステムは、ウィンドウの作成やウィンドウへのボタンの配置などのジョブを実行するために実行できるいくつかのAPI呼び出しを公開します。基本的に、ヘッダーファイルのスイートを取得し、stdlibやと同じように、インポートされたライブラリの関数を呼び出すことができますprintf
。
各オペレーティングシステムには、独自のGUIツールキット、一連のヘッダーファイル、API呼び出し、および独自の方法が付属しています。GTK、Qt、およびwxWidgetsなどのクロスプラットフォームツールキットもあり、どこでも機能するプログラムの構築に役立ちます。各プラットフォームで同じAPI呼び出しを使用することでこれを実現しますが、ネイティブOS API呼び出しを呼び出すAPI関数の実装は異なります。
CLIプログラムとは異なり、それらすべてに共通する1つのことは、イベントループと呼ばれるものです。基本的な考え方はやや複雑で、圧縮が困難ですが、本質的には、メインクラス/メイン関数に次のような例外はありません。
イベントベースのプログラミングに関するリソースはたくさんあります。JavaScriptの使用経験がある場合も、基本的な考え方は同じですが、スクリプト作成者がイベントループ自体にアクセスしたり制御したりできないことや、どのようなイベントがあるかを除いて、ハンドラーを作成して登録することが唯一の仕事です。
一般に、GUIプログラミングは非常に複雑で難しいことに注意してください。オプションがあれば、プログラムに組み込みWebサーバーを統合し、HTML / Webベースのインターフェースを用意する方が実際にははるかに簡単です。私が遭遇した1つの例外は、AppleのCocoa + Xcode +インターフェイスビルダー+チュートリアルです。これにより、GUIプログラミングを初めて使用する人にとって、私が見た中で最も親しみやすい環境になります。
無料のポータブルGUIライブラリがたくさんあり、それぞれに長所と短所があります。
特にQtには、使い始めるのに役立つ素晴らしいチュートリアルとツールがあります。楽しい!
ただし、Win32 APIやMFCなどのプラットフォーム固有の機能は使用しないでください。これにより、特定のプラットフォームに不必要に結びつき、ほとんどメリットがありません。
OSに依存しないアルゴリズム " C ++でGUIアプリケーションを3つのステップで作成 ":
Qt Creatorをインストールする
新しいプロジェクトを作成する(Qt Widgetsアプリケーション)
それを構築します。
おめでとうございます。C++での最初のGUIができました。
これで、「Hello world」GUIアプリケーションよりも複雑なものを作成するために、多くのドキュメントを読む準備ができました。
「例としてWindows XPを例に挙げて」のコメントを考えると、オプションは次のとおりです。
APIを介してオペレーティングシステムと直接やり取りします。これは、Microsoft Windowsの場合、Windows APIを呼び出すと驚きます。WinAPIの最も信頼できるリファレンスは、MicrosoftのMSDN Webサイトです。そのための人気のあるオンライン初心者向けチュートリアルは、theForgerのWin32 APIプログラミングチュートリアルです。その古典的な本は、Charles PetzoldのProgramming Windows、5th Editionです。
WinAPIをC ++クラスにラップするMFCなどのプラットフォーム固有のライブラリ(OSおよびコンパイラーの両方)を使用します。そのリファレンスは再びMSDNです。そのための古典的な本は、ジェフプロシーズのプログラミングウィンドウとMFC第2版です。例えばCodeGear C ++ Builderを使用している場合、ここでのオプションはVCLです。
GTK +(C ++ラッパー:gtkmm)、Qt、wxWidgets、FLTKなどのクロスプラットフォームライブラリを使用する特定のOSのAPIをラップします。これらの利点は、一般に、ソースコードを変更せずにプログラムをさまざまなOS用にコンパイルできることです。すでに述べたように、それぞれに長所と短所があります。使用するものを選択する際の1つの考慮事項は、そのライセンスです。上記の例では、GTK +とgtkmmはLGPLに基づくライセンスであり、Qtは独自のオプションを含むさまざまなライセンスに基づいており、wxWidgetsは独自のwxWindowsライセンス(wxWidgets Licenceに名前を変更)にあり、FLTKは例外を除いてLGPLに基づいています。参考資料、チュートリアル、本については、それぞれのWebサイトを参照してください。
私はあなたが今いるところにすでにいるので、私はあなたに「答える」ことができると思います。
実際のところ、GUIを作成する簡単な方法はありません。GUIはプラットフォームとOS固有のコードに大きく依存しているため、ウィンドウ管理APIに関するターゲットプラットフォーム/ OSのドキュメントを読み始める必要があります。良い点は、これらの制限に対処し、アーキテクチャの違いを1つのマルチプラットフォームAPIに抽象化するライブラリがたくさんあることです。以前に提案されたもの、GTKとQtは、これらのライブラリの一部です。
ただし、多くの新しい概念、データ型、名前空間、クラスが一度に導入されるため、これらも少し複雑すぎます。このため、一部のGUI WYSIWYGエディターにバンドルされています。彼らはほとんどGUIを備えたプログラミングソフトウェアを可能にします。
まとめると、MicrosoftのVisual Studioなど、GUI開発用の非フリーの「環境」もあります。Delphi経験のある人にとっては、Visual Studioの方が使い慣れている可能性があります。Microsoftから提供されている完全なVisual Studio環境の無料の代替手段であるVisual Studio Expressもあります。これは、GUI開発を始めるのに十分です。
「簡単な」チュートリアルを含むウェブサイトを見つけました:http : //www.winprog.org/tutorial/start.html
Qtは無料ではないため、FLTKを使用しています。wxWidgetsは選択しません。単純なHello、World! プログラムは、24 MB、FLTK 0.8 MBの実行可能ファイルを生成しました...