• ベストアンサー
  • すぐに回答を!

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

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

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数2232
  • ありがとう数12

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

  • ベストアンサー
  • 回答No.4

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

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

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

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

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

  • C言語でのコンパイラの作成方法

    C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。 現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。 というわけで、今回はコンパイラをどのように作ったらよいのかというヒントだけでもいいので教えて頂けないかと思い投稿させて頂きました。 ちなみに「temp.c」はそこまで複雑なソースではなく、DOS上のアプリで、リソースやアイコンなどは用いないものです。 そもそも「コンパイラを作る」ということ自体が愚かな行為なのかと思ったりもします。 私が所持しているBcpadやMicrosoft Visual C++ 6.0に付属している既存のコンパイラを利用するということも考えたのですが、BcpadやMicrosoft Visual C++ 6.0の本体以外からコンパイラをどのように利用していいのかもわかりません。 どうぞ忌憚の無い意見をよろしくお願いします。 ちなみにOSはXPのSP3です。

その他の回答 (5)

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

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

参考URL:
C言語第2版

共感・感謝の気持ちを伝えよう!

  • 回答No.5
noname#9414

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

参考URL:
やっぱりMFCよりAPIの方がわかりやすいよなぁ。

共感・感謝の気持ちを伝えよう!

  • 回答No.3
  • okami3
  • ベストアンサー率6% (1/15)

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

参考URL:
http://www.forest.impress.co.jp/library/gccdeveloperstation.html

共感・感謝の気持ちを伝えよう!

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

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

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

