トップページ⇒tech
76コメント25KB

ウィンドウが出るプログラムは

■ このスレッドは過去ログ倉庫に格納されています
0001プログラム暦半年NGNG
今年大学に入って授業でC言語を学んでいる者です。
今までに課題などで作ったプログラムは、MS-DOSプロンプトみたいな
黒い画面の上で実行されるものばかりだったので、フリーウェアとかでよくある
ウィンドウが出てその上で実行されるプログラムも作ってみたいのですが、
どうやったらできるのかが全くわかりません。
どなたかやり方またはやり方が紹介されているサイトを教えていただけませんか。
お願いします。
0002SAGENGNG
OSは?
0003プログラム暦半年NGNG
Windows98SEです。
コンパイラはフリーウェアのbcc55というものです。
0004名無しさん@お腹いっぱい。NGNG
フリーでいいなら
VGUI
http://objectcentral.com/main.htm
かな
0005名無しのエリーNGNG
フリーならJavaでしょ。
CやってるならJavaできるんじゃない。
Java流行ってるよ!

JDK: http://java.sun.com/products/jdk/1.2/ja/download-windows.html
ドキュメント: http://java.sun.com/products/jdk/1.2/ja/download-ja-docs.html
0006( ゚Д゚) ゴルァNGNG
使い方ならこのあたりかな?俺もBCCで最近始めた。
あと、ウィンドウなら -W オプションでコンパイルしなきゃならんぞ。
その場合のメイン関数は WinMain だ。あとはサイト参考にしろ。
http://www.kumei.ne.jp/c_lang/index.html
http://web.kyoto-inet.or.jp/people/ysskondo/
0007名無しさん@お腹いっぱい。NGNG
「猫でも〜」を見て自前でウィンドウを作るのが大変だとわかりやる気を無くした所で
自前でウィンドウを作らないHelloプログラムでも
#include <windows.h>

int WINAPI WinMain(HINSTANCE hCurInstance@` HINSTANCE hPrevInstance@`
LPSTR lpCmdLine@` int nCmdShow)
{
switch(MessageBox(NULL@` "Select your answer."@`
"Question window"@` MB_YESNOCANCEL | MB_ICONQUESTION))
{
case IDYES:
MessageBox(NULL@` "Your answer is YES."@` "result"@` MB_OK);
break;
case IDNO:
MessageBox(NULL@` "Your answer is NO."@` "result"@` MB_OK);
break;
case IDCANCEL:
MessageBox(NULL@` "Your answer is CANCEL."@` "result"@` MB_OK);
break;
default:
MessageBox(NULL@` "Fatal: invalid return value."@` "result"@` MB_ICONSTOP);
break;
}
return 0;
}

