• ベストアンサー

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

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

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

  • ベストアンサー
  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.4

補足拝見しました、(早いっすね) イベントループなんてたいそうな名前付けてますが、単純なDo-Whileループですよ。 終了条件を作って、例えばループ内でキー入力をチェックして Alt+F4 だったら終了フラグを立ててループを抜けるって感じですね。 他の入力に関しても同じです。 簡単に仕組みを書くと 1)諸々の初期化 2)ループ開始 3) 入力チェック 4)  キー入力用処理 5)  マウス入力用処理 6) 画面書き換え 7)ループ終了判断 8)終了処理 こんな感じでしょう。2~7がイベントループと呼ばれます。 実際には途中にもっと処理が必要でしょうけど、とりあえず簡略化して書きました。 当然、各処理は関数化してループ内の動きがよくわかるようにしておく事をお勧めします。ループ内でごちゃごちゃ処理するとスパゲッティプログラムになっちゃいますからね。

その他の回答 (5)

  • katuya
  • ベストアンサー率33% (38/115)
回答No.6

可能です。 まずイベントハンドラとなる処理を書きましょう。 マウス、キーボードの状態を監視し(○キーが押された、△△上でダブルクリックしたなど)マウスなどの状態を表す構造体などに値をいれてやればOKです。 この処理はループの最初に一回だけ行います。 ウィンドウやアイコン、その他処理はイベントハンドラで 作成された値を参照してやれば矛盾なくスマートに作っていけると思います。 ※ウインドウやアイコンの重なり具合などスタックを用いて管理することになると思いますが、うまくやらないとメモリを案外消費します。 作ったものを個人/社内だけで使用するなら市販のライブラリを使用すると開発は楽ですが、商用で配布などするなら一から作ったほうがいいかもしれません。

参考URL:
C言語第2版
noname#9414
noname#9414
回答No.5

shigatsu様、イベントルールならば、do-whileよりもwhile文の 方が適しているのではないでしょうか。理由は簡単で、一度も イベントを実行せずに終了することもあり得るからです。 実際Windows APIでプログラムを組むとイベントループが while文になっています。エラーが発生したときなど、ループを 実行せずに終了させたいからです。 ここから、イベントループを学びたいのであれば、Windowsの APIの本でもいいと思いますよ。もしくは、X-WindowのGUI プログラミングの本でもいいのでは? ではでは☆

参考URL:
やっぱりMFCよりAPIの方がわかりやすいよなぁ。
  • okami3
  • ベストアンサー率6% (1/15)
回答No.3

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

参考URL:
http://www.forest.impress.co.jp/library/gccdeveloperstation.html
  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

DOSでGUIとなると、ESCシーケンスを使うんでしょうかね。いわゆるグラフィックとなるとかなり機種依存してしまうのではないかと思われます。DOS/Vオンリーなら問題無いのかな。 で、キー操作やマウス操作は、大きなループの中で入力の判断をして、状態の変化が有った場合にはその状態に応じた処理を行うというのが一般的だと思います。 いわゆるイベントループというやつですね。 終了する場合は、そのループから抜けるという感じです。 MS-CのVer6あたりでは、Windowsアプリもこんな風に作ってました。違いはグラフィック回りだけでしょう。

yumitaro
質問者

補足

回答ありがとうございます。 C言語のイベントループに関して参考になる書籍などはご存知でしょうか。GUIをCで開発したことが無いためにどのように構築したらよいのか、手をつけかねてしまっております。

  • BEJOE
  • ベストアンサー率0% (0/2)
回答No.1

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

参考URL:
http://www.bits.co.jp/indexw.htm
yumitaro
質問者

お礼

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

