■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
ウィンドウが出るプログラムは
1 名前: プログラム暦半年 投稿日: 2000/11/20(月) 23:01
今年大学に入って授業でC言語を学んでいる者です。
今までに課題などで作ったプログラムは、MS-DOSプロンプトみたいな
黒い画面の上で実行されるものばかりだったので、フリーウェアとかでよくある
ウィンドウが出てその上で実行されるプログラムも作ってみたいのですが、
どうやったらできるのかが全くわかりません。
どなたかやり方またはやり方が紹介されているサイトを教えていただけませんか。
お願いします。


2 名前: SAGE 投稿日: 2000/11/20(月) 23:23
OSは?


3 名前: プログラム暦半年 投稿日: 2000/11/20(月) 23:34
Windows98SEです。
コンパイラはフリーウェアのbcc55というものです。


4 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/20(月) 23:42
フリーでいいなら
VGUI
http://objectcentral.com/main.htm
かな



5 名前: 名無しのエリー 投稿日: 2000/11/20(月) 23:55
フリーなら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



6 名前: ( ゚Д゚) ゴルァ 投稿日: 2000/11/21(火) 00:03
使い方ならこのあたりかな?俺もBCCで最近始めた。
あと、ウィンドウなら -W オプションでコンパイルしなきゃならんぞ。
その場合のメイン関数は WinMain だ。あとはサイト参考にしろ。
http://www.kumei.ne.jp/c_lang/index.html
http://web.kyoto-inet.or.jp/people/ysskondo/


7 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 00:19
「猫でも〜」を見て自前でウィンドウを作るのが大変だとわかりやる気を無くした所で
自前でウィンドウを作らない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();
}



8 名前: プログラム暦半年 投稿日: 2000/11/21(火) 00:57
すごい…すごく、大変なんですね。ウィンドウを出すのは。
6さんのリンク先ページの最初のほうのソースコードが
いきなり理解できません。7さんのもぜんぜんわかりません。
今はC言語はポインタ、構造体を学び終えたところなのですが、
本当に何もかもちんぷんかんぷんです。まだまだ文字だけ表示させて
練習しろってことなんでしょうか。


9 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 01:09
ウインドウを出すだけのプログラムの
理解できないと思われる物のほとんどがデータ型だったり
ハンドル名だったり構造体名だったりするだけだ。
最初はそうする決まりだ、ぐらいに考えてやればいいと思うよ。



10 名前: プログラム暦半年 投稿日: 2000/11/21(火) 01:14
>9さん
アドバイスありがとうございます。くじけずにもう少し頑張ります。
でも、もう今日は眠い…明日以降、勉強を始めてみます。


11 名前: ( ゚Д゚) ゴルァ 投稿日: 2000/11/21(火) 01:21
俺も混乱したけど大体似たような書式を使いまわすだけだよ。
データ型は確かに多すぎてわけわかんね。
ヘッダファイルを参照すれば結局見知った型だったりするんだけどな。
猫のサンプルを実行してみたり自分なりにいじってみたりすればいいんじゃないか。


12 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 02:37
どーせ、CもC++も区別できねえんだから
C++Builderつかってればいいじゃん。


13 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 05:23
わしもそう思う。
惜しむらくはC++Builderは無料じゃないところだ
1はそのくらいの金はかける気があるのだろうか?


14 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 06:10
「ウィンドウが出るプログラムが作りたい」
というのが目的ならHSP使えばすぐ解決だね。


15 名前: >1 投稿日: 2000/11/21(火) 08:17
コンソールアプリからスタートするなら
とりあえず、これから始めるといいかも
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=957341074



16 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 14:45
ウィンドウが出るなら、Tkお勧め。



17 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 15:13
>惜しむらくはC++Builderは無料じゃないところだ
そういうバカは本代も出さないし無視ですな。

費用対効果って言葉がある。
フリーのBCC使って100時間勉強してもマトモなWinアプリ作れねえのが
数万円のBCB10時間で出来ることと比較して考えられたらいいのにね。
趣味でも90時間余計に使うのに躊躇しないのなら、アホ


18 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 17:37
CでGUI安くやりたいんならLinux+X+Gladeなんてどう
ガクセイさんだしお勉強にゃいいかもよ。
ちなみにこんなもんです。↓赤帽なんかにも入ってる。
http://www.ibm.co.jp/developerworks/linux/j_gnome-glade.html
olit(こんときゃ仕事)以来久しぶりにXで遊んでるよ。
遊びでXのプログラミングするようになるとは思わなんだ。


19 名前: ( ゚Д゚) ゴルァ 投稿日: 2000/11/21(火) 18:13
確かにCなどを始めたばかりの奴にBCCでウィンドウアプリはきっついと思う。
俺は詰まり詰まりでなんとか進んでるが英語読解力がとても欲しい。


20 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 18:30
むかし(10年以上前)Macで始めてGUIプログラム書いたときのことを思い出すよ…
ウインドウが画面に出るまでに何回再起動したことか。


21 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 19:06
Cやってたら、やねげでもいいんでない?


