在VS2010中恢复MFC / Visual Studio 6.0项目

时间:2012-05-16 11:35:24

标签: visual-studio-2010 visual-c++ mfc

我正在尝试在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()

任何建议 - ?

佩德罗

2 个答案:

答案 0 :(得分:7)

将ON_MESSAGE宏更改为ON_MESSAGE_VOID。 ON_MESSAGE宏从接收WPARAM和LPARAM参数返回LRESULT。您的编译器错误消息指出您的OnFinished()方法是返回void的void参数。这就是ON_MESSAGE_VOID宏处理的内容。

<强>此外:

请参阅C++ Q & A -- Microsoft Systems Journal July 1999

的底部

答案 1 :(得分:0)

MFC7.0中有breaking changes,包括:

  

ON_MESSAGE宏中的函数参数必须与类型

匹配      

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

您的ProgressDialog::OnFinished方法现在需要返回LRESULT

相关问题