- 締切済み
C言語を使ってコンボボックスとか作ることができるのか??(初心者)
こんばんわ プログラミングを最近始めた超初心者です どれくらい初心者かというと、コマンドプロントで「はじめてのC言語」みたいな文字列を表示するプログラムを書いたことがある程度のプログラミング歴です。 で、質問なんですが、C言語の入門書をパラパラと読んでいるのですが、C言語って、実行するときいつもコマンドプロントでしか実行できず、黒画面で白文字のプログラムしかできないような印象を受けるのですが、C言語で作ったプログラム(exeファイル)をダブルクリックしたら、エクセルで言うところのコントロールツールや、ダイヤログボックスが出てくるようなプログラムを作ることはできるのでしょうか??? で、もし、できるのであれば、そういう記事を紹介している本やサイトがあれば教えてほしいのですが、宜しくお願いいたします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- yaemon_2006
- ベストアンサー率22% (50/220)
>bcc32 -w ファイル名.c "-w"を"-W"にする。 bcc32のインストールフォルダにHelpがあるので、 一度見ておいたほうがいいです。
- dra2jp
- ベストアンサー率25% (18/72)
ものすごく余談ですが、Messageboxの話が出たんで昔の思い出話を一つ。 初めてMessageboxの表示の仕方が分かった時、 PlaySoundという音楽ファイルを再生する関数と一緒に使ってこんな悪戯ファイルを作ったりしました。 友達とこんなアホみたいなファイル作りあいっこしてよく遊んだものです。 #include <windows.h> #pragma comment(lib,"winmm") int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ int i; MessageBox(NULL , "ウィルスのファイルを実行しました。" , "深刻なシステムエラー" , MB_ICONSTOP | MB_TOPMOST); Sleep(2000); MessageBox(NULL , "現在ウィルスが繁殖しています。" , "深刻なシステムエラー" , MB_ICONSTOP | MB_TOPMOST); Sleep(500); for(i=0;i<3;i++){ PlaySound("Windows XP Battery Critical.wav" , NULL , SND_FILENAME | SND_ASYNC | SND_ASYNC); Sleep(200); PlaySound("Windows XP Exclamation.wav" , NULL , SND_FILENAME | SND_ASYNC | SND_ASYNC); Sleep(200); PlaySound("Windows XP Hardware Fail.wav" , NULL , SND_FILENAME | SND_ASYNC | SND_ASYNC); Sleep(200); PlaySound("Windows XP Hardware Insert.wav" , NULL , SND_FILENAME | SND_ASYNC | SND_ASYNC); Sleep(200); PlaySound("Windows XP Critical Stop.wav" , NULL , SND_FILENAME | SND_ASYNC | SND_ASYNC); Sleep(200); } Sleep(1000); MessageBox(NULL , "嘘ですからご心配なく(*´Д`)=з" , "冗談のシステムエラー" , MB_ICONINFORMATION | MB_TOPMOST); return 0; } ちょっとスピーカーの音量を大きめにしてから実行すると面白いかもしれません。 これはただ単にWindowsに元々はいっている音楽ファイルを再生させてMessageboxを表示されているだけです。 解りやすく書くためにかなり当時書いた物を簡略化したものですが、色んな関数が使えるようになると面白いですよ。
お礼
ありがとうございました。 表題の質問につき、皆様の親切な回答で解決することができました。 しかし、今は、コンピュータプログラミングの歴史や奥の深さで夜も眠れない状況です。 ちなみに、私は、会社員なんですが、空いてる時間を使って簡単なウインドウズアプリケーションソフトを1個作ってみたいなぁとお盛っています。
- dra2jp
- ベストアンサー率25% (18/72)
あ、補足よくみていませんでした^^; その症状だと Error: 外部シンボル '_main' が未解決 とかってエラーでましたか? これはmain関数がありませんと言う意味です。 -wでやってみたということですが create windowsアプリが行いたかったのでしょうか。 そのコマンドは bcc32 -tW [filename].cpp ではないでしょうか? [filename]の部分は自分で変更してください。 もしも私の書いたプログラムでしたらこのコマンドでコンパイルできます。 実際コマンドプロンプトでやってみて私の環境ではできましたよ。 コンパイルのコマンドは上記の方法で行ってください。 また、bccのコマンドは bcc32 とタイプすれば一覧表が表示されます。 これからの為に言いますが、エラーが出て行き詰まっていて、誰かに助けを求める時 「どのようなエラーが出たのか」 を明記するのが基本ですのでそこのとこは書いた方がいいですよ。 このようなエラーが出たのですが、と言ってもらった方がこちらもわかりやすいですしね。 大量にエラーが何十行も出た場合は全部貼れとは言いませんけど^^; エラーがイロイロでてきたといいましたけど、「エラー」がそんなにでました? 警告ではないですか? 例えば 警告 W8057 cc.cpp 6: パラメータ 'hInstance' は一度も使用されない このような。 警告とエラーは違い、警告は無視してもコンパイルできます。 エラーが出た時はコンパイル出来ません。 定義した変数を使わなかっただけでも警告は出ますので、警告はそんなに気にしなくて良い場合が多いです。 もしも上記のコンパイルコマンドで私の書いたプログラムがコンパイルできなかった場合また聞いてください。
- dra2jp
- ベストアンサー率25% (18/72)
あ、それは拡張子がcppでないからじゃないでしょうか? 私が書いたプログラムを試されたのでしょうか? 私が書いたプログラムはC++という言語でCの進化系とでもいう言語です。 Cは拡張子.cですが C++は拡張子.cppでなければなりません。 後、もしも学生さんで情報を専攻されているようでしたら VisualStudio.NETというマイクロソフトが作っているソフトでプログラミングされた方がいいですよ。 Studio.NETはシェアソフトで結構高いですが、普通の大学なら大学が無料貸し出しなどしているはずですので。 このソフトを使用すればいちいちコマンドプロンプトを起動しなくてもよいですし、 実行ファイルの実行を指定した部分でとめるとか、途中の代入数値を表示するとか様々な事が出来ます。 複雑なプログラムを書くようになったら、今特定の変数に何が代入されてるのか確認したい時が出てきたりすると思います。 もしも使用できる環境にあればStudio.NETの使用をオススメします。
- dra2jp
- ベストアンサー率25% (18/72)
こんばんは^^ 質問者さんのような投稿を拝見すると自分もプログラム初心者だった頃を思い出します。 いつもコマンドプロンプトで実行し、味気ないprintf文のような出力を見て終わる・・。 そんな繰り返しの中、C言語勉強してもなんか役に立つのか? そんな疑問を持ちました。 エクセルのようなソフトや、ワードのようなソフトを作るには遠くかけはなれているような気がする・・。と。 しかしWindows自体Cで書かれている事ご存知ですか? C言語って応用をきかせればなんだって出来るようになります。 今作られているソフトのほとんどはCかJAVAで作られていると思います。 PS2のソフトだって実はCで書かれています(違うものもあります)。 今のようなC言語では実現できないような事を実現するもの、それがAPIと呼ばれるものです。 APIってなんだ?と最初思うでしょうけど、なかなか慣れないとわかりにくいものです。 出来る事を広げてくれるものとでもいいましょうか。 簡単なAPIのプログラムを書いてみます。 一番簡単なポップアップボックスを利用できるのはMessageboxではないでしょうか。 まず、このAPIを利用するにはwindows.hをインクルードします? インクルードって何?と思いますよね。 今は #include<stdio.h> と最初に書いていると思います。 これはライブラリをインクルードすると言って、 使用する関数が詰め込まれています。 printf関数で画面に今出力していますよね。 それはstdio.hというヘッダファイルにprintf関数の使用方法のようなものがかかれているのです。 つまりstdio.hがないとprintf文は使えません。 同様にサイン関数コサイン関数であるsin(),cos()などの数学の関数を使うには math.hをインクルードする必要があります。 (後々使う機会があると思います。) このように様々な特徴あるライブラリをインクルードすることで、 出来る事の範囲が広がります。 windowsのAPIを使いたいならwindows.hをインクルードし、以下のように書きます。 #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ MessageBox(NULL , "ここにメッセージを\nイロイロ書いてください。" , "メッセージイロイロ", MB_OKCANCEL | MB_ICONEXCLAMATION | MB_TOPMOST ); return 0; } 日本語の部分は自由に変えてもらって結構です。 上記プログラムを実際にコピペして、コンパイル>実行してみてください。 どうですか?思い通りのメッセージが出せると思います。 見慣れない文章が並ぶと混乱してしまうでしょうね。 ですから基礎が大事なんです。 今しっかり基礎を学んで、多くのライブラリファイルやAPIを使いこなせるようになって 色んなソフトを開発できるようになってください。 PS2なんかの3DゲームのソフトはDirectGraphicsというAPIで書かれているものがほとんどです。 このAPIを使いこなすのは大変難しいですが、難しいからこそ出来る範囲も広がります。 C言語って突き詰めればいくらでも可能性が広がるものだと覚えて置いてくださいね。 後、宣伝 DXライブラリというライブラリを使うと簡単にゲームプログラムが書けるようになりますよ。 もしもプログラムに慣れてきたら一度挑戦してみてはいかがでしょうか。
お礼
熱い回答ありがとうございます。 昨日の段階でAPIというものが僕が目指しているものとわかりました。 そして、APIという言葉で検索してみたら、いろんなサイトが出てきました。 で、いろいろやってみようとしたのですが、コンパイルできません!!(コマンドプロントでやってたときは、コンパイルできてました) 環境設定のせいなんでしょうか? bcc32.cfgとilink32.cfgのファイルは作ったのですが・・・・でも関係なさそう・・・ 拡張子が「.c」だからなのか?? コマンドプロントでコンパイルするとき bcc32 ファイル名.c でコンパイルしてみたのですが・・・ なにやらいろいろエラーが出てきました bcc32 -w ファイル名.c でも一応やってみました・・ 何かヒントを教えていただけませんでしょうか!!お願いします
- Qwerty-36
- ベストアンサー率25% (58/226)
猫でもわかります。 下記のサイトで通常のプログラム編と、SDK編をみてください。 http://www.kumei.ne.jp/c_lang/ って、No2様が。。。
- yaemon_2006
- ベストアンサー率22% (50/220)
- Qwerty-36
- ベストアンサー率25% (58/226)
出来ますよ。 私が普段使っているCはLccWin32っていうフリーのCコンパイラです。 WindowsのAPIを直接書けば良いだけです。 もう5,6年前にWin3.1で動作するソフトを作ったんですけど、それもボーランドのC++コンパイラをCコンパイラとして使いました。 # そういうプログラムを作るときは"windows.h"っていうヘッダファイルをインクルードします。
補足
回答ありがとうございます。 僕は、ボーランドC++5.5のコンパイラーを使っているのですが・・・ 「C言語でコンボボックス」みたいなプログラムを作るのにコンパイラは、ボーランドC++5.5でもかまわないということですね。
お礼
できました! ありがとうございました。