ObjectWindowsがあればウィンドウ作るHelloもこれだけなんだけどね…
int OwlMain(int argc@` char* argv[])
{
return TApplication("Hello").Run();
}
0008プログラム暦半年NGNG
すごい…すごく、大変なんですね。ウィンドウを出すのは。
6さんのリンク先ページの最初のほうのソースコードが
いきなり理解できません。7さんのもぜんぜんわかりません。
今はC言語はポインタ、構造体を学び終えたところなのですが、
本当に何もかもちんぷんかんぷんです。まだまだ文字だけ表示させて
練習しろってことなんでしょうか。
0009名無しさん@お腹いっぱい。NGNG
ウインドウを出すだけのプログラムの
理解できないと思われる物のほとんどがデータ型だったり
ハンドル名だったり構造体名だったりするだけだ。
最初はそうする決まりだ、ぐらいに考えてやればいいと思うよ。
0010プログラム暦半年NGNG
>9さん
アドバイスありがとうございます。くじけずにもう少し頑張ります。
でも、もう今日は眠い…明日以降、勉強を始めてみます。
0011( ゚Д゚) ゴルァNGNG
俺も混乱したけど大体似たような書式を使いまわすだけだよ。
データ型は確かに多すぎてわけわかんね。
ヘッダファイルを参照すれば結局見知った型だったりするんだけどな。
猫のサンプルを実行してみたり自分なりにいじってみたりすればいいんじゃないか。
0012名無しさん@お腹いっぱい。NGNG
どーせ、CもC++も区別できねえんだから
C++Builderつかってればいいじゃん。
0013名無しさん@お腹いっぱい。NGNG
わしもそう思う。
惜しむらくはC++Builderは無料じゃないところだ
1はそのくらいの金はかける気があるのだろうか?
0014名無しさん@お腹いっぱい。NGNG
「ウィンドウが出るプログラムが作りたい」
というのが目的ならHSP使えばすぐ解決だね。
0015>1NGNG
コンソールアプリからスタートするなら
とりあえず、これから始めるといいかも
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=957341074
0016名無しさん@お腹いっぱい。NGNG
ウィンドウが出るなら、Tkお勧め。
0017名無しさん@お腹いっぱい。NGNG
>惜しむらくはC++Builderは無料じゃないところだ
そういうバカは本代も出さないし無視ですな。

費用対効果って言葉がある。
フリーのBCC使って100時間勉強してもマトモなWinアプリ作れねえのが
数万円のBCB10時間で出来ることと比較して考えられたらいいのにね。
趣味でも90時間余計に使うのに躊躇しないのなら、アホ
0018名無しさん@お腹いっぱい。NGNG
CでGUI安くやりたいんならLinux+X+Gladeなんてどう
ガクセイさんだしお勉強にゃいいかもよ。
ちなみにこんなもんです。↓赤帽なんかにも入ってる。
http://www.ibm.co.jp/developerworks/linux/j_gnome-glade.html
olit(こんときゃ仕事)以来久しぶりにXで遊んでるよ。
遊びでXのプログラミングするようになるとは思わなんだ。
0019( ゚Д゚) ゴルァNGNG
確かにCなどを始めたばかりの奴にBCCでウィンドウアプリはきっついと思う。
俺は詰まり詰まりでなんとか進んでるが英語読解力がとても欲しい。
0020名無しさん@お腹いっぱい。NGNG
むかし(10年以上前)Macで始めてGUIプログラム書いたときのことを思い出すよ…
ウインドウが画面に出るまでに何回再起動したことか。
0021名無しさん@お腹いっぱい。NGNG
Cやってたら、やねげでもいいんでない?
0022名無しさん@お腹いっぱい。NGNG
VB。
0023名無しさん@お腹いっぱい。NGNG
最終的に出来あがったものを何かに使いたいのではなく学習目的であるのなら、

Be使え!

BeやったらOSパッケージ買えばIDE付いてくるし(デバッガ込み)
クラス3つ宣言して少しメンバ関数読んだだけで Hello World までいけるよ。
C++の構文覚えてたらWINより全然ラク。
0024名無しさん@お腹いっぱい。NGNG
>>23
Linux(か*BSD)で wish やったらたった 1行で Hello World できるよ。(ワラ
$ echo 'button .b -text "Hello World" -command exit; pack .b' | wish
0025名無しさん@お腹いっぱい。NGNG
うーん、正直猫でもわかるでさっぱり理解できないならWindows APIプログラミングはあきらめて
別の方法を模索したほうがいいと思う
0026名無しさん@お腹いっぱい。NGNG
>1
>今はC言語はポインタ、構造体を学び終えたところなのですが、

ウィンドウを作るのはまだ早いです。
0027( ゚Д゚) ゴルァNGNG
ああ…理解したわけじゃなくて学んだだけか…なら早すぎる。
多重配列と聞いて尻込みしなくなってからだ。
0028名無しさん@お腹いっぱい。 NGNG
アセンブラ−Cの初歩−DirectX−Direct3D−WindowsGDI(普通のウィンドウ)

自分はこの順番だった。
ゲームプログラマーです。
0029プログラム暦半年NGNG
多くの意見が聞けてうれしいです。

>27
自分ではそこそこ理解もしたと思っていますが…どうなんでしょうか。
0030名無しさん@お腹いっぱい。NGNG
http://member.nifty.ne.jp/f-sasaki/index2.html

CEDITどうよ?
0031( ゚Д゚) ゴルァNGNG
>>29
えーっと、じゃあ共用体とかポインタ配列ってわかるんだよな。
猫〜のサイトはソースを実行してればどういうもんだかなんとなくわかると思うんだがな。
あれ以上わかりやすくってのは無理だと思うが。
厳密に何やってるんだかわかんないから気持ち悪いってことか?
何がわかって何がわからないのか書かない全部わかんねえ(処置無し)と思ってしまうぞ。

俺は C−アセンブラーPerl−今からGDI ってとこかな。
cedit つうとツクールのエディタ思い出しちまう俺
0032名無しさん@お腹いっぱい。NGNG
bcc55だけでもWindowsプログラムを作ることができる。
ただし、fopenとかstrcpyみたいな標準のC言語の関数だけでは無理。
そこで、"WindowsAPI"っていうWindows専用の特別な関数群を使う。
使い方は"windows.h"をインクルードすればいい

WindowsAPIを使った例
///////////////////////////////////////
#include<stdio.h>
#include<windows.h>
int main(void){
int w@`h;
w = GetSystemMetrics(SM_CXSCREEN);
h = GetSystemMetrics(SM_CYSCREEN);
printf("このパソコンの画面は、ヨコ%dピクセル、タテ%dピクセルです。"@`w@`h);
return 0;
}
////////////////////////////////////////
この場合、GetSystemMetrics()っていうのが、WindowsAPIの一種。
WindowsAPIにはほかにもいろいろな関数がある。
0033名無しさん@お腹いっぱい。NGNG
組め!
ガスガス組め!
ひたすら組め!
だいたい猫のサイト見て分かんなかったってまだ一日しかたってないじゃないか?
何回あのページ読んだ?3回読んで分からんかったら30回読め!
それから頭で悩んでるだけでなく実際にコードを打って思考錯誤しろ!
分からなくてもいじってる内に分かってくることもある。
あきらめるのはそれからでも遅くない。
結果的に理解できなかったとしてもそこでした試行錯誤は
確実に実力になってるはず。
0034プログラム暦半年NGNG
>>32さん
かなりわかりやすい説明をありがとうございます。
APIというのはそういうことだったんですね。

