1 :
プログラム暦半年:
今年大学に入って授業で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
5 :
名無しのエリー:2000/11/20(月) 23:55
「猫でも〜」を見て自前でウィンドウを作るのが大変だとわかりやる気を無くした所で
自前でウィンドウを作らない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さん
アドバイスありがとうございます。くじけずにもう少し頑張ります。
でも、もう今日は眠い…明日以降、勉強を始めてみます。
俺も混乱したけど大体似たような書式を使いまわすだけだよ。
データ型は確かに多すぎてわけわかんね。
ヘッダファイルを参照すれば結局見知った型だったりするんだけどな。
猫のサンプルを実行してみたり自分なりにいじってみたりすればいいんじゃないか。
どーせ、CもC++も区別できねえんだから
C++Builderつかってればいいじゃん。
わしもそう思う。
惜しむらくはC++Builderは無料じゃないところだ
1はそのくらいの金はかける気があるのだろうか?
「ウィンドウが出るプログラムが作りたい」
というのが目的ならHSP使えばすぐ解決だね。
15 :
>1:2000/11/21(火) 08:17
16 :
名無しさん@お腹いっぱい。:2000/11/21(火) 14:45
ウィンドウが出るなら、Tkお勧め。
>惜しむらくはC++Builderは無料じゃないところだ
そういうバカは本代も出さないし無視ですな。
費用対効果って言葉がある。
フリーのBCC使って100時間勉強してもマトモなWinアプリ作れねえのが
数万円のBCB10時間で出来ることと比較して考えられたらいいのにね。
趣味でも90時間余計に使うのに躊躇しないのなら、アホ
18 :
名無しさん@お腹いっぱい。:2000/11/21(火) 17:37
確かにCなどを始めたばかりの奴にBCCでウィンドウアプリはきっついと思う。
俺は詰まり詰まりでなんとか進んでるが英語読解力がとても欲しい。
むかし(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言語はポインタ、構造体を学び終えたところなのですが、
ウィンドウを作るのはまだ早いです。
ああ…理解したわけじゃなくて学んだだけか…なら早すぎる。
多重配列と聞いて尻込みしなくなってからだ。
28 :
名無しさん@お腹いっぱい。 :2000/11/22(水) 00:25
アセンブラ−Cの初歩−DirectX−Direct3D−WindowsGDI(普通のウィンドウ)
自分はこの順番だった。
ゲームプログラマーです。
29 :
プログラム暦半年:2000/11/22(水) 01:02
多くの意見が聞けてうれしいです。
>27
自分ではそこそこ理解もしたと思っていますが…どうなんでしょうか。
30 :
名無しさん@お腹いっぱい。:2000/11/22(水) 01:26
>>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
36 :
>35:2000/11/28(火) 14:31
逝ってよし。
>>35 これってwin95.h内にCソースが入っているよ・・・
せめて win95.c (実コード) と win95.h (プロトタイプ宣言と
その他構造体とかの定義) に分けるべきなんでは。
所詮#include
39 :
>35:2000/11/28(火) 17:38
やってみたが、sample が 動かん。。。
41 :
名無しさん@お腹いっぱい。:2000/11/28(火) 20:58
>35
こんなヘッダ使ってWindowsプログラムつくっても
自分の為にならないからやめたほうがいいよ。
変な癖つきそうだからソースは参考程度でやめといたほうがいいと思う…
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
46 :
名無しさんi486:2000/12/03(日) 15:54
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の言う通りオプションあるみたいなんだけど…
俺の場合うまくいかない(;´Д`)
でかいね。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に対してフラッグを変更する場合ね。
Tcl/Tkはどうよ。
56 :
名無しさん@お腹いっぱい。:2000/12/05(火) 23:08
ドラッグ&ドロップを実装したいんですが、どこかにいい資料はないでしょうか?
選択したテキストをアプリのアイコンにドラッグ&ドロップして渡したり、
ファイルのアイコンをアプリにドラッグ&ドロップで渡したいんですが。
マルチポスト?>56
58 :
名無しさん@お腹いっぱい。:2000/12/06(水) 00:02
56です。
私は他には書いてません。
私より先に、どこかで同じ質問が出てたんでしょうか?
それならすみません。
59 :
X:2000/12/06(水) 05:35
VBでいいんじゃないの?
簡単だし、楽しさがわかるよ。きっときっと。
60 :
名無しさん@お腹いっぱい。:2000/12/06(水) 06:37
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++のアイノコみたいなもん?
まぁ、明日までに一本つくってみますよ」
67 :
名無しさん@お腹いっぱい。:2000/12/06(水) 10:53
Delphi or C++Builder
68 :
名無しさん@お腹いっぱい。:2000/12/06(水) 17:08
69 :
天才プログラマー:2000/12/16(土) 14:40
1>ウィンドウが出てその上で実行されるプログラムも作ってみたいのですが、
ウィンドウを出すためだけならMFCに作ってもらうのが手っ取り早いと思います。
そして、ウィンドウの中で動くプログラムのためにあなたの頭脳資源を生かす方が
得策ではないでしょうか?
JavaのSwingは遅いけど簡単です。一度使うとWin32API・MFCは
触りたくなくなる。流行ってるみたいだし、今からGUIアプリ
作りたいならおすすめ〜。
71 :
名無しさん@お腹いっぱい。:2000/12/16(土) 15:02
>70
アドレス希望。
72 :
天才プログラマー:2000/12/16(土) 15:09
>71
JDK1.2、1.3におまけ?でついているファウンデーションクラス
ライブラリなので、SunのJavaサイトいけばDLできます。
Java関係の雑誌のおまけでもついてるはず。
(ただです。それだけでもお勧め。)
74 :
名無しさん@お腹いっぱい。:2000/12/16(土) 17:20
おまけってあなた・・・
75 :
プログラム歴半年:2000/12/28(木) 03:12
「猫でもできる〜」や、68さんが教えて下さったページを見たり、
69さんのおっしゃるMFCとはなんぞや、と調べてみたりしていたのですが、
年末で忙しくなってそれどころではなくなり、勉強が一時ストップしています。
いろいろ教えて下さっている皆さま、申し訳ありません。
いや、別に君が一生ウィンドウが出るプログラムを作れないだけだから
いいけど。