复活在VS2010 MFC /的Visual Studio 6.0项目(Resurrecting M

2019-09-17 07:08发布

我试图建立在Visual Studio 2010中的MFC的Visual Studio 6.0项目的编译器给我一个错误:

错误C2440:'的static_cast:不能从转换 '无效(__thiscall ProgressDialog :: *)(无效)' 到 'LRESULT(__thiscall的CWnd :: *)(WPARAM,LPARAM)'

// // ---------------------------------消息映射

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

有什么建议么 - ?

佩德罗

Answer 1:

更改ON_MESSAGE宏ON_MESSAGE_VOID。 该ON_MESSAGE宏返回从接收wParam和lParam参数的LRESULT。 你的编译器错误消息指出您的OnFinished()方法是无效的参数返回void。 这就是在宏观ON_MESSAGE_VOID手柄。

加成:

请参阅的底部C ++ Q&A -微软系统杂志1999年7月



Answer 2:

有重大更改在MFC7.0,其中包括:

在功能参数ON_MESSAGE宏必须的类型相匹配

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

ProgressDialog::OnFinished方法需要现在返回一个LRESULT



文章来源: Resurrecting MFC/Visual Studio 6.0 project in VS2010