gpt4 book ai didi

c++ - 迁移到 VS 2010 后 DoModal 不工作

转载 作者:行者123 更新时间:2023-11-28 07:54:56 25 4
gpt4 key购买 nike

我已经迁移 *MFC* 项目从 VC 6VS 2010 项目。现在,我们实现的自定义对话框使用了 CDialog::DoModal,它无法正常工作,并在这一行失败HRSRC hResource =::FindResource(hInst, m_lpszTemplateName, RT_DIALOG)新项目中,它返回 Null,而在旧项目中,它获得一个值。 - 项目构建正常所以我不认为我忘记导入资源? - 我正在新项目中使用色带,这是否与问题有关? - 我是否应该将自定义对话框的继承更改为 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中。以及如何解决这个问题!

最佳答案

嗯,不是找不到资源,所以有两种可能:

1) 资源不在你的可执行文件中2) 包含资源的模块不在MFC资源链中

首先,在 IDE 中打开您认为资源所在的 .exe 或 .dll 文件。当您在 IDE 中打开模块时,它将作为资源文件打开。搜索模块中的对话框并验证它确实在模块中。

如果您确实验证了资源在模块中,那么在调用 DoModal() 之前使用包含该资源的模块的 HINSTANCE 调用 AfxSetResourceHandle()。

关于c++ - 迁移到 VS 2010 后 DoModal 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com