【发布时间】:2012-10-04 18:25:39
【问题描述】:
我已迁移 *MFC* 项目从 VC 6 到 VS 2010 项目。 现在,我们实现的 自定义对话框 使用了 CDialog::DoModal,但它不起作用,并且在这一行失败 HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG) 正如在新项目中它返回 Null,而在旧中它获得一个值。 - 项目正常构建,所以我认为我不会忘记导入 资源? - 如果这可能与问题有关,我在新项目中使用 ribbons? - 我应该将自定义对话框的继承更改为CDialogEx吗?
更新 我创建了一个继承 CDialog 和 DoModal 的新自定义对话框,效果很好 问题出在 DoModal 中的那些行
hInst = AfxFindResourceHandle(m_lpszTemplateName, RT_DIALOG);
HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG);
hDialogTemplate = LoadResource(hInst, hResource);
由于 hInst 没有正常返回,所以所有其他调用都失败了。 该问题与使用另一个 dll 中的对话框和资源有关。 我还是不明白为什么问题出现在VS2010中,而没有出现在VS 6中。 以及如何解决这个问题!
【问题讨论】:
-
LPCTSTR m_lpszTemplateName;对于 afxwin.h 和 afxext.h 中的 CDialog、CDialogBar 和 CFormView
标签: c++ visual-c++ mfc