>>33さん
ごもっともです!アドバイスありがとうございます。
0035名無しさん@お腹いっぱい。NGNG
ベクターでwin95.hっていうのをダウンロードして使うといいっすよ
お手軽にちょっとしたウインドウプログラムが書けるっす
シェアだけどこんなのに1000円は高い
払わなくてもずっと使えるよ

http://www.vector.co.jp/soft/win95/prog/se057800.html?l
0036>35NGNG
逝ってよし。
0037名無しさん!uucpNGNG
>>35
これってwin95.h内にCソースが入っているよ・・・

せめて win95.c (実コード) と win95.h (プロトタイプ宣言と
その他構造体とかの定義) に分けるべきなんでは。
0038名無しさん@お腹いっぱい。NGNG
所詮#include
0039>35NGNG
やってみたが、sample が 動かん。。。
0040名無しさん@お腹いっぱい。NGNG
>>35
こんなんにカネ払う奴いるのか?
0041名無しさん@お腹いっぱい。NGNG
>35
こんなヘッダ使ってWindowsプログラムつくっても
自分の為にならないからやめたほうがいいよ。
0042名無しさん@お腹いっぱい。NGNG
変な癖つきそうだからソースは参考程度でやめといたほうがいいと思う…
0043名無しさん@お腹いっぱい。NGNG
なつかしー まだあったんだ
はずかしながらこれでプレ版つくって客先に持っていったことがあるよ
DOSからの移植ソフトのときだったけど
もちろん後でちゃんと組んだけどさ

