こんばんわ
プログラミングを最近始めた超初心者です
どれくらい初心者かというと、コマンドプロントで「はじめてのC言語」みたいな文字列を表示するプログラムを書いたことがある程度のプログラミング歴です。
で、質問なんですが、C言語の入門書をパラパラと読んでいるのですが、C言語って、実行するときいつもコマンドプロントでしか実行できず、黒画面で白文字のプログラムしかできないような印象を受けるのですが、C言語で作ったプログラム(exeファイル)をダブルクリックしたら、エクセルで言うところのコントロールツールや、ダイヤログボックスが出てくるようなプログラムを作ることはできるのでしょうか???
で、もし、できるのであれば、そういう記事を紹介している本やサイトがあれば教えてほしいのですが、宜しくお願いいたします。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
ものすごく余談ですが、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個作ってみたいなぁとお盛っています。
No.6
- 回答日時:
あ、補足よくみていませんでした^^;
その症状だと
Error: 外部シンボル '_main' が未解決
とかってエラーでましたか?
これはmain関数がありませんと言う意味です。
-wでやってみたということですが
create windowsアプリが行いたかったのでしょうか。
そのコマンドは
bcc32 -tW [filename].cpp
ではないでしょうか?
[filename]の部分は自分で変更してください。
もしも私の書いたプログラムでしたらこのコマンドでコンパイルできます。
実際コマンドプロンプトでやってみて私の環境ではできましたよ。
コンパイルのコマンドは上記の方法で行ってください。
また、bccのコマンドは
bcc32
とタイプすれば一覧表が表示されます。
これからの為に言いますが、エラーが出て行き詰まっていて、誰かに助けを求める時
「どのようなエラーが出たのか」
を明記するのが基本ですのでそこのとこは書いた方がいいですよ。
このようなエラーが出たのですが、と言ってもらった方がこちらもわかりやすいですしね。
大量にエラーが何十行も出た場合は全部貼れとは言いませんけど^^;
エラーがイロイロでてきたといいましたけど、「エラー」がそんなにでました?
警告ではないですか?
例えば
警告 W8057 cc.cpp 6: パラメータ 'hInstance' は一度も使用されない
このような。
警告とエラーは違い、警告は無視してもコンパイルできます。
エラーが出た時はコンパイル出来ません。
定義した変数を使わなかっただけでも警告は出ますので、警告はそんなに気にしなくて良い場合が多いです。
もしも上記のコンパイルコマンドで私の書いたプログラムがコンパイルできなかった場合また聞いてください。
No.5
- 回答日時:
あ、それは拡張子がcppでないからじゃないでしょうか?
私が書いたプログラムを試されたのでしょうか?
私が書いたプログラムはC++という言語でCの進化系とでもいう言語です。
Cは拡張子.cですが
C++は拡張子.cppでなければなりません。
後、もしも学生さんで情報を専攻されているようでしたら
VisualStudio.NETというマイクロソフトが作っているソフトでプログラミングされた方がいいですよ。
Studio.NETはシェアソフトで結構高いですが、普通の大学なら大学が無料貸し出しなどしているはずですので。
このソフトを使用すればいちいちコマンドプロンプトを起動しなくてもよいですし、
実行ファイルの実行を指定した部分でとめるとか、途中の代入数値を表示するとか様々な事が出来ます。
複雑なプログラムを書くようになったら、今特定の変数に何が代入されてるのか確認したい時が出てきたりすると思います。
もしも使用できる環境にあればStudio.NETの使用をオススメします。
No.4
- 回答日時:
こんばんは^^
質問者さんのような投稿を拝見すると自分もプログラム初心者だった頃を思い出します。
いつもコマンドプロンプトで実行し、味気ない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ライブラリというライブラリを使うと簡単にゲームプログラムが書けるようになりますよ。
もしもプログラムに慣れてきたら一度挑戦してみてはいかがでしょうか。
参考URL:http://homepage2.nifty.com/natupaji/DxLib/
熱い回答ありがとうございます。
昨日の段階でAPIというものが僕が目指しているものとわかりました。
そして、APIという言葉で検索してみたら、いろんなサイトが出てきました。
で、いろいろやってみようとしたのですが、コンパイルできません!!(コマンドプロントでやってたときは、コンパイルできてました)
環境設定のせいなんでしょうか?
bcc32.cfgとilink32.cfgのファイルは作ったのですが・・・・でも関係なさそう・・・
拡張子が「.c」だからなのか??
コマンドプロントでコンパイルするとき
bcc32 ファイル名.c
でコンパイルしてみたのですが・・・
なにやらいろいろエラーが出てきました
bcc32 -w ファイル名.c
でも一応やってみました・・
何かヒントを教えていただけませんでしょうか!!お願いします
No.3
- 回答日時:
猫でもわかります。
下記のサイトで通常のプログラム編と、SDK編をみてください。
http://www.kumei.ne.jp/c_lang/
って、No2様が。。。
参考URL:http://www.kumei.ne.jp/c_lang/
No.1
- 回答日時:
出来ますよ。
私が普段使っているCはLccWin32っていうフリーのCコンパイラです。
WindowsのAPIを直接書けば良いだけです。
もう5,6年前にWin3.1で動作するソフトを作ったんですけど、それもボーランドのC++コンパイラをCコンパイラとして使いました。
# そういうプログラムを作るときは"windows.h"っていうヘッダファイルをインクルードします。
参考URL:http://www.cs.virginia.edu/~lcc-win32/
この回答への補足
回答ありがとうございます。
僕は、ボーランドC++5.5のコンパイラーを使っているのですが・・・
「C言語でコンボボックス」みたいなプログラムを作るのにコンパイラは、ボーランドC++5.5でもかまわないということですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- その他(プログラミング・Web制作) 変換のプログラムを教えてください。 6 2023/07/01 09:57
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語の質問です、プログラミング初心者です このような文字列があった場合 "abcdef☆ghijk 4 2022/11/22 10:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
コンパイルできません。
-
バッチからsqlplusの接続エラー...
-
fortranでプログラムを実行する...
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
HEWを使用しているのですが、こ...
-
HANDLEの宣言でのエラー
-
WindowsからLinuxへの移植
-
Handlesについて
-
1つのDLLにソースを1500個ほど...
-
dos.hについて
-
VB2010でのSQL日付フォーマ...
-
C言語でpgm形式の画像を読み込...
-
どうしてもできない!!
-
sys/time.hのインクルードがで...
-
Excelのエラーで困ってます。
-
error C3867 関数呼び出しには...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
バッチからsqlplusの接続エラー...
-
Excelのエラーで困ってます。
-
HEWを使用しているのですが、こ...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
fortranでプログラムを実行する...
-
BC30002: 型 'ListItem' が定義...
-
VBAでファイルを開くプログラム...
-
sys/time.hのインクルードがで...
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
LPCWSTRとchar
-
RightとLeft関数のライブ...
-
Handlesについて
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報