天天看點

VS2015:“static_cast”: 無法從“void (__cdecl CImageView::* )(UINT)”轉換為“void (__cdecl CWnd::* )(UINT_PTR)”

使用平台VS2015,原代碼編譯平台0未知。

今天調試一段老代碼時碰到了這個問題,提示我錯誤在消息映射處:ON_WM_TIMER()。

分析報錯的是類型轉換不一緻導緻的錯誤,是以上手修改,轉到CImageView中找到消息函數的聲明和定義:

afx_msg void OnTimer(UINT nIDEvent);

聲明和定義的函數參數類型修改為

afx_msg void OnTimer(UINT_PTR nIDEvent);

編譯成功。但是不太明白為什麼會處這種錯,百度谷歌之後才明白這些類型在低版本編譯是沒問題的,但高版本的編譯器對消息的檢查更為嚴格,是以有不一緻的就會報錯。

繼續閱讀