6

Visual Studio 2010 で MFC Visual Studio 6.0 プロジェクトをビルドしようとしています。コンパイラで次のエラーが表示されます。

エラー C2440: 'static_cast': 'void (__thiscall ProgressDialog::* )(void)' から 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' に変換できません

//--------------------------------- // メッセージマップ

BEGIN_MESSAGE_MAP(ProgressDialog, CDialog) ON_BN_CLICKED(IDC_CANCEL, OnCancelClicked) ON_MESSAGE (MSG_FINISHED, OnFinished) END_MESSAGE_MAP()

助言がありますか - ?

ペドロ

4

2 に答える 2

9

ON_MESSAGE マクロを ON_MESSAGE_VOID に変更します。ON_MESSAGE マクロは、受信した WPARAM および LPARAM 引数から LRESULT を返します。コンパイラ エラー メッセージには、OnFinished() メソッドが void を返す void 引数であることが示されています。それが、ON_MESSAGE_VOID マクロが処理するものです。

添加:

C++ Q & A -- Microsoft Systems Journal July 1999 の下部を参照してください。

于 2012-05-16T13:48:26.773 に答える
1

MFC7.0 には、次のような重大な変更がありました。

ON_MESSAGEマクロの関数パラメーターは型と一致する必要があります

afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)

メソッドProgressDialog::OnFinishedは を返す必要がありLRESULTます。

于 2012-05-16T12:46:40.420 に答える