web-dev-qa-db-ja.com

CでGUIプログラミングを行うにはどうすればよいですか?

Cでグラフィックプログラミングを行いたい。CでGUIプログラミングを行うための豊富な機能セットを提供するコンパイラについて多くのことを検索しましたが、何も見つかりませんでした。

基本的に、ボタンを描画してからユーザーからの選択を受け入れ、適切なアクションを実行します。 Cコンパイラ、またはコンパイラに追加できるライブラリを提案できると便利です。 Windowsオペレーティングシステムで作業しています。

現在、ボタンを作成するための直接的な方法をサポートしていないTURBO Cコンパイラを使用しています。任意の助けをいただければ幸いです。

47
Algorithmist

これは、コンパイラに関係するnothingが保証されています。すべてのコンパイラは、指定されたコードをコンパイルします。探しているのはGUIライブラリです。これは、必要なコンパイラを使用しないようにコードを記述できます。

もちろん、言われているように、あなたの最初の仕事はTurbo Cを捨てることです。そのコンパイラは約20年前のものであり、それを使い続けても何の恩恵もありません。 16ビットコードしか生成しないため、modernGUIアプリケーションを作成することはできません。最新のオペレーティングシステムはすべて32ビットであり、多くは現在64ビットです。また、Windowsの64ビットエディションは16ビットアプリケーションをネイティブに実行しないことに注意してください。そのためにはエミュレータが必要です。 DOSエミュレーターで動作するアプリしか書けない場合、それほど達成感を感じることはありません。 :-)

MicrosoftのVisual Studio Express C++ 無料でダウンロードできます 。これには、フルバージョンのスイートで利用可能な同じコンパイラが含まれています。 C++パッケージは、純粋なCコードもコンパイルします。

また、Windowsで作業しているため、Windows APIは自然な選択です。 GUIコントロールの完全なセットにアクセスできるネイティブWindowsアプリケーションを作成できます。 ここでのニースチュートリアル CでのWinAPIアプリケーションの記述について説明します。VisualStudioを使用する場合は、空のWinAPIアプリケーションの定型コードも含まれており、すぐに実行できます。

あなたが本当にこれを行うことを学ぶことに関心があるなら、Charles Petzoldの Programming Windows は主題の標準的なリソースであり、間違いなく読む価値があります。 Windows API全体はCで作成されており、Cでフル機能のWindowsアプリケーションを作成することは完全に可能です。C++を使用する必要はありません。

少なくともそれはI'dのやり方です。他の答えが示唆するように、 GTK もオプションです。しかし、それが生成するアプリケーションは、Windows上ではまったく恐ろしく見えます。


EDIT:ああ...時代遅れのコンパイラを使用して「GUI」アプリケーションを書きたがっているのはあなただけではないようです。 Google検索では、次のライブラリが検索されます。 TurboGUI:Turbo C/C++のGUIフレームワーク

TurboGUI interface sample

あなたがそれらの貧しい人々のもう一人であり、絶望的に時代遅れのインドの学校システムに固執し、あなたの教育を完了するためにターボCを使用することを余儀なくされている場合、これはオプションかもしれません。制限を回避することを学ぶことは、卒業したら完全に役に立たなくなるので、お勧めするのは嫌いですが、興味があるならあなたのためにそこにいるようです。

114
Cody Gray

C言語でGUIを作成する最も有名なライブラリは、確かに GTK です。

このライブラリを使用すると、いくつかのボタンを簡単に作成できます(たとえば)。ユーザーがボタンをクリックすると、シグナルが発行され、ハンドラーを作成していくつかのアクションを実行できます。

15
Sandro Munda

メイン関数でwin APIを使用します。

  1. RegisterClassEx() 注:WM_CREATE、WM_COMMANDなどのWindowsメッセージを処理する関数(通常は WndProc と呼ばれる)へのポインターを提供する必要があります。
  2. CreateWindowEx()
  3. ShowWindow()
  4. pdateWindow()

次に、winのメッセージ(#1で説明)を処理する別の関数を作成します。メッセージWM_CREATEを受け取ったら、CreateWindow()を呼び出す必要があります。クラスは、そのウィンドウのコントロールです。たとえば、「編集」はテキストボックスで、「ボタン」はボタンです。各コントロールにIDを指定する必要があります(選択はできますが、すべて一意です)。 CreateWindow()は、そのコントロールへのハンドルを返します。これは記憶する必要があります。ユーザーがコントロールをクリックすると、そのコントロールのIDを含むWM_COMMANDメッセージを受け取ります。ここで、そのイベントを処理できます。便利な SetWindowText() および GetWindowText() を見つけると、コントロールのテキストを設定/取得できます。
必要なのはwin32 SDKのみです。取得できます こちら

8
BlackBear

Cはよりハードウェアプログラミング言語であり、C、GTK、Gladeなどの簡単なGUIビルダーがあります。問題は、簡単な部分であるCでプログラムを作成し、簡単な部分であるGUIを作成することです。両方を組み合わせて、プログラムとGUIを接続するのは頭痛の種であり、異なるGUIは異なる方法を使用し、一部はグローバル変数をスローし、一部はスロットを使用します。 Cプログラム変数と出力を簡単にバインドできるGUIビルダーがあると便利です。 CLIプログラミングは、メモリの割り当てとポインターを克服するときに簡単です。GUIでは、ドラッグアンドドロップを使用するIDEを使用できます。しかし、周りのすべての方がもっと簡単だと思います。

5
sergio

Windows APIおよびWindows SDKすべてを自分で構築する場合(または)Windows APIおよびVisual C Express。 2008年版を入手してください。これは本格的なIDEであり、Windows開発用のMicrosoftの注目すべきソフトウェアです。

すべてのオペレーティングシステムはCで記述されています。したがって、Cで記述するアプリケーション、コンソール/ GUIは、オペレーティングシステムの標準的な記述方法です。

4
Viju

Cコンパイラ自体はGUI機能を提供しませんが、その種のライブラリはたくさんあります。最も一般的なのはおそらく GTK + ですが、始めたばかりでGUIをすぐに起動して実行したい場合は少し複雑すぎるかもしれません。

もう少しシンプルなものについては、 IUP をお勧めします。これを使用すると、LEDと呼ばれるシンプルなGUI定義言語を使用してコントロールをレイアウトできます(ただし、必要に応じて純粋なCで実行できます)。

3
David Brown