参考URL:
http://www.bits.co.jp/indexw.htm

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • C言語でWindowsコンソールアプリケーション

    C#でしたら、新しいプロジェクト→コンソールアプリケーション→Windowsアプリケーションで黒いDOS画面が出ないただのバッチみたいなプログラムができるのですが。 C言語の場合はどうするのでしょうか。バイナリで「this program cannot be run in dos mode」があってもどうしても一瞬黒いDOS画面が表示されるのです。またこれを専門用語で何と言うのでしょうか。 目的はVBSみたいなファイル処理の単純なバッチファイルを作成するのだけです。

  • Accessで作ったアプリをC言語でつくり直し?

    現状、Access2003で業務用のアプリケーションを 作成しています。 しかし、上司から、C言語で作りかえるよう指示が ありました。 理由は、パソコン環境に依存しないから で、私もそれほどC言語に詳しくのないので 調べて見ましたが、 テキストベースのプログラムの書き方や変数の宣言 などの情報はあるのですが、 じゃあ、Accessで作った入力用のフォームとか 入力した内容を印刷するための帳票(レポート)などは どのようにしてC言語で実現するのかが、わかりません。 C言語でGUI環境を作り出し、なおかつデータベース機能を 持たせることはできるのでしょうか

  • cygwinでのGUIプログラミングのしかたin Windows

    2ヶ月ほど前からC言語の勉強をしており、基本ライブラリ程度は使えるようになり、C++の文法を吸収しはじめてます。 そこで、そろそろGUIプログラミングをしたいなと思ったのですが、プログラミング環境としてはCUIが好きで、GUIアプリであるVisual C++などはできれば使いたくありません。というかマウス操作が頻繁なプログラミングは格好がわるい・・(変わり者でしょうか。) そこで耳にした(というかネットで調べまくった)のが、cygwinを使えばVisual C++などなしでもGUIプログラミングができるというような事柄なのですが、そういうようなことが書いてあるサイトって、ほとんどが(というか見たところでは全部が)、「しかし、ここではVisual C++で勉強をしていきましょう」などの内容で、cygwinでのGUIプログラミング方法について有用な情報を得ることはできませんでした。 なので、cygwinで本当にWindows用GUIプログラミングができるのか、もしそうであれば、その方法や大まかな流れなどのご教授、あるいはURIや書籍の紹介をしてほしく思います。

  • FORTRANでGUIプログラム

    FORTRANでGUIプログラム FORTRANでGUIを持ったWINアプリを作成することは不可能でしょうか? 現在自作でFEMプログラムをつくっています。入力ファイルはその度簡単なプログラムをつくって作成するか,汎用のプリプロセッサを利用しています。解析結果は自作で応力図などをeps形式で可視化してはきだすようにしていますが,市販のプログラムのように,画面上で節点や要素を作成していき,それがリアルタイムに画面に表示されて,入力ファイル作成から解析,後処理までをすべてマウス操作でできるようにしたいです。 C++ではできることは分かるのですが,FORTRANしか使ったことないので,FORTRANで作りたいと思っているのですが,やはり数値解析以外のことはFORTRANでやるのは無理なのでしょうか?FORTRANでプリプロセッサが自作できるかどうか,もし可能なら参考書籍などがあれば教えていただきたいです。よろしくお願いします。

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

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

  • 実行速度重視&GUIの開発環境

    現在学んだ言語はCとjavaです. linux上でGTKを少しかじって,現在はcygwinでjavaのGUIアプリケーションを勉強しています. 今回3次元データを解析するプログラムを作成することになったのですが,その際にGUIで表示・操作をしなくてはいけなくなりました. 出来ればwindows上で動作するものがいいのですが,linuxでも構わないと思っています. 最終的にはデータベースとの接続(とXOOPSとの連携?)を考えているので,その辺りも考慮していただければありがたいです. 開発環境の費用は特に問題ではないです.

  • C言語の勉強が必要?

    私は入社時に1ヶ月C言語の研修を受けましたが、 実際にプロジェクトとして大きなプログラムを組んだ経験はありません。 その後1~2年Visual Basic、ロータスノーツなどでアプリケーション 作成に携わりましたので、ロジックについては理解しているつもりです。 現在はTurbo Linux上でApache + TOMCAT + PostgreSQLで Webアプリケーション作成の一部を担当しています。 CUIでの操作、ソースからApacheなどのインストール・設定は できるのですが、では ./Configure → make → make install が一体何をしているのかと云うと、 「Makefileを作って、コンパイルして、インストールして」 程度の言葉しか理解しかしていません。 Linuxではこれらの作業をするのが当たり前ですが、 私はマニュアルに書かれた手順どおりに操作するだけで、 実際にコンパイル・(共有)ライブラリ・シンボル・モジュール…、 これらがどのように関わり合って動いているかよく分かっていません。 上記についてしっかり理解するためには C言語の勉強をするべきなのではないか、と思うのですが、 どんな本・サイトを使って勉強するのが良いでしょうか?

  • ショートカットやマウス操作をコマンドで行いたい

    linuxをGuiで操作している初心者です。 最近gnome端末でコマンド入力してcuiの勉強をしています。 ショートカットキー(ctrl+w)入力や、マウスのクリックで行っているfirefoxの閉じるなどを、gnome端末のコマンド入力で実現できないかと いろいろコマンドを入力しておりますが、いまだ実現しておりません。 恐れいますが、アプリケーションをコマンドで操作する方法や、キーボード入力をコマンドに変換する方法をお教えいただけないでしょうか。何卒、宜しくお願いいたします。

  • WindowsにおけるPostgreSQL+C言語・C++

    C・C++初心者です。宜しくお願い致します。 サーバ等を配置しないで、WindowsXP(localマシン)にて、C言語またはC++より、PostgreSQL(win版)へ接続し、DB更新をするアプリケーションを作成したいと考えております。 PostgreSQLは、別のJavaアプリケーションから接続し操作しておりますが、その機能をC言語に移植したいというのが目的です。 上記より、開発環境を検討しておりますが、Windowsにおける、C言語+PostgreSQLの文献がなかなか見つからなく、途方に暮れてしまっている状態です。 現在、Borland C++Compiler5.5をコンパイラと考えており、PostgreSQLのVersionは8.2.5です。 大変申し訳ございませんが、C言語からPostgreSQLを操作する方法をご教授頂けますよう宜しくお願い致します。 尚、他のコンパイラであれば可能等、環境の見直しが必要でしたら、併せてご教授頂けますと幸いです。

  • アプリをホットキーで最前面に表示するソフト。

    アプリケーションをキーボードのホットキー(ショートカットキー)などで、最も手前に表示するフリーソフトは無いでしょうか? 常に前にするのではなくて、いろんなアプリを操作する時にマウスを使わずにやりたいので、そのようなソフトがありましたら、よろしくお願いいたします。。