あと使い捨てプログラムをDOSじゃなくて
WINで欲しい時(絵が必要なときとか)
よく使ってたっす、だっていちいちプロジェクト作ってとか
めんどいんだもん
参考程度っていうけどソースとか参考に*すら*しちゃだめっすよ
あくまで、お手軽ウインドウヘッダって思わないと
.c .hに別れてないからファイル一個でいいしね(苦笑い)
0044名無しさん@お腹いっぱい。NGNG
これ、どうよ。
http://www.vector.co.jp/soft/win95/prog/se168682.html

 端的に言うと、ボーランドのC++Builderみたいなものです。
 Windows95@`98@`WindowsNT@`Windows2000@`Linux上やFreeBSD@`SunOS上で動作する、
完全フリーのウィンドウアプリケーションの統合開発環境です。
 次のような特長があります。

・プラットフォームに依存しないウィンドウアプリケーションの開発
・他のライブラリに依存しない完全オリジナルのクラスライブラリ
・ウィンドウアプリケーションの編集が簡単にできるビジュアルウィンドウエディタ
・アプリケーションビルダの自動ソースコードジェネレート機能
・イベント駆動方式による必要最小限のソースコード記述
・アプリケーションの構築作業を簡単にするプロジェクトマネージメント機能
・メイクファイルの自動生成とビルド機能
・拡張性を保証する、追加クラスライブラリ構築機能と、クラスライブラリインポート機能
・快適な開発環境を保証する、エディタやコンパイラ、デバッガの自由な選択

作者のサイトにあるスナップショット
www.asahi-net.or.jp/~uj3s-hrby/snapshot.html
0045名無しさん@お腹いっぱい。NGNG
>>44
どうよもなにも、使ってみれば分かるだろ
0046名無しさんi486NGNG
猫でも…は始めの基礎のほうの説明が古いので僕は
http://www1.plala.or.jp/miyamo/
をおすすめする。(でもVC++5〜推奨だけど)
ここで勉強していろいろやりたくなったら猫を見てね。
0047名無しさん@お腹いっぱい。NGNG
みやもちゃん応援してます!
0048名無しさん@お腹いっぱい。NGNG
MS-IMEみたいに、何がなんでも最前面にいるウインドウを作りたいんですが
どうするのが一番いいでしょうか?
今のところはタイマで監視してます。
0049名無しさん@お腹いっぱい。NGNG
>48
そういうオプション無かったっけ?
CreateWindow...
0050名無しさん@お腹いっぱい。NGNG
>48
SetWindowPos(hwnd@`HWND_TOPMOST@`0@`0@`0@`0@`SWP_NOMOVE | SWP_NOSIZE);
これでどうでしょ?
005150NGNG
49の言う通りオプションあるみたいなんだけど…
俺の場合うまくいかない(;´Д`)
0052名無しさん@お腹いっぱい。NGNG
でかいね。16Mかよ…>44
0053名無しさん@お腹いっぱい。NGNG
>48

