【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

Win32API用のラッパーを作ろうとしているのですが、現在、前提条件としていることが正しいかどうかの判断がつきかねるため、質問させていただきます。

CreateWindow関数で返されるHWndは、どのような状況においても、メッセージループのコールバック関数であるWndProc関数の第一引数HWndと同一でしょうか?
また、この値が一致しないときがあるとすれば、どういったときでしょうか?
(たとえばhook関数を適用されたら値が変わってしまうのか?)

分かる方がいらっしゃいましたら、お願いいたします。

A 回答 (1件)

> (たとえばhook関数を適用されたら値が変わってしまうのか?)



フックして書き換えるといわれてますか?
HWNDはウィンドウ識別用のハンドラなので、知らないところで書き換えた場合、
動作は保証できないでしょう。一般的には想定外/未対応な仕様と謳ってもいいのでは。


> CreateWindow関数で返されるHWndは、どのような状況においても、
> メッセージループのコールバック関数であるWndProc関数の第一引数HWndと同一でしょうか?

一般的な動作で結果が変わるケースは、例えば以下です。

WM_CREATEが-1を返すと、引き数のHWNDは破棄されてCreateWindowはNULLが返ります。
(MSDNのWM_CREATE参照)

ということはすなわち「どのような状況においても」は否です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
すっかり忘れていましたが、確かにWM_CREATEが流れるときはCreateWindowが返りませんから、クラスの仮想関数を読み出せないですね。
この程度でしたら、対応できそうです。

一般の動作で異なることがあるとすれば、それはWM_CREATEくらいでしょうか?

お礼日時:2007/02/08 01:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!