云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > vs2013问题总结

vs2013问题总结

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 15:04:30

static_cast 无法从“void (__thiscall CREBot* )(WPARAM,LPARAM)”转换

不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2014-07-13 11:35开发平台由VC6.0升级至VS2010,需要将原有的项目迁移,可能碰到类似错误: 错误 1 error C2440: “static_cast”: 无法从“void (__thiscall CREBot6VDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” c:\%users\\lyd\\desktop\\rbt\\标准6dof机器人\\rebot6vdlg.cpp 187 1 REbot6V_2008

VS2010对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2010下编译不通过

ON_MESSAGE(WM_message,OnMyMessage);

OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);如果不符合,则有错误提示:

error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” 在匹配目标类型的范围内没有具有该名称的函数

error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”

在匹配目标类型的范围内没有具有该名称的函数

解决方法如下: 首先,把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE; 然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到;最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage) //&好像没必要 将afx_msg void OnTeachButtonUp(WPARAM wParam, LPARAM lParam); 改为afx_msg LRESULT OnTeachButtonDown(WPARAM wParam, LPARAM lParam);

将 void CSetHomeDialog::OnTeachButtonUp(WPARAM wParam, LPARAM lParam) 改为

LRESULT CSetHomeDialog::OnTeachButtonUp(WPARAM wParam, LPARAM lParam) 并在函数体内加return TRUE;

21

警告 1 warning C4996: 'MBCS_Support_Deprecated_In_MFC': MBCS support in MFC is deprecated and may be removed in a future version of MFC. c:\\microsoft visual studio 12.0\\vc\\atlmfc\\include\\afx.h 38 1 REbot6V_2008

“ATL::CStringT>>::CStringT”: 对重载函数的调用不明确 d:\\vsprj\\edit\\vcedit\\icredit\\mainfrm.cpp 848 1 icrEdit

ReadHuge”: 不是“CFile”的成员

错误 6 error C2039: “ReadHuge”: 不是“CFile”的成员 d:\\vsprj\\edit\\vcedit\\icredit\\mainfrm.cpp 1253 1 icrEdit

遇到这种情况的解决方法把代码中的ReadHuge换成Read、WriteHuge换成Write即可。

原因是VC++2005及后续VC版本中的CFile没有ReadHuge和WriteHuge成员函数,只在VC6中的CFile才有,不过ReadHuge()函数已被Read()函数代替,WriteHuge()函数已被Write()函数代替。

22

PARAFORMAT 如何转换为 PARAFORMAT2??

错误 13 error C2664: “BOOL CRichEditView::SetParaFormat(PARAFORMAT2 &)”: 无法将参数 1 从“PARAFORMAT”转换为“PARAFORMAT2 d:\\vsprj\\edit\\vcedit\\icredit\\syneditview.cpp 350 1 icrEdit

//设置TAB间隔

PARAFORMAT pf ;

pf.cbSize = sizeof(PARAFORMAT); pf.dwMask = PFM_TABSTOPS ; pf.cTabCount = MAX_TAB_STOPS; SynCtrl.GetParaFormat( pf );

int nSynCtrlTabSize = pf.rgxTabs[0]; if(nSynCtrlTabSize == 0) nSynCtrlTabSize = 720; ????

SetParaFormat( pf ); // 要求PARAFORMAT2

------解决方案-------------------- //设置TAB间隔 PARAFORMAT pf ;

pf.cbSize = sizeof(PARAFORMAT); pf.dwMask = PFM_TABSTOPS ; pf.cTabCount = MAX_TAB_STOPS; SynCtrl.GetParaFormat( pf );

int nSynCtrlTabSize = pf.rgxTabs[0]; if(nSynCtrlTabSize == 0) nSynCtrlTabSize = 720; ????

SynCtrl.SetParaFormat( pf ); // 要求PARAFORMAT2

23

&”

24

搜索更多关于: vs2013问题总结 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

static_cast 无法从“void (__thiscall CREBot* )(WPARAM,LPARAM)”转换 不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2014-07-13 11:35开发平台由VC6.0升级至VS2010,需要将原有的项目迁移,可能碰到类似错误: 错误 1 error C2440: “static_cast”: 无法从“void (__thiscall CREBot6VDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” c:\%users\\lyd\\desktop\\rbt\\标准6

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com