MFC:将工程从VC6.0工程升级到VS2017所遇到的代码不兼容问题集合

本文详细介绍了在将MFC工程从VC6.0升级到VS2017过程中遇到的三个主要问题:errorC2440消息响应函数类型不兼容,C2660错误无法调用Htmlelp函数,以及C2039错误中WriteHuge不是CFile成员。针对这些问题,提供了修改消息响应函数类型、正确包含头文件和替换过时函数等解决办法。
摘要由CSDN通过智能技术生成

一、errorC2440:消息相应函数类型不能转化

  1. 问题描述
    VS2017编译提示以下两个问题:
(1)errorC2440	“static_cast”: 无法从“UINT (__thiscall CSizingControlBar::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”
(2)errorC2440	“static_cast”: 无法从“LRESULT (__thiscall CTextProgressCtrl::* )(UINT,LPTSTR)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
(3)errorC2440	“static_cast”: 无法从“BOOL (__thiscall CCJPagerCtrl::* )(NMPGSCROLL *,LRESULT *)”转换为“BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)”
  1. 解决方法
  • error(1)解决方法:
    通过提示的消息找到相应的消息相应函数,本次出现的问题是CSizingControlBar::OnNcHitTest,由
    afx_msg UINT OnNcHitTest(CPoint point); //VC6תVS2017-gxy-20181025
    改成
    afx_msg LRESULT OnNcHitTest(CPoint point); //VC6תVS2017-gxy-20181025
    此外函数定义的地方也要由
    UINT CS
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是Proe6.0 MFC环境代码实现从本地文件加载d:\a.asm模型到程序窗口的步骤: 1. 在MFC环境下创建一个新的对话框应用程序,包括一个菜单栏和一个编辑框控件。 2. 在菜单栏中添加一个“打开”菜单项,并通过类向导创建它的消息处理函数OnFileOpen()。 3. 在OnFileOpen()函数中,使用CFileDialog类打开文件对话框,选择d:\a.asm模型文件,并将其路径存储在一个CString变量中。 4. 使用Pro/Toolkit API中的ProMdlLoad()函数加载模型文件,将其与一个ProModel类型的变量相关联,并将其显示在程序窗口中的编辑框控件中。 下面是完整的代码实现: 1. 在对话框类的头文件中添加以下代码: ```cpp #include <ProToolkit.h> class CProeDlg : public CDialog { ... private: CString m_strFilePath; // 存储选择的文件路径 ProMdl m_Model; // 存储加载的模型 void LoadModel(LPCTSTR lpszPath); // 加载模型文件的函数 }; ``` 2. 在对话框类的源文件中添加以下代码: ```cpp void CProeDlg::OnFileOpen() { // 打开文件对话框 CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Pro/ENGINEER Assembly Files (*.asm)|*.asm||"), this); if (dlg.DoModal() == IDOK) { // 存储选择的文件路径,并加载模型文件 m_strFilePath = dlg.GetPathName(); LoadModel(m_strFilePath); } } void CProeDlg::LoadModel(LPCTSTR lpszPath) { // 加载模型文件 ProError err = ProMdlLoad(lpszPath, NULL, &m_Model); if (err != PRO_TK_NO_ERROR) { // 加载失败,显示错误信息 CString strError; strError.Format(_T("Failed to load model from %s. Error code: %d"), lpszPath, err); AfxMessageBox(strError); return; } // 将模型显示在编辑框控件中 CString strModel; ProMdlDisplay(m_Model, 0, &strModel); GetDlgItem(IDC_EDIT_MODEL)->SetWindowText(strModel); } ``` 注意:在使用Pro/Toolkit API时,需要先调用ProToolkitInit()函数初始化Pro/Toolkit库,并在程序结束时调用ProToolkitExit()函数释放资源。可以在对话框类的OnInitDialog()和OnDestroy()函数中分别添加这两个函数的调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值