プログラム講座WinC言語盲人が人を導けば道に迷う

このエントリーをはてなブックマークに追加
1工解 ◆7iqVKuKEpc
C言語もよく理解してない人がWinゲームをつくるスレ
私の学習記録と進歩のスレ。
まだWinプログラムが理解できてないわけだから、完成したプログラムはまだない。
日本語忘れかけてる筆者のリハビリスレ。
使用コンパイラ フリーのBCC BCCセッチングソフト
2私事ですが名無しです:04/03/30 15:33 ID:???
最終目標、自己満足シューティングゲーム
完成予想図


    (・ω・)         (・ω・)   (・ω・)
     (・ω・)    (・ω・)
(・ω・)     (・ω・)     (・ω・)

     死
     ね      死
             ね

        (-_-)
3私事ですが名無しです:04/03/30 15:39 ID:???
Pascal使え
4工解 ◆7iqVKuKEpc :04/03/30 15:46 ID:???
>>3
パスカルじゃただで勉強できません。

自分が今のプログラミング環境になったのか回想してみる

勉強したホームページ(理解してない)

猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
まず、ボーランドBCCをおとしてきましょ。去年まで名前の登録必要なかったけど、今は必要みたい。
デガッバ・・・イラネ
setbcc.exe
BCC Developerで設定したような気がする。
5私事ですが名無しです:04/03/30 15:48 ID:???
                ( ゚ д ゚ ) )))

    (・ω・)         (・ω・)   (・ω・)
     (・ω・)    (・ω・)
(・ω・)     (・ω・)     (・ω・)
     死
     ね      死
             ね
        キタ━━( ゚∀゚ )━━
6ジャック:04/03/30 15:49 ID:t44bmgBB
(・ω・)    
     (・ω・)
          (・ω・)
               (・ω・)
                    (・ω・)
                         (・ω・)
                              (・ω・)
                            (ω・)
がんばれ!
8私事ですが名無しです:04/03/30 16:11 ID:???
javaを使って幸せになろうよ。
9私事ですが名無しです:04/03/30 16:41 ID:???
ゲーム制作板ってなかったっけ?
10私事ですが名無しです:04/03/30 16:59 ID:???
>>7
どうも
>>8
ヤダ
>>9
よーく考えたら、バカニュースにたてればよかった。
一番どうでもよさそうなところで自己満足スレをたてたかった。

ANSI Cとかいうのを勉強した本は、MacintoshではじめるC言語・・・・
いちおうprintf(),scanf(),for(;;)while()とポインターの壁はクリアしてる。
でも、構造体になると怪しい。ハンドル(ウインドウズプログラム必修)もよくわからん。
char *str="hatena"
char str[]="hatena"の違いもよく理解できない。
ソートのプログラムもよく理解できてない。
理解してなくてもイイ。とにかく先にすすむことが大切なのだ。
11私事ですが名無しです:04/03/30 17:16 ID:???
char *str="hatena"
は、ポインタstrで示されてる番地に文字列を定義する。
文字列を格納できるメモリ領域strを確保していることが前提。
してない場合はメモリ領域を破壊する場合もあり。

char str[]="hatena"
は、文字列"hatena"を格納できるメモリ領域strを確保した上で
文字列を定義する。

基本中の基本だぁね。

