0

将 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

4

1 回答 1

1

查看 MFC 消息映射的消息破解者期望的函数原型。ON_MESSAGE() 是一个通用包装器,除了基本的 msgID(它是如何分发到地图的)之外,它不知道如何破解给定消息。剩余的参数必须传递给消息处理程序,因此它期望 ParseUserDb 看起来像这样:

LRESULT CUploadDialog::ParseUserDb(WPARAM wParam, LPARAM lParam)
{
// your code; don't forget a return value, likely 0L;
};
于 2012-10-01T13:35:55.183 回答