WinMainってなんだ?
- 2004/03/02
- 02:06
いつもはRADツールを片手にいい気になってるんですがたまにはOSのちょっと深いところまで理解してみるかとハリキッてWin32API(なんだそりゃ)のプログラミングをはじめることにしました。
で、安くあげるためにお勉強サイトを探しまくったのですが質問するなら「2ちゃんねる」、教科書がわりには「猫でもわかるプログラミング」(http://www.kumei.ne.jp/c_lang/)がいいらしい。
(数時間ほど熱中)
「イントロ実行するのに何時間かかっとるんじゃー!!」
そうなんです。このサイトVC4当時に書かれたもので今のVCだとコンパイルできない。(HBRUSH)をつけてキャストすればいいだけなんですけどね。しかも注意書きに書いてある。注意書きに書くぐらいなら本文直してくださいよと半泣きになりながら一時中断。こんなことやってたらHello,World(※プログラミング習得をはじめる時にどんな言語であれまずはじめにHello,Worldと表示させる習慣があるそうでよくわかんないけど真似してます。)すらこんなにかかっていてはF1F2(だめだー、ゲームのショートカットです(笑))と本棚をガサガサ……、っと出てきました「DirectX9実践プログラミング」。なぜ、こんなものを持っているんだ!と自分にツッコミを入れつつ第8章をめくる。本当はDirectX9を学ぶための本なのですがそれ以前の知識として当然もっていないといけないWin32アプリケーションの基礎知識が書かれています。なんだか見透かされているようでくやしい(笑)
そうこうしているうちにインスタンスハンドルやウィンドウハンドルなんてゆー難しい単語の説明をビシバシ覚えていく。猫でもわかるプログラミングのイントロに限らずいくつかの入門サイトでは「おまじないだから」的な説明だったのですが(だから覚えられないんだよ(怒))この本は軽く説明してくれています。一番小さなプログラムでもウィンドウを出さなきゃいけないんだーと思っていましたがどうやらC言語と同じく何もしない、でない、すぐ終了してしまうようなプログラムも可能な模様。(できるのは当たり前ですがあの冗長な部分が必須だと思い込んでました。なにしろ「おまじない」ですから。
む、この本はいい本だ!と思いつつ一番小さいプログラムを書いてみる。WinMainの中は何もかかない。ウォーニングが出てくるのが気に入らないがそれを抑制する方法も発見。型だけ記入すればいいらしい。C++限定の書き方だそうだ。カトラー(WindowsNTを作った人)さんはC++嫌いらしいけど私は好きだな(ポッ)
さらにメッセージボックスを表示したりと結構楽しい。
こんなことならはじめからこうすりゃ良かった。初心者がいきなりウィンドウを出すなんて無茶だ!!(世間の人は想像を超えて遥かに頭がいいのかもしれませんが)
WinMainの引数をまず理解しつつ(今までインスタンスなんて実体化したクラスぐらいしか知らなかったしなー)
WinMainの第二引数の存在意義に悩んだりしつつ(win16環境用なんだからマクロか何かで消し去ればいいのに)4つの引数の意味は完璧にわかった。
勉強というのは一番はじめに出会ったものをとことん理解するのはとても重要だと短い(事にしておいてくださいよ(笑))人生経験から学んでいたのでとにかく理解しないといけない範囲を狭める意味でも省略できる所は省略し(この学習法は効きますよ、AcceleratedC++の例題だったのですが初期の理解を深めるには最適です)マクロはその元をたどっていき__stdcallなどが出てくると「おぉー君だったのか、正体は」なんて余裕で挨拶をしたりなんかしてもう10年来の親友のように感じてきました。一度脳内に浸透してしまえば後は楽ちん。
ほんの数時間前までは恐怖の大王だったウィンドウクラスの登録も「ああ、インスタンスを渡せばいいのね。後はウィンドウの設定だけだからVBやDelphiと同じだわ。」などと脳内イメージができあがってるので(本当は理解してるか怪しいですが)ものの流れがとてもわかりやすかったです。そんなわけでウィンドウ表示やメッセージループは拍子抜けするほど簡単に理解が進みました。窓一つ出すのに3日もかけた甲斐がありました。そう、ここまでするのに3日間もかかったんですよ。Delphiだとテキストエディタの作成もとりあえず終わり拡張機能を色々考えてますよ、3日目って。
ここまで苦労したんだからあわよくばDirectXまで覚えてやろうと思いましたがDirectX9実践プログラミングはここで終了。ちょっと分厚い本を読み終えた(読み始めたん8章からやろ!)感慨に浸りつつ次はどこを教科書にしてやろうかと途方に暮れるのでした。
で、安くあげるためにお勉強サイトを探しまくったのですが質問するなら「2ちゃんねる」、教科書がわりには「猫でもわかるプログラミング」(http://www.kumei.ne.jp/c_lang/)がいいらしい。
(数時間ほど熱中)
「イントロ実行するのに何時間かかっとるんじゃー!!」
そうなんです。このサイトVC4当時に書かれたもので今のVCだとコンパイルできない。(HBRUSH)をつけてキャストすればいいだけなんですけどね。しかも注意書きに書いてある。注意書きに書くぐらいなら本文直してくださいよと半泣きになりながら一時中断。こんなことやってたらHello,World(※プログラミング習得をはじめる時にどんな言語であれまずはじめにHello,Worldと表示させる習慣があるそうでよくわかんないけど真似してます。)すらこんなにかかっていてはF1F2(だめだー、ゲームのショートカットです(笑))と本棚をガサガサ……、っと出てきました「DirectX9実践プログラミング」。なぜ、こんなものを持っているんだ!と自分にツッコミを入れつつ第8章をめくる。本当はDirectX9を学ぶための本なのですがそれ以前の知識として当然もっていないといけないWin32アプリケーションの基礎知識が書かれています。なんだか見透かされているようでくやしい(笑)
そうこうしているうちにインスタンスハンドルやウィンドウハンドルなんてゆー難しい単語の説明をビシバシ覚えていく。猫でもわかるプログラミングのイントロに限らずいくつかの入門サイトでは「おまじないだから」的な説明だったのですが(だから覚えられないんだよ(怒))この本は軽く説明してくれています。一番小さなプログラムでもウィンドウを出さなきゃいけないんだーと思っていましたがどうやらC言語と同じく何もしない、でない、すぐ終了してしまうようなプログラムも可能な模様。(できるのは当たり前ですがあの冗長な部分が必須だと思い込んでました。なにしろ「おまじない」ですから。
む、この本はいい本だ!と思いつつ一番小さいプログラムを書いてみる。WinMainの中は何もかかない。ウォーニングが出てくるのが気に入らないがそれを抑制する方法も発見。型だけ記入すればいいらしい。C++限定の書き方だそうだ。カトラー(WindowsNTを作った人)さんはC++嫌いらしいけど私は好きだな(ポッ)
さらにメッセージボックスを表示したりと結構楽しい。
こんなことならはじめからこうすりゃ良かった。初心者がいきなりウィンドウを出すなんて無茶だ!!(世間の人は想像を超えて遥かに頭がいいのかもしれませんが)
WinMainの引数をまず理解しつつ(今までインスタンスなんて実体化したクラスぐらいしか知らなかったしなー)
WinMainの第二引数の存在意義に悩んだりしつつ(win16環境用なんだからマクロか何かで消し去ればいいのに)4つの引数の意味は完璧にわかった。
勉強というのは一番はじめに出会ったものをとことん理解するのはとても重要だと短い(事にしておいてくださいよ(笑))人生経験から学んでいたのでとにかく理解しないといけない範囲を狭める意味でも省略できる所は省略し(この学習法は効きますよ、AcceleratedC++の例題だったのですが初期の理解を深めるには最適です)マクロはその元をたどっていき__stdcallなどが出てくると「おぉー君だったのか、正体は」なんて余裕で挨拶をしたりなんかしてもう10年来の親友のように感じてきました。一度脳内に浸透してしまえば後は楽ちん。
ほんの数時間前までは恐怖の大王だったウィンドウクラスの登録も「ああ、インスタンスを渡せばいいのね。後はウィンドウの設定だけだからVBやDelphiと同じだわ。」などと脳内イメージができあがってるので(本当は理解してるか怪しいですが)ものの流れがとてもわかりやすかったです。そんなわけでウィンドウ表示やメッセージループは拍子抜けするほど簡単に理解が進みました。窓一つ出すのに3日もかけた甲斐がありました。そう、ここまでするのに3日間もかかったんですよ。Delphiだとテキストエディタの作成もとりあえず終わり拡張機能を色々考えてますよ、3日目って。
ここまで苦労したんだからあわよくばDirectXまで覚えてやろうと思いましたがDirectX9実践プログラミングはここで終了。ちょっと分厚い本を読み終えた(読み始めたん8章からやろ!)感慨に浸りつつ次はどこを教科書にしてやろうかと途方に暮れるのでした。