確かにVC++6.0の時は
afx_msg void test(); って書いてコンパイルが通るんだけど

VC++.netの時は
afx_msg LRESULT test(WPARAM wp, LPARAM lp);
と書かないとコンパイルが通らないです。

メッセージマップはどちらもON_MESSAGE(ユーザー定義MSG, メッセージハンドラ)
とかいてます。
VC++6.0が手元に無いのですぐに確認できないですが、明日確認してみます。
どうも、ありがとう。

デバッグとリリースで動作が違うのは、そういうものなんでしょうか?
リリース時でも MTでなく MTd をリンク?するようにしたら動作するので。