関連するQ&A

  • C言語でGUI作成の手段

    C言語でGUIを作成するための手段として、 APIやX-windowシステムなどが挙げられますが、 他にこういった方法はありますでしょうか? また、どういった方法がC言語で最も簡単にGUIを作成できますか? 宜しくお願い致します。

  • C言語について教えてください

    skypとかlinuxはC言語で作られてるって聴くんですけど CってDOS画面上でしか操作できないのにGUIとかに対応させる事ができるんですか? Cと他の言語を組み合わせてGUIを完成させているんですか? どうか、教えてくださいまた参考になるサイトがあるなら教えてください お願いします。

  • GUIアプリケーションを作成

    GUIアプリケーションを作成 初めてのGUI作成です。 メモ帳とCygwin(コンパイル,実行の際に使用するソフト)だけでは,GUIプログラミングは出来ないのでしょうか? 幾つかC言語のwindowsプログラムを見ましたが、見慣れない記述ばかりでした。 (使ったことはないですが、)一般的には、VC++やBCC++のGUI開発の支援ソフトを利用するものなのでしょうか? JAVAの方が,Swingを使用すればGUIが簡単に習得出来るそうで、C言語より早く習得できそうです。JAVAでGUI作成をするときのデメリットがあれば教えて下さい。

  • CでGUI作成

    プログラミング初心者のものです。現在Cを独学していますが、C言語で、JavaのようなGUIアプリケーションは作れるのでしょうか。入門書にはCUIプログラムしか載っていないので、わかる人教えてください。(コンパイラはBorlandです)

  • ソフト開発のGUIに向いた言語を教えてください

    今現在C言語を勉強しているんですが難しいしGUI操作に向いていないと聞くのですがGUIで操作するのに向いている言語はなんですか? できればネットワークに興味があるのでネットワークプログラムに向いている言語をおしえてください またC言語を難しいっていってるぐらいだったらやめろとかそおいうのもOKです 厳しい意見などもいってください 聞いた話なんですけどC++がGUIとかに向いてるってきくんですが本当ですか? 教えてください

  • C言語で自作GUIツールキットを作成したい

    こんにちは。 初めて、C言語でGUIツールキットを自作したいと考えております。 目的としては、どうやってGTK+などのGUIツールキットは画面にウィンドウやボタンといったものが表示しているのか学習をしたいためです。 最初は、GUIツールのソースをみて解釈しようとしたのですが、C言語自体が独学なので意図が読み取れなかったり、どこで画面を作成しているのか分からず挫折をしてしまいました。 ですので、わかりやすい書籍やWebページがありましたら教えてください。

  • C++でGUIアプリケーションを作成するには?

    C++でGUIアプリケーションを開発しようとしていますが、どのように作成すればよいのかわからなかったため、質問させて頂きました。 アプリケーションのイメージとしては、ボタン・背景などはすべてこちらの用意した画像で表示し、Windowsっぽいテイストは一切出さないアプリケーションです。ボタンを押すと画面全体が切り替わるイメージです(例えばプリクラみたいな) 現在JavaのSwingでアプリを作成しており、全体が切り替わる機能としてはJPanelのCardLayoutを使用しています。 ボタンはJButton等で完全に画像onlyのアプリを実現しています。 ただ、JavaはWEBカメラからの画像取得が640*480が限界であり、カメラの限界性能(1600*1200等)が使用できるopencv(c++)で画像キャプチャのところだけ作成しました。 このままアプリ全体はJavaで作成し、画像キャプチャ時はc++のexeを裏で実行させるという方法もあるのですが、言語を統一したほうがいいのではないか?と思ったので現在c++でGUIアプリの作成方法を調べています。 参考になるページもご紹介いただけるとありがたいです。

  • ラズベリーパイ3 C言語でGUIを作成する方法

    ラズベリーパイ3(OS raspbian light)のC言語を使って通信用のプログラムを作成しています。 現在このプログラムはコンソールアプリケーションなのですが、 GUIで、パラメータ設定や、受信データのグラフ化をできるようにしたいと考えています。 VCのように、ボタン押下でイベントを発生させて画像やグラフを表示する開発環境はないものでしょうか。あればどのような手順で構築すれば良いでしょうか。 ご助言頂ければ幸いです。

  • C++とC#を使ったアプリケーション作成

    アプリケーションと言って良いのかは微妙なのですが、アプリケーションを作ることになりました。 既存のいくつかのプログラムを1つにまとめて、GUIで操作できるようにするのが最終目的です。 もとのプログラムはC++で書かれています。 今回は、GUIの部分を 「Microsoft Expression Blend 2」でデザインしようと考えているのですが、 GUIの部分をC#で作成し、メインの処理をC++で書くことは可能なのでしょうか? それとも、メインの処理をC#で書き直すことが必要でしょうか? 知恵を貸してください。 よろしくお願いします!!

  • cでなぜguiアプリが作成出来るのか。

    cでなぜguiアプリが作成出来るのか。 現在cについて学習中です。 テキストエディタで書きターミナルで実行しています。 cではアプリが作れるようになるといいますが 現在のままではcuiのソフトしかできる気がしません。 一般的に言われるアプリケーションというものを 作成するにはまた別の手段が必要なのでしょうか。

専門家に質問してみよう