>>1はVBから頑張ったほうが良いと思われ。
12私事ですが名無しです:04/03/30 17:18 ID:???
個人的にものすごく応援したい。
私のニュー速板から画期的なアプリが誕生することを期待。
13私事ですが名無しです:04/03/30 17:20 ID:???
>>12
その気持ち、わからんでもないけど、激しく板違いなのも事実なのよね。
14ちんこアンテナ ◆HMX12pktF. :04/03/30 17:21 ID:???
自分にかわって2chを読んで、更にレスまでしてくれるプログラムを作ってもらえれば
2chで時間を無駄にすることもなくなるなっ! ぐっすり寝られる。
15私事ですが名無しです:04/03/30 17:23 ID:???
>>12
「プログラムの勉強します」って私のニュースなんだからいいんじゃない?
つーか、良スレになりそうなのを板違いって言って排除するなら
他の糞コテの巣を先につぶしてくれよ。
16工解 ◆7iqVKuKEpc :04/03/30 17:27 ID:???
ANSI CからWin32プログラムに移行するには大きな壁がある。
ウインプログラムにはクラスというものがでてくるが、これはC言語ではない。C++言語だ。
じゃあ、ウインプログラムの前にC++の勉強しよう・・・⇒定番の挫折コース
で、なんかの本みたら、ウインのプログラムはVisual C++言語だとかかいてあった。

    Σ(゚Д゚|||ガーン Σ(゚Д゚|||ガーン Σ(゚Д゚|||ガーン Σ(゚Д゚|||ガーン 

CやC++ではなく、Visual C++言語・・・感動した。だいたいmain()ではじまらないなんてC、C++じゃない。

・・・で、Visual C++をもってない人はどうするか?そういう人はWinC言語を学ぶのだ。
17私事ですが名無しです:04/03/30 17:30 ID:???
>>15
まぁ、確かにそうかもしれないけどさ。
>>1の文面みてやる気があるように見えるか?
良スレの予感は微塵もないのだけど。

どうせ、3日でスレ番500台じゃないの?
18私事ですが名無しです:04/03/30 17:36 ID:???
じゃぁ>>1がこのスレのレス1000逝くまでに
どこまでできるようになってるか予想しようぜ!

1:DOSプロンプトに「HelloWorld」を表示
2:ダイアログに「HelloWorld」を表示
3:スライドショー形式のエロゲを開発、配布開始

19私事ですが名無しです:04/03/30 17:36 ID:???
>>16
MSお得意のパターンw
グローバルスタンダードを自分トコの都合良いようにイジっといて、
何時の間にか自分らがスタンダードのように態度がデカくなる。
20私事ですが名無しです:04/03/30 17:37 ID:???
>>18
hello world warata
21私事ですが名無しです:04/03/30 17:38 ID:???
>>18
3きぼんぬ
22私事ですが名無しです:04/03/30 17:40 ID:???
>>18
>>1の今までのレス読む限り1は既に出来てるんじゃないの?
23私事ですが名無しです:04/03/30 17:43 ID:???
4:「hogehogeのhogeって何ですか?」という質問を投げてスルーされ
  鬱なレスを頻発するようになる

に、1000dotNET
24工解 ◆7iqVKuKEpc :04/03/30 22:51 ID:???
よくよくみたらsageだとIDが出ないスレッドですね。
1,2,4,10,16が私のカキコ
>>11そこが決定的にちがうのか、mallocが必要になるということですね
http://etc.2ch.net/test/read.cgi/hikky/1055966909/651-
>>12ありがとう
>>23
なぜ「hogehoge」?
http://tohoho.wakusei.ne.jp/lng/199911/99110399.htm
適当に、ごにょごにょ・・とか言ってはぐらかすようなもんか
>>18
いちおう脳内では、
猫でもわかるプログラムSDK編のアニメあたりまでは理解してるつもり。
でも、実際プログラム組んでるわけじゃないから、自分で噛み砕いて理解する予定です。
25工解 ◆7iqVKuKEpc :04/03/31 14:15 ID:???
WinC編  第一章

最初の関数へのアプローチ。

C言語と言えば、Hello,World。
#include <stdio.h>main(){printf"Hello,Work\n ";}
これは難しすぎて、いやけがします。
このプログラムにはCのいろいろなエッセンスが詰まりすぎて、
複雑なこと考えられない頭脳の持ち主は眠ります。
または、このプログラムをみて1を聞いて百を知る天才も発狂します。

Cの一番簡単なプログラム、それは・・
main(){}
(BCC Develperでコンパイル;できたアプリケーション42kb)
のたったの8文字なのだ!
実行すると、一瞬、DOSプロンプトがでて終了。
本来これを最初に学習すべきだ。
Cの30年の学習歴史はすべて間違いだったのだ!
26工解 ◆7iqVKuKEpc :04/03/31 17:45 ID:???
>>13 こんなにわかりやすい板があったとは
C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/706
#include <stdio.h>main(){printf"Hello,Work\n ";}これコンパイルできませんでしたね。
#include <stdio.h>
main(){printf("Hello,World");}//printf("");プリプロセッサ指令には改行が必要
27工解 ◆7iqVKuKEpc :04/04/01 12:14 ID:???
なんで何もしないプログラムを、一番簡単なプログラムというのか?
それは、Winのアプリケーションで、Hello,Worldをやるのはけっこう大変だからである。

#include <stdio.h>
main(){printf("Hello,World");}
の複雑な意味というのは、この2行ノプログラムでも
インクルード命令、関数のタイプ、char文字列、
省略のしかた、コンパイラのつかいかた、DOS窓について・・・などいろいろな要素をふくんでる。
stdio.hの内容理解しようとしたらそれだけでも大変だ。

Winプログラムのハローワールドは、これらの2倍以上の要素を含む。
それだけで挫折するヤツが大量にでてくるほどの難門なのだ。
本当は難門じゃないけど、やる気がまったくない人間は確実にあきらめる。
だから、さいしょは、Cの一番簡単なプログラム、main(){}のウイン版をつくってみましょう。
28工解 ◆7iqVKuKEpc :04/04/01 15:49 ID:???
一番簡単なWinCプログラム

#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow){}

これを実行すると、CPUがプログラムをたどって、なにもしないでもどってきます。
たとえなんの成果がなくとも、プログラムを実行したのは事実なのだ。

筆者が理解してないこと
1.windows.hにどんな命令があるのか?
2.WINAPIて何よ?。
3.HINSTANCEの構造
4.LPSTRの文字列?タイプ
5.なんで、WinMainの前に、関数のタイプ宣言が2つもあるの? (int? WINAPI? WinMain)
29私事ですが名無しです:04/04/01 16:41 ID:???
#include <windows.h>
WINAPI WinMain(HINSTANCE, HINSTANCE,LPSTR, int){}
もっと簡略にするとこうなるな・・・拡張子は.cから.cppにしといて
HINSTANCE ヒンスタンスと読まないこと、エイチ インスタンス 意味がわからなくなる。
30私事ですが名無しです:04/04/01 17:15 ID:???
HINSTANCの意味を検索してたら、わかりやすそうなページを発見

ttp://www7.plala.or.jp/keny01/index.html
31私事ですが名無しです:04/04/02 14:15 ID:???
>HINSTANCE ヒンスタンスと読まないこと、エイチ インスタンス 
ハンドル インスタンスとよむともっとわかりやすい。
ハンドル=ポインターへのポインターと理解してるが、筆者に深いハンドルの理解はない。
今は目標のゲーム製作へ進もう。
http://www7.plala.or.jp/keny01/index.html
Win32編をめを通してみた。
Win32API プログラミング Chapter 3
☆ 組み込みマクロ:__DATE__ / __FILE__ / __LINE__ / __STDC__ / __TIME__ / __cplusplus / _DEBUGがよくわからん。

他は理解しようと思えば理解できそうだ。
32工解 ◆7iqVKuKEpc :04/04/03 13:59 ID:???
普通の人間はなにもしないでいるとあきる。
だから、プログラムして、反応がかえってくるプログラムをつくってみましょう。
いきなり、普通のウインドウにハローワールド出そうと思ったけど、
>>18みてダイアローグのほうが簡単なので、WinC32.cpp

┐(´∀`)┌ヤレヤレだぜ

#include <windows.h>
WINAPI WinMain(HINSTANCE, HINSTANCE,LPSTR, int)
{MessageBox(NULL, "┐(´∀`)┌ヤレヤレだぜ", "なんか", MB_OK);}

コンパイル、実行!きちんとダイアローグがでてきたなぁ
33私事ですが名無しです:04/04/03 16:48 ID:???
プログラムの解説。
わかってる範囲で、
#include <windows.h>
Cの勉強した人にとったは魔法のようなインクルードファイル。これ1つで、何百の命令、定義ファイルを含む。
WINAPI WinMain
ウイン32プログラムのメイン関数の代わり。
MessageBoxメッセージボックス。
MessageBox(単独のばあいNULL, "メッセージ", "うえのメッセージ", ダイアローグのタイプ);}
34工解 ◆7iqVKuKEpc :04/04/04 11:50 ID:???
プログラムが一応うごいたのが確認できたでしょう。
ここらへんのプログラムは理論をしらなくてもプログラムは暗記だ!ですんでしまう。

ウインプログラムの難ハードル、CALLBACK関数にいってみよう。
ウインドウ生成時のCALLBACK関数だ、ほかにもCALLBACKの使い道はあるかもしれんが筆者は知らん。

とにかく、この厄介なやつが自由に使えれば、チャチなウインプログラムはいくらでもつくれるようになるよ。

35工解 ◆7iqVKuKEpc :04/04/05 12:43 ID:???
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)

LRESULT ロングタイプの一種
WndProc:読み方、ウインドウ・プロシージャ プロシージャ:意味:手続き

この命令は、WinMain()関数で呼ばれるのは生成したときだけで、
あとはWinのOSから呼ばれているのだ。事実上プログラムの根幹。

ここが、C言語だけを理解してる人にとっての難しいところなのだ。

そして、必要なくなったら、WinMainにかえっていく。
36私事ですが名無しです:04/04/05 15:21 ID:???
ttp://members.jcom.home.ne.jp/yu-ki9/programing/s2.html
なんでダイアローグ表示だけでこんなにながいんだよC++のサンプル。
なんかの間違いじゃねーの?
37工解 ◆7iqVKuKEpc :04/04/05 18:04 ID:???
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szClassNme[] = "なんのパラメータかわからん";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow)
{HWND hWnd;MSG msg;WNDCLASS myProg;
if (!hPreInst) {
myProg.style=CS_HREDRAW | CS_VREDRAW;myProg.lpfnWndProc =WndProc;
myProg.cbClsExtra=0;myProg.cbWndExtra =0;myProg.hInstance=hInstance;
myProg.hIcon=NULL;myProg.hCursor=LoadCursor(NULL, IDC_ARROW);
myProg.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);myProg.lpszMenuName =NULL;myProg.lpszClassName =szClassNme;
if (!RegisterClass(&myProg))return FALSE;}
hWnd = CreateWindow(szClassNme,"タイトル",WS_OVERLAPPEDWINDOW, 0,0,640,480,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}
return (msg.wParam);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{switch (msg) {
case WM_DESTROY:PostQuitMessage(0);break;
default:return(DefWindowProc(hWnd, msg, wParam, lParam));}
}
38私事ですが名無しです:04/04/05 18:09 ID:???
ウインドウをつくるプログラム。これぐらいのことは暗記したほうがよいレベル。
コピペじゃなくて暗記。およそ理解して暗記。
コピペは覚えない。タイピングソフトだとおもってタイプして暗記。
最低限の暗記だとおもって暗記。
39工解 ◆7iqVKuKEpc :04/04/05 19:09 ID:???
上のプログラムを、日本語に翻訳してみる。

ウイン エッチで各種命令をとりこめ
コールバック ウインの関数をつかうことを宣言

ウインメインでスタート
もし、ちゃんとアプリが実行できてたら、ウインクラス構造体の値設定
もし、ウインクラスの構造体ができてたら、具体的にウインのハンドルを設定。
見た目にウインドウをだせ、そしてアップデートせよ。
あとはコールバックでにお任せだ、コールバックウインが終わったら、終われ。

コールバックウイン:ウインドウを終了する命令をまってるだけ。
40工解 ◆7iqVKuKEpc :04/04/06 15:54 ID:???
windows.hに含まれる新出の関数は
CreateWindow(szClassNme,"タイトル",WS_OVERLAPPEDWINDOW, 0,0,640,480,NULL,NULL,hInstance,NULL);
LoadCursor(NULL, IDC_ARROW) デフォルトのカーソルをえらぶ。
GetStockObject(WHITE_BRUSH);  色の関数をよびだす。
ShowWindow(hWnd, nCmdShow);  ウィンドウをつくる:自動的にコールバックの最初の命令を実行
UpdateWindow(hWnd);        コールバックのアップデートと同じのを実行
GetMessage(&msg, NULL, 0, 0) コールバックで-1の値がかえってくるまでループさせる、メッセージを拾ってくる。
TranslateMessage(&msg) プロシージャに送るメッセージに変換する。
DispatchMessage(&msg); プロシージャにメッセージ送る。
PostQuitMessage(0); コールバックの-1のメッセージをおくる、郵便ポストにいれるイメージかな。
DefWindowProc(hWnd, msg, wParam, lParam);???

いきなり10コもか、しかも構造体の説明とかしてたら50レスぐらい必要そうだな。
でもMSDNのページをみればわかりやすく解説してあるよ。
DefWindowProcの解説はみつからなかったが。
41私事ですが名無しです:04/04/06 21:46 ID:???
ttp://www.alpha-net.ne.jp/users2/uk413/vc/VCT_SDKApp.html
みたら、わかりやすく解説してあった。
DefWindowProcの解説
SDKのウインドウ作成も解説してあった。わかりやすい。
42私事ですが名無しです:04/04/08 13:50 ID:???
>>2
のゲームをつくるのに必要なのは、
ウインドウに文字をだす方法、
timeでウインドウを更新すること
キー入力に反応すること、

あとは普通のC知識。キャラの動かし方とか・・・
敵キャラ"(・ω・)"
自キャラ"(-_-)"
ミサイル"死ね"

とりあえず、ウインにイッコだけ敵キャラを表示してみよう。
43私事ですが名無しです:04/04/08 15:56 ID:???
ボーランド C++ではじめて、コンソソールウインドウで 
#include<stdio.h>が省略できるのをはじめて知った。
アホみたいなところでつまづいてた。
scanf("数字 %d",&a);
あれれ、数字が入力できないよ
purintF("数字");scanf("%d",&a);じゃないとダメ。
上のは、数字1234とかで入力すれば数がはいる。
switch文のdefault命令わすれてた。省略が当然とおもってたから。
while(条件)条件を満たしていればループ。
条件をみたしていなければループは=!をつかう。=!という条件を満たすということではあるのだが。
44私事ですが名無しです:04/04/10 13:03 ID:???
void ShowChar(HWND hWnd)
キャラをいっこだすために>>37に追加
宣言に追加
case WM_PAINT:ShowChar(hWnd);
コールバックのスイッチ命令に追加
void ShowChar(HWND hWnd)
{ HDC hdc;
PAINTSTRUCT paint;
char *syobon = "(・ω・)";
hdc = BeginPaint(hWnd, &paint);
TextOut(hdc, 320, 10, (LPCSTR)syobon, strlen(syobon));
EndPaint(hWnd, &paint);
return;
}
関数追加
45私事ですが名無しです:04/04/10 13:22 ID:???
ウインドウに文字をかくためには、デバイス・コンテキスタのハンドルとペイント構造体をつかう。
ビギンペイント→実際に描写→キルペイント。printf("")ですむCとは違う。
でもお決まりのことだから、こういうもんだと覚えるだけでよい。 

ハンドルの関数での受け渡しは、構造体とちがって、&とか*で悩む必要はない。
送りも受けの関数も両方同じ。

新出なwindow.hの関数
BeginPaint(かくウインドウのハンドル,ペイント構造体のポインタ)でカキコミするデバイス・コンテキスタのハンドルをだす。
TextOut(描写するデバイスこんてきすた、位置、位置、文字、文字の長さ)
EndPaint(ハンドル、ペイント構造体) 描写がおわった宣言。
確保してた、デバイスコンテキスタのメモリを開放 malloc,freeみたいな関係なのかな?←理解があやふや。
46私事ですが名無しです:04/04/14 12:23 ID:???
(´・ω・`)マユ毛がない
47工解 ◆7iqVKuKEpc :04/04/18 14:25 ID:???
動くキャラいってみよう!
うごかすキャラの座標はグローバル関数にしといて
int xxx,yyy;
キャラクターを動かすためには、一定時間ごとにキャラをかいていけばイイのだから、
コールバックに一定時間毎に描写すればいい命令を追加するのだ。

case WM_CREATE:
if(SetTimer(hWnd, 1, 100, NULL) == 0) {
MessageBox(hWnd,
(LPCSTR)"タイマーエラー!",
(LPCSTR)"エラー",
MB_OK | MB_ICONEXCLAMATION);
}
break;
case WM_TIMER:xxx=xxx+11;yyy=yyy+11;
if(xxx>600)xxx=0;if(yyy>450)yyy=0;

InvalidateRect(hWnd, NULL, FALSE);
;break;

TextOut(hdc,xxx, yyy, (LPCSTR)syobon, strlen(syobon));
48工解 ◆7iqVKuKEpc :04/04/23 11:32 ID:???
新出の関数
SetTimer(hWnd, 1, 100, NULL)
KillTimer(hWnd,1)

BOOL InvalidateRect(
HWND hWnd, // ウィンドウのハンドル
CONST RECT *lpRect, // 長方形の座標
BOOL bErase // 消去するかどうかの状態 TRUE or FALSE
);
を理解しておぼえること

ttp://black.sakura.ne.jp/~third/index.html
ココわかりやいな。猫よりわかりやすい。
49私事ですが名無しです:04/04/26 00:36 ID:???
↑char文字列の解説がいいな

アップローダーの使い方覚えなきゃ
プログラムのメモリーエラーに注意しないと
50私事ですが名無しです:04/04/28 12:44 ID:???
>>49
文字列終端を '\0' とか書いてないところが好印象かも
51工解 ◆7iqVKuKEpc :04/04/30 17:09 ID:???
サンプルファイル公開age。
ランダムに動くのと、やれやれダイアログ。
フリーボーランドC++でコンパイル

http://up.isp.2ch.net/up/fd619c29032a.zip

Name CRC Bytes
-------------------- -------- ------
koukai_sample_01.zip 808EDA6C 50,147
------------------------------------
Total 1 Files 50,147 Bytes
52工解 ◆7iqVKuKEpc :04/05/06 13:59 ID:v9ibJL8a
目標にしてたゲームらしきものが完成しました

これの解説をします

http://up.isp.2ch.net/up/d3c9ec7741b9.zip

Name CRC Bytes
-------------------- -------- ------
koukai_sample_02.zip 003B1249 77,385
------------------------------------
Total 1 Files 77,385 Bytes
53私事ですが名無しです:04/05/06 19:21 ID:???
ふーーん
54私事ですが名無しです:04/05/06 19:38 ID:???
落とせないゃ、、、、。
残念。
55(4w4)っ● ◆4w4.pcSySw :04/05/06 21:33 ID:???
ゲームしてみたよ。
さすがCを書いてただけに、コーディングがきれいだね。
56工解 ◆7iqVKuKEpc :04/05/06 23:55 ID:???
別のサーバーにアップしてみました

操作方法
マウスを追尾して(-_-)が移動、マウスクリックで死ねミサイル発射
ひたすら、(・ω・)をたおして、倒すとメッセージダイアログがでて終わり。

バグ:ウインドウを移動すると、マウスの追尾がおかしくなる。
ウインドウ拡大が無意味。
http://rivernet.cool.ne.jp/upmini/file3/
http://rivernet.cool.ne.jp/upmini/file3/20040506235036_.zip

Name CRC Bytes
-------------------- -------- ------
koukai_sample_02.zip 003B1249 77,385
57私事ですが名無しです:04/05/07 23:59 ID:???
本当に>>2の通りなのなw
58私事ですが名無しです:04/05/09 13:48 ID:???
>>57
ほんとだ(w

でもこれから楽しみ。
次は>>5-6の要素追加?
59工解 ◆7iqVKuKEpc :04/05/11 14:13 ID:???
バグについて

GetWindowRect
ウィンドウの座標をスクリーン座標系で取得が原因。
BOOL GetWindowRect(
HWND hWnd, // ウィンドウハンドル
PRECT pRect // RECT構造体のアドレス
);//ウインドウの位置取得
p.x-=rect.left;p.y-=rect.top;//でマウスのウインドウ相対座標なら得られる

WS_OVERLAPPEDWINDOW→WS_SYSMENU  で最小・最大ボタンをなくせる。

VC++でやるSDK
ttp://kerochan.no-ip.com/vcsdk/index.php
初心者に、かなりわかりやすいSDKページ発見
2001年、最終更新だけど、利用させていただきます。
60私事ですが名無しです:04/05/14 19:25 ID:???
俺も無職で暇だからちょっとwin32始めてみようかと思った。
言語の知識なんて皆無だけど。なんかできたらうpします。
61(4w4)っ● ◆4w4.pcSySw :04/05/14 20:50 ID:???
きた━━━━━━(゚∀゚)━━━━━━○○○

職人さんたち頑張ってね。
62私事ですが名無しです:04/05/14 23:09 ID:???
>>61
一緒にがんばろうという気はないのか(w
63私事ですが名無しです:04/05/18 21:20 ID:???
>>60
がんばりましょ


これでWindows.hに含まれてた、命令はすべてだな。

プログラムの流れ
初期設定
ウインドウをつくる
ウインドウ生成時に、ゲームの初期値を決定。
タイマーイベントごとに、数値をいじる。(ループ)
あたり判定。(ループ)
ゲーム終了
ウィンドウ終了処理。
64工解 ◆7iqVKuKEpc :04/05/24 14:05 ID:???
いま世間では100マス計算がはやってるらしい。
ひきこもっていると、頭の回転がにぶくなる。
100マス計算みたいに、時間を計って、
短時間にたくさんの無駄なプログラムを組んだら
進歩があるかもしれない。

あと基礎的な計算能力も必要だろな。
高校物理と数学でも勉強するか?
あと英語も。

47氏 kaneko の公開ソフトのソースをみてみたが、
プリプロセッサがわからん。
物理的なことはわからなくて当然でも、最初の部分だけは理解したいな。
65私事ですが名無しです:04/05/28 02:56 ID:???
age
66工解 ◆7iqVKuKEpc :04/05/28 17:03 ID:???
SDKでファイルオープンするプログラムをつくってみよう。
DOSプロンなら簡単だ。けど暗記してない・・・
こんなプログラム、本みないで即効でつくれなきゃ話にならん!
めざせ!職業プログラマどころじゃない。
本をみないで、自分が暗記してる知識でファイルオープンプログラムを書いてみる。
なんかのテキストファイルを出力するプログラム。

#include<stdio.h>
main()
{
FILE *fp;
open(fp,"なんか",w);
fprintf(fp,"テスト");
close(fp);
}
製作時間80秒、ぐちゃぐちゃの知識をかきあつめる。
自己採点 20点 実行不可能(100点満点)
本みて書いた
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
fp = fopen("xxx.txt" , "w");
if (fp == NULL) {
printf("File つくれないぞ Error");
exit (1);
}
fprintf(fp,"なんか");
fclose(fp);
return 0;
}
アプリにファイルをドロップしたら、テキスト表示するプログラムをつくりたい。
67私事ですが名無しです:04/05/29 10:25 ID:???
#include <stdlib.h>
exit (1);

てやって、プログラムを脱出すると、
メモリーリークやファイルクローズを
自動的にやってくれるのかな。
68私事ですが名無しです:04/06/01 11:30 ID:CSnCQIfC
ヤフーみたいに検索するプログラムってC言語と関係ないの?
サイトの中に検索を作るのってなんていうプログラムかわかる?
詳しい人教えてください。
69工解 ◆7iqVKuKEpc :04/06/01 13:07 ID:???
プログラムに詳しくないけど、主にPerl
Cより簡単らしい。
Perlは実行のしかたがわからないから挫折しました。
Book Offで100円でPerlの本買ってそのまんま。

CやJAVAでもできるらしい。
70私事ですが名無しです:04/06/01 13:31 ID:CSnCQIfC
>>69
そのperlっていうのを使えばサイトに検索を設けることができるの?
71工解 ◆7iqVKuKEpc :04/06/05 10:52 ID:???
>>70
詳しくはわからない。

次の目標、なんか実用ソフトをつくりたい。
Janeのdatファイルをhtmlに変換するプログラムをつくろう。
WinのGUIを使いたいけど、よく理解してないから、Dos窓で。

janeのdatファイルの構造。テキストファイルでひらくと読めない文字があるから、
バイナリエディタstir131をつかった。

名前<>メール欄<>年月日 時間 ID:xxx<>内容(html)<>タイトル(初めのスレのみ)0Ah
名前<>メール欄<>年月日 時間 ID:xxx<>内容(html)<>タイトル0Ah
名前<>メール欄<>年月日 時間 ID:xxx<>内容(html)<>タイトル0Ah
名前<>メール欄<>年月日 時間 ID:xxx<>内容(html)<>タイトル0Ah  オワリまで続く。
72(4w4)っ● ◆4w4.pcSySw :04/06/05 11:41 ID:???
stir131っていうのもあるのか。
僕は、TSXBIN使ってるよ。
テキストエディタは、PerlEditもおすすめ。

意欲をそぐようなこと書いちゃうけど
ブラウザによっては、htmlを『ソースの表示』で出せるのがあるよ。
以前使ってたゾヌとかがそうだった。twintailは、メニューに存在する。

注意点は、発言の引用との区別だね。
73私事ですが名無しです:04/06/05 18:31 ID:???
>>72
どうもなのです。
datからhtmlに変換するソフトがあるなら、
普通のテキストをjaneでみれるdatファイルに変換するソフトをつくります。

実験
#include<stdio.h>
int main()
{FILE *fp;
int n;
fp=fopen("test.dat","w");
fprintf(fp,"名無しさん@お腹いっぱい。<>test<>99/09/09 00:09 <> ぬるぽ! <>ぬるぽぽ?");
putc(10,fp);
for(n=10;n<99;n++){
fprintf(fp,"名無しさん@お腹いっぱい。<>テスト<>99/09/09 00:%d <>1ガッ <>",n);
putc(10,fp);}
fclose(fp);
}

できたdatファイルをjaneのてきとうなlogフォルダにいれて見てみる。
きちんと表示されてる。
7460:04/06/06 09:00 ID:???
最初の目的はSDKでダンププログラムを作る。

文字データを16進数で表示するとこで詰まってたけど
やっと一歩前進して読み込んだファイルを4バイトまで表示できた。
というか整数型でもファイルを読みこめるのさっき気づいた。
出力する際の関数が文字列型のポインタしかとらないから
ってきり読み込みもそれだけだと思い込んでた。
とりあえず先はまだまだ長そうだ。
75工解 ◆7iqVKuKEpc :04/06/07 15:05 ID:???
>>74
SDKはファイルオープンが大変ですね。
ttp://www7.plala.or.jp/keny01/index.html

ttp://www7.plala.or.jp/keny01/win32/xml/index.html#7が詳しいな




SDKやめてMFCにしようかな・・・
2年くらい前、簡単そうなプログラムの本かったら3冊ともMFCだった。
SDKとMFCの違いわからなかったし。一番安いVisual C++.Net買ったし。
76工解 ◆7iqVKuKEpc :04/06/11 11:01 ID:???
Dosのができた。
2ch系のBBS(winny)をテキストファイルコピーで保存。
それを、janeのdatファイルみたいに変換するソフト。

ttp://rivernet.cool.ne.jp/upmini/200406c/20040611105302_.zip

Name CRC Bytes
------------------- -------- ------
20040611105302_.zip 57506BDA 39,347
-----------------------------------
Total 1 Files 39,347 Bytes

ファイル操作の技術があがったような気がする。
ファイル操作はバグがあるとコワイ。
77工解 ◆7iqVKuKEpc :04/06/16 20:44 ID:zEtAU0q9
http://rivernet.cool.ne.jp/upmini/200406c/20040616204004_.zip

Name CRC Bytes
------------------- -------- ------
20040616204004_.zip 6C4F867C 27,466
-----------------------------------
Total 1 Files 27,466 Bytes

ゲームのバグとりバージョン。
bcc55でコンパイル。

これから、メニューをつけたり、音をつけたりしよう。
78工解 ◆7iqVKuKEpc :04/06/17 14:19 ID:???
フォントのお勉強

アスキーアートのためには、ピッチをつめたフォントが必要。
標準のMSゴシップMS明朝ではできない。
JSゴシップでピッチをバリアブルで表示して( ・ ω ・ )を(・ω・)にしよう。
プログラムにメニューをいれよう。
参考 猫でもわかるSDK27章 あたり、再勉強中。
79工解 ◆7iqVKuKEpc :04/06/18 19:39 ID:???
さて、まっさらなテキストのサラサラとウインドウ表示のプログラムをなにもみないで書こう
そうおもて、プログラムを書き始める。

ウインメインの取る値がわからん。パラメーターのつづりがわからん。こりゃダメだ。
コピペすりゃ簡単だが理解が・・・、カタカナじゃないと暗記できない。

ロングリザルト コールバック ウインプロシージャ 
カッコ ハンドルウインド ユウイント ワードパラメーター ロングアラメーター カッコ

キャラ クラスネーム

イント ウインアプリ ウインメイン
カッコ ハンドルインスタンス プリインスタンス 文字 コマンド カッコ
ウインドハンドル
メッセージ ハンドル
ウインクラス
 プリインストがゼロでなら、ウインクラスに登録開始 ごちゃごちゃ
ウインドウづくりに、ウィンドハンドルをつくる ぐちゃぐちゃ

ショウウインドウ
アップデートウインドウ

ゲットメッセージが0でなきゃループ
メッセージ翻訳
デスパッチでOS→コールバック

ロングレザルト コールバック ウインプロシージャ
カッコ ハンドルウインド ユウイント ワードパラメーター ロングアラメーター カッコ
メッセージにより スイッチふりわけ
終わりはポストクワイエットメッセージ
80私事ですが名無しです:04/07/01 04:37 ID:???
age
81工解 ◆7iqVKuKEpc :04/07/09 02:33 ID:HOMjFVam
欝アゲ

ageてくれた人、ありがとう。
82工解 ◆7iqVKuKEpc :04/07/19 14:58 ID:y+uoId3Z
>VC++でやるSDK
>ttp://kerochan.no-ip.com/vcsdk/index.php
>初心者に、かなりわかりやすいSDKページ発見
>2001年、最終更新だけど、利用させていただきます。

なくなってるよ。
83工解 ◆7iqVKuKEpc :04/07/31 09:51 ID:6b6+ZGGg
OSをクリーンインストした。
コンパイラ フリーのBCC BCCセッチングソフト
のセッチング方法忘れてる・・・
84(4w4)っ● ◆4w4.pcSySw :04/07/31 12:46 ID:???
中学生以上の知人はいないの?
http://www.microsoft.com/japan/msdn/student/
Visual Studio .netが、4830円。
夢見たいな値段で買えるんだよ。
85(4w4)っ● ◆4w4.pcSySw
(´・ω・`)

×夢見たいな
○夢みたいな