宮崎@イーストです。

2000/06/30 20:55:31 頃、yoh さんが書いたメールについて

> んー、OnCommandって
> 「子コントロールから通知メッセージが送られたとき」に呼ばれると
> ヘルプに書いてありますね。なるほどなるほど・・・。

> では、WindowProcは、ウインドウに送られてきたメッセージを
> 処理する(先ほどの問いでの前者)を処理する場・・・ということでしょうか?

「先ほどの問いでの前者」ではありません。
WindowProc は「そのウィンドウに送られたすべてのメッセージを受けとる」
関数で、MFC のデフォルトの WindowProc は、そのメッセージに応じて
適宜 OnXXXX を呼び出します。
つまり、WindowProc は WM_SETFOCUS も WM_COMMAND も両方受けとり、
それぞれを(存在すれば)OnSetFocus や OnCommand に振り分ける仕事を
しているのです。

で、MFCで普通に作っている分にはデフォルトのWindowProcがちゃんと処理
してくれますんで、自前のWindowProcを作る必要はまったく無いです。

まあ、メッセージが来てるかどうかの「確認」に使うのは便利ですけど、
ここで下手にメッセージを処理してしまうと、MFC本来のメッセージ処理
機構をおかしくしてしまいかねません。

>  馬渕さんの言いたかったことは
>  まだ半分しか分かってないかな・・・。(;-;)

> afx_msg void OnSetFocus( CWnd* ); 
> ON_WM_SETFOCUS(IDOK,OnSetFocus)

この記述正しく無いですから :-)

もし本当に WM_SETFOCUS を処理したい場合のマップエントリは
ON_WM_SETFOCUS()
だけです。引数はありません。

でも、今回の話では必要無いですよね。

-- 
イースト株式会社
宮...@est.co.jp