22 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 19:21
VB。



23 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 20:26
最終的に出来あがったものを何かに使いたいのではなく学習目的であるのなら、

Be使え!

BeやったらOSパッケージ買えばIDE付いてくるし(デバッガ込み)
クラス3つ宣言して少しメンバ関数読んだだけで Hello World までいけるよ。
C++の構文覚えてたらWINより全然ラク。


24 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 21:14
>>23
Linux(か*BSD)で wish やったらたった 1行で Hello World できるよ。(ワラ
$ echo 'button .b -text "Hello World" -command exit; pack .b' | wish


25 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 22:10
うーん、正直猫でもわかるでさっぱり理解できないならWindows APIプログラミングはあきらめて
別の方法を模索したほうがいいと思う



26 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 22:19
>1
>今はC言語はポインタ、構造体を学び終えたところなのですが、

ウィンドウを作るのはまだ早いです。



27 名前: ( ゚Д゚) ゴルァ 投稿日: 2000/11/21(火) 23:16
ああ…理解したわけじゃなくて学んだだけか…なら早すぎる。
多重配列と聞いて尻込みしなくなってからだ。


28 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 00:25
アセンブラ−Cの初歩−DirectX−Direct3D−WindowsGDI(普通のウィンドウ)

自分はこの順番だった。
ゲームプログラマーです。



29 名前: プログラム暦半年 投稿日: 2000/11/22(水) 01:02
多くの意見が聞けてうれしいです。

>27
自分ではそこそこ理解もしたと思っていますが…どうなんでしょうか。


30 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 01:26
http://member.nifty.ne.jp/f-sasaki/index2.html

CEDITどうよ?


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

俺は C−アセンブラーPerl−今からGDI ってとこかな。
cedit つうとツクールのエディタ思い出しちまう俺


32 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 02:32
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にはほかにもいろいろな関数がある。



33 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 03:00
組め!
ガスガス組め!
ひたすら組め!
だいたい猫のサイト見て分かんなかったってまだ一日しかたってないじゃないか?
何回あのページ読んだ?3回読んで分からんかったら30回読め!
それから頭で悩んでるだけでなく実際にコードを打って思考錯誤しろ!
分からなくてもいじってる内に分かってくることもある。
あきらめるのはそれからでも遅くない。
結果的に理解できなかったとしてもそこでした試行錯誤は
確実に実力になってるはず。


34 名前: プログラム暦半年 投稿日: 2000/11/23(木) 13:36
>>32さん
かなりわかりやすい説明をありがとうございます。
APIというのはそういうことだったんですね。

>>33さん
ごもっともです!アドバイスありがとうございます。


35 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/28(火) 01:10
ベクターでwin95.hっていうのをダウンロードして使うといいっすよ
お手軽にちょっとしたウインドウプログラムが書けるっす
シェアだけどこんなのに1000円は高い
払わなくてもずっと使えるよ

http://www.vector.co.jp/soft/win95/prog/se057800.html?l


36 名前: >35 投稿日: 2000/11/28(火) 14:31
逝ってよし。



37 名前: 名無しさん!uucp 投稿日: 2000/11/28(火) 14:53
>>35
これってwin95.h内にCソースが入っているよ・・・

せめて win95.c (実コード) と win95.h (プロトタイプ宣言と
その他構造体とかの定義) に分けるべきなんでは。



38 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/28(火) 15:29
所詮#include


39 名前: >35 投稿日: 2000/11/28(火) 17:38
やってみたが、sample が 動かん。。。



40 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/28(火) 20:30
>>35
こんなんにカネ払う奴いるのか?



41 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/28(火) 20:58
>35
こんなヘッダ使ってWindowsプログラムつくっても
自分の為にならないからやめたほうがいいよ。


42 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/28(火) 23:47
変な癖つきそうだからソースは参考程度でやめといたほうがいいと思う…


43 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/30(木) 23:27
なつかしー まだあったんだ
はずかしながらこれでプレ版つくって客先に持っていったことがあるよ
DOSからの移植ソフトのときだったけど
もちろん後でちゃんと組んだけどさ

あと使い捨てプログラムをDOSじゃなくて
WINで欲しい時(絵が必要なときとか)
よく使ってたっす、だっていちいちプロジェクト作ってとか
めんどいんだもん
参考程度っていうけどソースとか参考に*すら*しちゃだめっすよ
あくまで、お手軽ウインドウヘッダって思わないと
.c .hに別れてないからファイル一個でいいしね(苦笑い)


44 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/03(日) 15:10
これ、どうよ。
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


45 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/03(日) 15:19
>>44
どうよもなにも、使ってみれば分かるだろ


46 名前: 名無しさんi486 投稿日: 2000/12/03(日) 15:54
猫でも…は始めの基礎のほうの説明が古いので僕は
http://www1.plala.or.jp/miyamo/
をおすすめする。(でもVC++5〜推奨だけど)
ここで勉強していろいろやりたくなったら猫を見てね。


47 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/04(月) 00:02
みやもちゃん応援してます!


48 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/04(月) 00:41
MS-IMEみたいに、何がなんでも最前面にいるウインドウを作りたいんですが
どうするのが一番いいでしょうか?
今のところはタイマで監視してます。



49 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/04(月) 01:53
>48
そういうオプション無かったっけ?
CreateWindow...


50 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/04(月) 02:28
>48
SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
これでどうでしょ?


51 名前: 50 投稿日: 2000/12/04(月) 02:36
49の言う通りオプションあるみたいなんだけど…
俺の場合うまくいかない(;´Д`)


52 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/04(月) 03:23
でかいね。16Mかよ…>44


53 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/04(月) 13:22
>48

SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST);



54 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/05(火) 08:38
>48
CreateWindowEx関数に「WS_EX_TOPMOST」のフラッグを渡すのが一番簡単では?
50と53はすでにクリエイトしたWindowに対してフラッグを変更する場合ね。



55 名前: ななしさん@でぶぬる 投稿日: 2000/12/05(火) 15:13
Tcl/Tkはどうよ。


56 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/05(火) 23:08
ドラッグ&ドロップを実装したいんですが、どこかにいい資料はないでしょうか?
選択したテキストをアプリのアイコンにドラッグ&ドロップして渡したり、
ファイルのアイコンをアプリにドラッグ&ドロップで渡したいんですが。



57 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/05(火) 23:23
マルチポスト?>56


58 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 00:02
56です。
私は他には書いてません。
私より先に、どこかで同じ質問が出てたんでしょうか?
それならすみません。



59 名前: X 投稿日: 2000/12/06(水) 05:35
VBでいいんじゃないの?
簡単だし、楽しさがわかるよ。きっときっと。


60 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 06:37
>56

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

 とか。アプリのアイコンにドロップして起動したい、
という事なら起動時の引数にドロップされたファイル
のパスが入っているはず。



61 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 07:01
OLEなDnDはちょっと面倒。


62 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 07:43
>59
冗談でもそうゆう事は言うな!



63 名前: Y 投稿日: 2000/12/06(水) 08:08

VBでいいんじゃないの?
結局使えないし、DLL地獄がわかるよ。きっときっと。


64 名前: ああっ名無しさまっ 投稿日: 2000/12/06(水) 09:40
>46さん
ありがとうございます。見てみます。

>59さん、63さん
今はとりあえずC言語を学んでいるので、そう言わないで下さい。


65 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 10:03
>>64
本当に出来る人は、言語に依存しないものだよ。
C言語を今やってるにしても、その他の言語にも興味を持ってたほうがいいよ。

「Objective-C?やったことないけど、CとC++のアイノコみたいなもん?
 まぁ、明日までに一本つくってみますよ」


66 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 10:35
http://www.nakka.com/lib/
OLEなD&Dのサンプル


67 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 10:53
Delphi or C++Builder


68 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/06(水) 17:08
猫でもわかるプログラミングは
ウィンドウズプログラムの最初の方ははっきりいってわかりづらいと思う。
ttp://www.biwa.ne.jp/~m--tani/LecturesForSundayProgrammers/Index.html

こっちの方が、導入部はいいと思う


69 名前: 天才プログラマー 投稿日: 2000/12/16(土) 14:40
1>ウィンドウが出てその上で実行されるプログラムも作ってみたいのですが、

ウィンドウを出すためだけならMFCに作ってもらうのが手っ取り早いと思います。
そして、ウィンドウの中で動くプログラムのためにあなたの頭脳資源を生かす方が
得策ではないでしょうか?


70 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/16(土) 14:47
JavaのSwingは遅いけど簡単です。一度使うとWin32API・MFCは
触りたくなくなる。流行ってるみたいだし、今からGUIアプリ
作りたいならおすすめ〜。


71 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/16(土) 15:02
>70
アドレス希望。



72 名前: 天才プログラマー 投稿日: 2000/12/16(土) 15:09
『ウィンドウが出る』というのとはちょっとずれますが
Java appletで作ると、作ったプログラムをwebでみんなに
すぐに使ってもらえるという利点もありますョ。

http://members.tripod.com/~kuroda/kanji.html


73 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/16(土) 15:12
>71
JDK1.2、1.3におまけ?でついているファウンデーションクラス
ライブラリなので、SunのJavaサイトいけばDLできます。
Java関係の雑誌のおまけでもついてるはず。
(ただです。それだけでもお勧め。)


74 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/16(土) 17:20
おまけってあなた・・・


75 名前: プログラム歴半年 投稿日: 2000/12/28(木) 03:12
「猫でもできる〜」や、68さんが教えて下さったページを見たり、
69さんのおっしゃるMFCとはなんぞや、と調べてみたりしていたのですが、
年末で忙しくなってそれどころではなくなり、勉強が一時ストップしています。
いろいろ教えて下さっている皆さま、申し訳ありません。


76 名前: デフォルトの名無しさん 投稿日: 2000/12/28(木) 12:45
いや、別に君が一生ウィンドウが出るプログラムを作れないだけだから
いいけど。