将VC ++ 6项目转换为VC ++ 2010后,我修复了所有错误,但其中一个我无法找到解决方案。我在构建时收到的错误:
错误1错误C2440:'static_cast':无法从'void(__ thiscall CUploadDlg :: *)(void)'转换为'LRESULT(__ thiscall CWnd :: *)(WPARAM,LPARAM)'
错误代码:
BEGIN_MESSAGE_MAP(CUploadDlg, CDialog)
//{{AFX_MSG_MAP(CUploadDlg)
ON_MESSAGE(PARSE_DB_MSG, ParseUserDb)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
被叫方法代码:
void CUploadDlg::ParseUserDb()
{
m_parse_db.ShowWindow(SW_SHOW);
m_block_numbers = getBlockNumber();
Sleep(1200);
// CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
// if(pFrame) pFrame->UpdateDataBase(m_Path);
m_parse_finish.ShowWindow(SW_SHOW);
// Sleep(500);
// pFrame->SaveDataBase();//
// CDialog::OnCancel();
//return 0L;
}
项目类型:应用程序,在静态库中使用MFC
答案 0 :(得分:1)
查看消息破解程序对MFC消息映射所期望的函数原型。 ON_MESSAGE()是一个通用的包装器,除了基本的msgID(它是如何分发到地图)之外,它不知道如何破解给定消息。其余的参数必须传递给消息处理程序,因此它期望ParseUserDb看起来像这样:
LRESULT CUploadDialog::ParseUserDb(WPARAM wParam, LPARAM lParam)
{
// your code; don't forget a return value, likely 0L;
};