VC++6.0で作成したプロジェクトをVC++2008でリビルドしようとしていますが、
その際afxmsg_.hの以下の部分でコンパイルエラーが発生してしまいます。
***エラーが発生する箇所***
// for Windows messages
#define ON_MESSAGE(message, memberFxn) \
{ message, 0, 0, 0, AfxSig_lwl, \
(AFX_PMSG)(AFX_PMSGW) \
(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM) > \
(memberFxn)) },
****************
***エラーメッセージ*****
: error C2440: 'static_cast' : 'void (__thiscall CWizardDlg::* )(WPARAM,LPARAM)' から 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' に変換できません。
1> スコープ内でこの名前を指定された関数でターゲット型に一致するものはありません。
****************
上記を解決するための情報を、ポインタでもかまいませんのでご教示ください。
OSは、Windows 7(32bit版)を使用しております。
void CWizardDlg::xxxxxxxx(WPARAM wParam, LPARAM lParam) {
:
}
みたいな関数がソースのどっかにある。それを↓のように修正すれば良いかと。
LRESULT CWizardDlg::xxxxxxxx(WPARAM wParam, LPARAM lParam) {
:
}
上記は WM_APP + ???? 等のウィンドウメッセージに対応した独自ハンドラだと思う。
本来このハンドラ関数の戻り値は LRESULT なのだがVC6時代は何故か void を指定する人達が多数居て、VC6もそれを許容?していた。
トックさんのソースもその類なのではなかろうか。
gak 様
ご指摘の通り修正したところ、エラーが解消されました。
ありがとうございました。
また何かございましたらよろしくお願いします。
ツイート | ![]() |