- ベストアンサー
C言語で作成するGUIについて
DOS上でC言語でGUIを持ったアプリケーションを作成したいと考えています。 GUIにはショートカットキー等のキー操作、マウス操作が最低限必要だと考えています。 しかし、こういったものがCで作成できるのかどうか不明です。指南書もネット上、本屋などで探してみましたが見つかりませんでした。 そこで、 ●このようなアプリケーションをC言語で作成することはかのうでしょうか? ●作成できる場合はその指南となりそうな情報源を教えてください。 の2点の質問に回答いただけるとありがたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
補足拝見しました、(早いっすね) イベントループなんてたいそうな名前付けてますが、単純なDo-Whileループですよ。 終了条件を作って、例えばループ内でキー入力をチェックして Alt+F4 だったら終了フラグを立ててループを抜けるって感じですね。 他の入力に関しても同じです。 簡単に仕組みを書くと 1)諸々の初期化 2)ループ開始 3) 入力チェック 4) キー入力用処理 5) マウス入力用処理 6) 画面書き換え 7)ループ終了判断 8)終了処理 こんな感じでしょう。2~7がイベントループと呼ばれます。 実際には途中にもっと処理が必要でしょうけど、とりあえず簡略化して書きました。 当然、各処理は関数化してループ内の動きがよくわかるようにしておく事をお勧めします。ループ内でごちゃごちゃ処理するとスパゲッティプログラムになっちゃいますからね。
その他の回答 (5)
- katuya
- ベストアンサー率33% (38/115)
可能です。 まずイベントハンドラとなる処理を書きましょう。 マウス、キーボードの状態を監視し(○キーが押された、△△上でダブルクリックしたなど)マウスなどの状態を表す構造体などに値をいれてやればOKです。 この処理はループの最初に一回だけ行います。 ウィンドウやアイコン、その他処理はイベントハンドラで 作成された値を参照してやれば矛盾なくスマートに作っていけると思います。 ※ウインドウやアイコンの重なり具合などスタックを用いて管理することになると思いますが、うまくやらないとメモリを案外消費します。 作ったものを個人/社内だけで使用するなら市販のライブラリを使用すると開発は楽ですが、商用で配布などするなら一から作ったほうがいいかもしれません。
- 参考URL:
- C言語第2版
shigatsu様、イベントルールならば、do-whileよりもwhile文の 方が適しているのではないでしょうか。理由は簡単で、一度も イベントを実行せずに終了することもあり得るからです。 実際Windows APIでプログラムを組むとイベントループが while文になっています。エラーが発生したときなど、ループを 実行せずに終了させたいからです。 ここから、イベントループを学びたいのであれば、Windowsの APIの本でもいいと思いますよ。もしくは、X-WindowのGUI プログラミングの本でもいいのでは? ではでは☆
- 参考URL:
- やっぱりMFCよりAPIの方がわかりやすいよなぁ。
- okami3
- ベストアンサー率6% (1/15)
DOS上というのが、ちょっと気になりますが、Windowsで動作するGUIベースのものを作るという意味で捕らえていいでしょうか? それでしたら、マイクロソフトのVisual C++やインプライズのC++ Builderなどを使用すると、楽に作成できると思います。 また、フリーのソフトで、gcc Developer Stationというものがあります。URLを参考にしてください。 もし、Windows上でなくて、ほんとうのDOSベースでということになると、また違ってくると思いますが、出来ないことはないはずです。 その辺は、他の方のアドバイスをお待ち下さい。
- shigatsu
- ベストアンサー率26% (511/1924)
DOSでGUIとなると、ESCシーケンスを使うんでしょうかね。いわゆるグラフィックとなるとかなり機種依存してしまうのではないかと思われます。DOS/Vオンリーなら問題無いのかな。 で、キー操作やマウス操作は、大きなループの中で入力の判断をして、状態の変化が有った場合にはその状態に応じた処理を行うというのが一般的だと思います。 いわゆるイベントループというやつですね。 終了する場合は、そのループから抜けるという感じです。 MS-CのVer6あたりでは、Windowsアプリもこんな風に作ってました。違いはグラフィック回りだけでしょう。
- BEJOE
- ベストアンサー率0% (0/2)
DOSアプリケーションを開発しなければならない状況の時、私どもは「B-Forp」というソフトウェアを利用しておっしゃっている機能を実現しています。 但し、販売元も「マニュアルの在庫がなくなり次第販売を終了します」との事なので、入手されるなら急がれた方がいいと思います。 販売元のホームページをあげておきます。
お礼
回答ありがとうございます。 B-Forpのページも拝見させていただきました。 値段が少々張るので迷っていますが、 販売元と連絡をとりツールの機能をもう少し詳細に聞いてみたいと思います。
補足
回答ありがとうございます。 C言語のイベントループに関して参考になる書籍などはご存知でしょうか。GUIをCで開発したことが無いためにどのように構築したらよいのか、手をつけかねてしまっております。