-PR-
解決済み

C言語で作成するGUIについて

  • すぐに回答を!
  • 質問No.6846
  • 閲覧数2163
  • ありがとう数12
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 16% (1/6)

DOS上でC言語でGUIを持ったアプリケーションを作成したいと考えています。
GUIにはショートカットキー等のキー操作、マウス操作が最低限必要だと考えています。
しかし、こういったものがCで作成できるのかどうか不明です。指南書もネット上、本屋などで探してみましたが見つかりませんでした。
そこで、
●このようなアプリケーションをC言語で作成することはかのうでしょうか?
●作成できる場合はその指南となりそうな情報源を教えてください。
の2点の質問に回答いただけるとありがたいです。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル13

ベストアンサー率 26% (511/1924)

補足拝見しました、(早いっすね)

イベントループなんてたいそうな名前付けてますが、単純なDo-Whileループですよ。
終了条件を作って、例えばループ内でキー入力をチェックして Alt+F4 だったら終了フラグを立ててループを抜けるって感じですね。
他の入力に関しても同じです。

簡単に仕組みを書くと

1)諸々の初期化
2)ループ開始
3) 入力チェック
4)  キー入力用処理
5)  マウス入力用処理
6) 画面書き換え
7)ループ終了判断
8)終了処理

こんな感じでしょう。2~7がイベントループと呼ばれます。
実際には途中にもっと処理が必要でしょうけど、とりあえず簡略化して書きました。
当然、各処理は関数化してループ内の動きがよくわかるようにしておく事をお勧めします。ループ内でごちゃごちゃ処理するとスパゲッティプログラムになっちゃいますからね。
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル4

ベストアンサー率 0% (0/2)

DOSアプリケーションを開発しなければならない状況の時、私どもは「B-Forp」というソフトウェアを利用しておっしゃっている機能を実現しています。
但し、販売元も「マニュアルの在庫がなくなり次第販売を終了します」との事なので、入手されるなら急がれた方がいいと思います。
販売元のホームページをあげておきます。
お礼コメント
yumitaro

お礼率 16% (1/6)

回答ありがとうございます。
B-Forpのページも拝見させていただきました。
値段が少々張るので迷っていますが、
販売元と連絡をとりツールの機能をもう少し詳細に聞いてみたいと思います。
投稿日時 - 0000-00-00 00:00:00


  • 回答No.2
レベル13

ベストアンサー率 26% (511/1924)

DOSでGUIとなると、ESCシーケンスを使うんでしょうかね。いわゆるグラフィックとなるとかなり機種依存してしまうのではないかと思われます。DOS/Vオンリーなら問題無いのかな。

で、キー操作やマウス操作は、大きなループの中で入力の判断をして、状態の変化が有った場合にはその状態に応じた処理を行うというのが一般的だと思います。
いわゆるイベントループというやつですね。

終了する場合は、そのループから抜けるという感じです。

MS-CのVer6あたりでは、Windowsアプリもこんな風に作ってました。違いはグラフィック回りだけでしょう。
補足コメント
yumitaro

お礼率 16% (1/6)

回答ありがとうございます。
C言語のイベントループに関して参考になる書籍などはご存知でしょうか。GUIをCで開発したことが無いためにどのように構築したらよいのか、手をつけかねてしまっております。
投稿日時 - 2000-08-23 16:26:59
  • 回答No.3
レベル6

ベストアンサー率 6% (1/15)

DOS上というのが、ちょっと気になりますが、Windowsで動作するGUIベースのものを作るという意味で捕らえていいでしょうか?
それでしたら、マイクロソフトのVisual C++やインプライズのC++ Builderなどを使用すると、楽に作成できると思います。
また、フリーのソフトで、gcc Developer Stationというものがあります。URLを参考にしてください。

もし、Windows上でなくて、ほんとうのDOSベースでということになると、また違ってくると思いますが、出来ないことはないはずです。
その辺は、他の方のアドバイスをお待ち下さい。
  • 回答No.5

shigatsu様、イベントルールならば、do-whileよりもwhile文の
方が適しているのではないでしょうか。理由は簡単で、一度も
イベントを実行せずに終了することもあり得るからです。

実際Windows APIでプログラムを組むとイベントループが
while文になっています。エラーが発生したときなど、ループを
実行せずに終了させたいからです。

ここから、イベントループを学びたいのであれば、Windowsの
APIの本でもいいと思いますよ。もしくは、X-WindowのGUI
プログラミングの本でもいいのでは?

ではでは☆
  • 回答No.6
レベル10

ベストアンサー率 33% (38/115)

可能です。
まずイベントハンドラとなる処理を書きましょう。
マウス、キーボードの状態を監視し(○キーが押された、△△上でダブルクリックしたなど)マウスなどの状態を表す構造体などに値をいれてやればOKです。
この処理はループの最初に一回だけ行います。

ウィンドウやアイコン、その他処理はイベントハンドラで
作成された値を参照してやれば矛盾なくスマートに作っていけると思います。
※ウインドウやアイコンの重なり具合などスタックを用いて管理することになると思いますが、うまくやらないとメモリを案外消費します。

作ったものを個人/社内だけで使用するなら市販のライブラリを使用すると開発は楽ですが、商用で配布などするなら一から作ったほうがいいかもしれません。
参考URL:C言語第2版
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