SetWindowLong(hWnd@` GWL_EXSTYLE@` GetWindowLong(hWnd@` GWL_EXSTYLE) | WS_EX_TOPMOST);
0054名無しさん@お腹いっぱい。NGNG
>48
CreateWindowEx関数に「WS_EX_TOPMOST」のフラッグを渡すのが一番簡単では?
50と53はすでにクリエイトしたWindowに対してフラッグを変更する場合ね。
0055ななしさん@でぶぬるNGNG
Tcl/Tkはどうよ。
0056名無しさん@お腹いっぱい。NGNG
ドラッグ&ドロップを実装したいんですが、どこかにいい資料はないでしょうか?
選択したテキストをアプリのアイコンにドラッグ&ドロップして渡したり、
ファイルのアイコンをアプリにドラッグ&ドロップで渡したいんですが。
0057名無しさん@お腹いっぱい。NGNG
マルチポスト?>56
0058名無しさん@お腹いっぱい。NGNG
56です。
私は他には書いてません。
私より先に、どこかで同じ質問が出てたんでしょうか?
それならすみません。
0059XNGNG
VBでいいんじゃないの?
簡単だし、楽しさがわかるよ。きっときっと。
0060名無しさん@お腹いっぱい。NGNG
>56

http://www.sm.rim.or.jp/~shishido/dropfile.html

 とか。アプリのアイコンにドロップして起動したい、
という事なら起動時の引数にドロップされたファイル
のパスが入っているはず。
0061名無しさん@お腹いっぱい。NGNG
OLEなDnDはちょっと面倒。
0062名無しさん@お腹いっぱい。NGNG
>59
冗談でもそうゆう事は言うな!
0063YNGNG

VBでいいんじゃないの?
結局使えないし、DLL地獄がわかるよ。きっときっと。
0064ああっ名無しさまっNGNG
>46さん
ありがとうございます。見てみます。

>59さん、63さん
今はとりあえずC言語を学んでいるので、そう言わないで下さい。
0065名無しさん@お腹いっぱい。NGNG
>>64
本当に出来る人は、言語に依存しないものだよ。
C言語を今やってるにしても、その他の言語にも興味を持ってたほうがいいよ。

「Objective-C?やったことないけど、CとC++のアイノコみたいなもん?
 まぁ、明日までに一本つくってみますよ」
0066名無しさん@お腹いっぱい。NGNG
http://www.nakka.com/lib/
OLEなD&Dのサンプル
0067名無しさん@お腹いっぱい。NGNG
Delphi or C++Builder
0068名無しさん@お腹いっぱい。NGNG
猫でもわかるプログラミングは
ウィンドウズプログラムの最初の方ははっきりいってわかりづらいと思う。
ttp://www.biwa.ne.jp/~m--tani/LecturesForSundayProgrammers/Index.html

こっちの方が、導入部はいいと思う
0069天才プログラマーNGNG
1>ウィンドウが出てその上で実行されるプログラムも作ってみたいのですが、

ウィンドウを出すためだけならMFCに作ってもらうのが手っ取り早いと思います。
そして、ウィンドウの中で動くプログラムのためにあなたの頭脳資源を生かす方が
得策ではないでしょうか?
0070名無しさん@お腹いっぱい。NGNG
JavaのSwingは遅いけど簡単です。一度使うとWin32API・MFCは
触りたくなくなる。流行ってるみたいだし、今からGUIアプリ
作りたいならおすすめ〜。
0071名無しさん@お腹いっぱい。NGNG
>70
アドレス希望。
0072天才プログラマーNGNG
『ウィンドウが出る』というのとはちょっとずれますが
Java appletで作ると、作ったプログラムをwebでみんなに
すぐに使ってもらえるという利点もありますョ。

http://members.tripod.com/~kuroda/kanji.html
0073名無しさん@お腹いっぱい。NGNG
>71
JDK1.2、1.3におまけ?でついているファウンデーションクラス
ライブラリなので、SunのJavaサイトいけばDLできます。
Java関係の雑誌のおまけでもついてるはず。
(ただです。それだけでもお勧め。)
0074名無しさん@お腹いっぱい。NGNG
おまけってあなた・・・
0075プログラム歴半年NGNG
「猫でもできる〜」や、68さんが教えて下さったページを見たり、
69さんのおっしゃるMFCとはなんぞや、と調べてみたりしていたのですが、
年末で忙しくなってそれどころではなくなり、勉強が一時ストップしています。
いろいろ教えて下さっている皆さま、申し訳ありません。
0076デフォルトの名無しさんNGNG
いや、別に君が一生ウィンドウが出るプログラムを作れないだけだから
いいけど。
■ このスレッドは過去ログ倉庫に格納されています