我正在尝试在Visual Studio 2010中构建MFC Visual Studio 6.0项目。 编译器给我一个错误:
错误C2440:'static_cast':无法转换为'void(__thiscall ProgressDialog :: *)(void)'to'LRESULT(__ thiscall CWnd :: * )(WPARAM,LPARAM)'
// --------------------------------- //消息地图
BEGIN_MESSAGE_MAP(ProgressDialog,CDialog)ON_BN_CLICKED(IDC_CANCEL, OnCancelClicked) ON_MESSAGE (MSG_FINISHED,OnFinished) END_MESSAGE_MAP()
任何建议 - ?
佩德罗
答案 0 :(得分:7)
将ON_MESSAGE宏更改为ON_MESSAGE_VOID。 ON_MESSAGE宏从接收WPARAM和LPARAM参数返回LRESULT。您的编译器错误消息指出您的OnFinished()方法是返回void的void参数。这就是ON_MESSAGE_VOID宏处理的内容。
<强>此外:强>
的底部答案 1 :(得分:0)
MFC7.0中有breaking changes,包括:
匹配
ON_MESSAGE
宏中的函数参数必须与类型
afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)
您的ProgressDialog::OnFinished
方法现在需要返回LRESULT
。