1. ホーム
  2. c++

[解決済み】C++でグラフィカルユーザーインターフェースを構築するには?[クローズド]

2022-03-27 18:30:30

質問

これまでの私のC++プログラムはすべてコマンドラインインターフェイスを使用しており、他に経験のある言語はGUIをサポートしていないPHPだけです。

C++でグラフィカルユーザーインターフェースのプログラミングをするには、何から始めればいいのでしょうか?また、どのように作成すればよいのでしょうか?

どのように解決するのですか?

基本的に、オペレーティングシステムのウィンドウシステムは、ウィンドウを作成したり、ウィンドウにボタンを配置したりするような仕事をするために実行可能ないくつかのAPIコールを公開しています。基本的には、ヘッダーファイル一式を入手し、stdlib と同じように、インポートされたライブラリ内の関数を呼び出すことができます。 printf .

各オペレーティングシステムには、独自のGUIツールキット、ヘッダーファイル群、APIコールが付属しており、独自の方法で物事を行うことができます。また、以下のようなクロスプラットフォームのツールキットもあります。 GTK , Qt および wxWidgets は、どこでも動作するプログラムを構築するのに役立ちます。各プラットフォームで同じAPIコールを持ち、ネイティブOSのAPIコールを呼び出すAPI関数については異なる実装をすることでこれを実現しています。

CLIプログラムとは異なる共通点として、イベントループと呼ばれるものがあります。この基本的な考え方はやや複雑で、圧縮するのは難しいのですが、要するに、メインクラスやメイン関数では、とんでもないことが行われないということです。

  • イベントキューに新しいイベントがあるかどうかをチェックする。
  • ある場合は、それらのイベントを適切なハンドラにディスパッチします。
  • 終了したら、オペレーティングシステムに制御を戻します(通常、特別な "sleep" または "select" または "yield" 関数呼び出しを使用します)。
  • を実行すると、オペレーティングシステムが終了した時点でyield関数が戻り、ループをもう1周することになります。

イベントベースのプログラミングについては、たくさんの資料があります。JavaScriptの経験があれば、基本的な考え方は同じです。ただし、スクリプターであるあなたは、イベントループそのものや、どんなイベントがあるのかにアクセスしたりコントロールしたりすることはできず、あなたの仕事は、ハンドラを書いて登録することだけです。

GUIプログラミングは、一般的に非常に複雑で難しいということを念頭に置いておく必要があります。もしオプションがあるのなら、プログラムにウェブサーバーを組み込んで、HTML/ウェブベースのインターフェイスを持つ方が、実際にはずっと簡単です。私が遭遇した唯一の例外は、Appleの ココア + Xcode + GUIプログラミングを初めて学ぶ人にとって、最も親しみやすい環境だと思います。