Win32APIについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
uwlover

Win32APIについて

#1

投稿記事 by uwlover » 16年前

Windowsプログラミングを勉強しているのですが、これが難しくてたまりません。
最初のウィンドウ表示のソースコードを読む時点でつっかえまくっています。本当は疑問が次々と大量に湧いて
きているのですが、ここでは質問を本当の初歩に絞って、
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
				   LPSTR lpsCmdLine, int nCmdShow)
このC言語ならmain関数に相当するこの関数の引数はどうやって具体的な値が与えられているのでしょうか?
まずそこが分かりません。コマンドライン引数だと考えても、この引数に値を入力することはありませんし。

もう一つ、Windowsプログラミングを勉強するのに参考になる書籍はどんなものがあるのですか?私が持って
いるのは「猫でも分かるWindowsプログラミング」とGAME DEVELOPERシリーズの「Windowsプログラミング」
です。

御津凪

Re:Win32APIについて

#2

投稿記事 by 御津凪 » 16年前

WinMain 関数では、他のアプリケーションとの連携を想定しているため、
コンソールプログラムにはない引数があります。

それぞれの引数の意味は、

・HINSTANCE hCurInst
 現在のアプリケーション(自分自身のこと)のインスタンスハンドル。
 いくつかの Win32API で使用します。

・HINSTANCE hPrevInst
 アプリケーションの前のインスタンスのハンドル。
 ただし、Win32版では常に NULL 。(互換性のために残されています)

・LPSTR lpsCmdLine
 渡されたコマンドライン引数。
 (main 関数の引数とは違い、全てつながった状態かつプログラム名は除かれて渡されます)

・int nCmdShow
 他のプログラムから起動されたときに渡されるウインドウ表示指定フラグ。
 通常はこのフラグを使用してメインウインドウなどの表示をコントロールします。

因みに、戻り値は main 関数と同じ意味を持ちます。


参考になる書籍は私は「API で学ぶ Windows 徹底理解」(日経ソフトウェア)というものを持っていますが、
結構前のものなので、もしかしたら大型の書店とかにはあるかもしれません。

それと、基本知りたい Win32API 関数の細かな情報は MSDN のサイトにありますよ。
(専門用語があったりして難解かもしれませんが、必要な情報はほぼすべて手に入ります)

「MSDN (関数名)」でググるとほぼ確実に先頭にヒットします。

sizuma

Re:Win32APIについて

#3

投稿記事 by sizuma » 16年前

こんにちは

>Windowsプログラミングを勉強しているのですが、これが難しくてたまりません。
同じく難しくて、挫折しそうです。
僕は猫でも分かるゲームプログラミングを持ってます。(まだ全然読んでないですが)
覚えることが多すぎて、
「Win32APIってなんか使う機会あるかな・・・」
って思ってしまいました。
とりあえずもってる参考書は一通り目を通してみようとは思ってますが。

uwloverさんも、よくわからないところはひとまず飛ばして進めていった方がいいのでは?
僕の参考書ではウィンドウを表示するソースがのってる次に
HINSTANCEとかUINTとか見慣れない型が出てきますが今は気にしないでください。
みたいに書いてありますよ

uwlover

Re:Win32APIについて

#4

投稿記事 by uwlover » 16年前

ご回答ありがとうございます。
分からないことは何としても調べ上げないと気がすまない性質でして、(あまりに難しいのなら、そのことが
分かればいいです)読み飛ばすのは苦手なのです。講義とかで質問を講義の最後に持ってこられると困るって
タイプですね。
もっとも、先の質問の引数への具体的な値の与え方はWINAPIが関わっており、まともに語るとマシンコードが
云々という話になるらしいので、こりゃ工学レベルの話だと考えパスすることにしました^^;
他にも、ウィンドウプロシージャはシステムからコールバックされる(コールバックの意味がいまいち掴めない
ですが)関数なのに何故WINAPIを指定しないのか、プロシージャはメッセージを受け取ったときにWinMain内の
コードの実行中に割り込んで自身のコードを実行するものと見てよいのか、などと疑問は尽きませんが、まず
御津凪さんがお勧めしてくれた本を手に入れて勉強することにします。

バグ

Re:Win32APIについて

#5

投稿記事 by バグ » 16年前

興味をもつのは悪い事ではないですが、Windowsプログラミングを勉強するならば、先人の作った仕組みを信頼して、こういうものだと割り切って使わせてもらうという姿勢も大切かと。
突っ込んだ内容に迫るのは、ある程度使いこなせるようになってからで充分だと思います。その方が、例えなんとなくだとしても、流れや仕組みのようなものを実感できるようになっているでしょうから、結果的に理解が早くなり、効率も上がります。

閉鎖

“C言語何でも質問掲示板” へ戻る