error C2440: “static_cast”: 無法從“void (__thiscall CMainFrame::* )(void)”轉換為“LRESULT (__thiscall CWnd
error C2440: “static_cast”: 無法從“void (__thiscall CMainFrame:? )(void)”轉換為“LRESULT (__thiscall CWnd:? )(WPARAM,LPARAM)”
在學習孫鑫《VC++深入詳解》9.6.2時,遇到error C2440問題。 錯誤程式碼: MainFrm.h : … afx_msg void OnProgress(); … MainFrm.cpp : … ON_MESSAGE(UM_PROGRESS,OnProgress) … void CMainFrame::OnProgress() { CRect rect; m_wndStatusBar.GetItemRect(2,&rect); m_progress.Create(WS_CHILD | WS_VISIBLE,rect,&m_wndStatusBar,123); m_progress.SetPos(50); }
解決: MainFrm.h : … afx_msg LRESULT OnProgress(WPARAM wParam,LPARAM lParam); … MainFrm.cpp : … ON_MESSAGE(UM_PROGRESS,&OnProgress) … LRESULT CMainFrame::OnProgress(WPARAM wParam,LPARAM lParam) { CRect rect; m_wndStatusBar.GetItemRect(2,&rect); m_progress.Create(WS_CHILD | WS_VISIBLE,rect,&m_wndStatusBar,123); m_progress.SetPos(50); return TRUE; }
此處經查閱多次修改,注意函式引數在宣告處也要修改。