WM_QUITとはなにですか?
WM_QUITとはなにですか?
http://wisdom.sakura.ne.jp/system/winap ... win11.html
ここで終了コードが「終了コードは必ず WS_QUIT の wParam の値でなければならないとされます」
とかいてありますが
return msg.wParam;
となっていてWS_QUITなんてオブジェクトでてきてませんがどういうことなんでしょうか?
WS_QUIT.wParamみたいなかたちで出てこないんでしょうか?
ここで終了コードが「終了コードは必ず WS_QUIT の wParam の値でなければならないとされます」
とかいてありますが
return msg.wParam;
となっていてWS_QUITなんてオブジェクトでてきてませんがどういうことなんでしょうか?
WS_QUIT.wParamみたいなかたちで出てこないんでしょうか?
Re: WM_QUITとはなにですか?
WS_QUITはWM_QUITの誤記でしょう。
で,WM_QUITはウィンドウメッセージです。
return msg.wParam;する時の,msg.messageを調べてみると,WM_QUITが入っていることがわかると思います。
この時の追加の情報として,msg.wParamにPostQuitMessageの引数が入っています。
で,WM_QUITはウィンドウメッセージです。
return msg.wParam;する時の,msg.messageを調べてみると,WM_QUITが入っていることがわかると思います。
この時の追加の情報として,msg.wParamにPostQuitMessageの引数が入っています。
Re: WM_QUITとはなにですか?
?????????
最後のreturnのmsg.wParamの
msgがWM_QUITになってるってことですか??????????
頭が混乱しそうです!!!!!
最後のreturnのmsg.wParamの
msgがWM_QUITになってるってことですか??????????
頭が混乱しそうです!!!!!
Re: WM_QUITとはなにですか?
MSG structureはちゃんと読んだでしょうか。
MSGは構造体です。
msgはMSG型の変数ですから,msgがWM_QUITになる,ということはないです。
msg.messageにWM_QUITが入っているとは書きましたが,msgがWM_QUITになるとは書いていません。
MSGは構造体です。
msgはMSG型の変数ですから,msgがWM_QUITになる,ということはないです。
ここを,ちゃんと読み返してください。YuO さんが書きました:return msg.wParam;する時の,msg.messageを調べてみると,WM_QUITが入っていることがわかると思います。
この時の追加の情報として,msg.wParamにPostQuitMessageの引数が入っています。
msg.messageにWM_QUITが入っているとは書きましたが,msgがWM_QUITになるとは書いていません。
Re: WM_QUITとはなにですか?
YuOさん返信ありがとうございます。
でもhttp://wisdom.sakura.ne.jp/system/winapi/win32/win10.html
だとmsg == WM_LBUTTONUPみたいなことしてるから、msg=メッセージではないんでしょうか?
もしmessageなるものがあるなら
msg.message==WM_LBUTTONUPとしないとダメでは??また混乱してしまいました。
そのままmsgだけでcaseしてるからmsgがWM_CLOSEとかWM_PAINTとかいうメッセージの変数なのかと思ってたんですけど。
でもhttp://wisdom.sakura.ne.jp/system/winapi/win32/win10.html
だとmsg == WM_LBUTTONUPみたいなことしてるから、msg=メッセージではないんでしょうか?
もしmessageなるものがあるなら
msg.message==WM_LBUTTONUPとしないとダメでは??また混乱してしまいました。
そのままmsgだけでcaseしてるからmsgがWM_CLOSEとかWM_PAINTとかいうメッセージの変数なのかと思ってたんですけど。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: WM_QUITとはなにですか?
これはですね。
C言語の仮引数や変数がちゃんと理解出来ていないんだと思います。
変数名は変数の型を表していませんので、msgという変数名が同じ型だと思い込むのは理解する上で大変危険です。
よく読んでみてください。型が違いませすよ。
C言語の仮引数や変数がちゃんと理解出来ていないんだと思います。
変数名は変数の型を表していませんので、msgという変数名が同じ型だと思い込むのは理解する上で大変危険です。
よく読んでみてください。型が違いませすよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: WM_QUITとはなにですか?
softya(ソフト屋)さん
C言語だと
int k
k=20;
switch(i)
case k
の場合iとkは同じ型ですよね?
それなら
msg == WM_LBUTTONUPとかを判定するなら
msgとWM_LBUTTONUPは同じ型なのでは?
すいません、もちろんなんらかの理屈があるから
msg == WM_LBUTTONUPこういう書き方できるんでしょうけど、実際動きますし。
C言語だと
int k
k=20;
switch(i)
case k
の場合iとkは同じ型ですよね?
それなら
msg == WM_LBUTTONUPとかを判定するなら
msgとWM_LBUTTONUPは同じ型なのでは?
すいません、もちろんなんらかの理屈があるから
msg == WM_LBUTTONUPこういう書き方できるんでしょうけど、実際動きますし。
Re: WM_QUITとはなにですか?
あ…
UNITって書いてありましたね…
mainの方でMSG msgって書いてあるから
プロシージャのほうのmsgの型を確認してませんでした…
うっかりです。
UNITって書いてありましたね…
mainの方でMSG msgって書いてあるから
プロシージャのほうのmsgの型を確認してませんでした…
うっかりです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: WM_QUITとはなにですか?
そうですね。同じmsgと言う変数名ですが型が違います。
なので、#1から混乱されていることになります。
WM_QUITですがVisualStudioで検索すれば定義を見ることも出来ますよ。
MSG型も同様に検索できます。
なので、#1から混乱されていることになります。
WM_QUITですがVisualStudioで検索すれば定義を見ることも出来ますよ。
MSG型も同様に検索できます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: WM_QUITとはなにですか?
プロシージャの仮引数はMSG型じゃないですし、そもそもMSG型にmsgと言う名前のメンバ変数がなければ出来ませんね。notebook さんが書きました:ということはプロシージャにはMSGのmsgが渡されるわけだから
msg.msgという書き方は許されるんでしょうか?
根本的なところですが、他の方も書いてますがC言語の理解不足だと思います。
プロシージャにはmsg型のmsgは存在しない(未定義)。MSG型にはmsgとメンバ名も存在しない(未定義)です。
まぁ、疑問に思うならコンパイルしてためしてみるのが一番です。試した上で質問して下さい。
経験したことが理解につながるので、質問ばかりで済ませると理解が進みません。
なお、VisualStudio2010だと型名を選択しておいて右クリックで「定義への移動」で見れるはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: WM_QUITとはなにですか?
softya(ソフト屋) さん
ということは仮引数で渡される(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp)
この4つの引数には親がいるわけじゃないですか?
親.msg
親.wp
としても間違いではないですよね?
でその親を明示する場合どうしたらいいんでしょうか?
ということは仮引数で渡される(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp)
この4つの引数には親がいるわけじゃないですか?
親.msg
親.wp
としても間違いではないですよね?
でその親を明示する場合どうしたらいいんでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: WM_QUITとはなにですか?
親ですか?
Javaでもオブジェクトを引数で渡せばオブジェクト=親も参照できますが、メンバ変数だけ引数で渡した場合は、その親は参照できないはずですが。
試してみてください。
【補足】
逆にできたらカプセル化を破壊することになるのでオブジェクト指向言語としては大問題かもしれません。
Javaでもオブジェクトを引数で渡せばオブジェクト=親も参照できますが、メンバ変数だけ引数で渡した場合は、その親は参照できないはずですが。
試してみてください。
【補足】
逆にできたらカプセル化を破壊することになるのでオブジェクト指向言語としては大問題かもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: WM_QUITとはなにですか?
main関数内のMSG msgとはいったい…
このmsgをディスパッチしてコールバックでプロシージャに送って
そのmsgのUNITやらwParamなどを参照しているというのは全くの間違いということですか??
ちょっとどうしようもないくらい混乱してしまいました…
このmsgをディスパッチしてコールバックでプロシージャに送って
そのmsgのUNITやらwParamなどを参照しているというのは全くの間違いということですか??
ちょっとどうしようもないくらい混乱してしまいました…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: WM_QUITとはなにですか?
引数で渡すということの本質を理解されていない気がしますが。
Javaでも関数間のオブジェクトの場合とメンバ変数の場合の引数の受け渡しを試されましたか?
試さずに混乱していると書かれても理解が進まないだけですよ。
Javaでも関数間のオブジェクトの場合とメンバ変数の場合の引数の受け渡しを試されましたか?
試さずに混乱していると書かれても理解が進まないだけですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: WM_QUITとはなにですか?
引数で渡すということは、渡す主体がいるっていうことですよね。
プロシージャが呼ばれてその4つの引数は誰かの持ち物ってことですよね。
こういう理解でいいですか?
プロシージャが呼ばれてその4つの引数は誰かの持ち物ってことですよね。
こういう理解でいいですか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: WM_QUITとはなにですか?
実体は必要ですよ。
ただ、受け取る関数側がどのオブジェクトのメンバ変数であるかを知る事はできません。
そもそもメンバ変数である必要もありません。引数が同じ型であればよいのです。
ただ、受け取る関数側がどのオブジェクトのメンバ変数であるかを知る事はできません。
そもそもメンバ変数である必要もありません。引数が同じ型であればよいのです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: WM_QUITとはなにですか?
なるほど、でも引数として受け取った後、その引数の値を使うだけでなく実体として変化させたい場合は
¶mのようにポインタとして使うんですね。
¶mのようにポインタとして使うんですね。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: WM_QUITとはなにですか?
確かにポインタにすれば書き換えれますが、他に良い代案がない場合の手段であって基本は書き換えずに戻り値です。
プログラムのバグを考えるなら関数先で気軽に値を書き換えるのは厳禁ですよ。
プログラムのバグを考えるなら関数先で気軽に値を書き換えるのは厳禁ですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。