首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vc++ 2010中,GetDlgItem()返回null

在vc++ 2010中,GetDlgItem()返回null
EN

Stack Overflow用户
提问于 2010-09-21 23:50:30
回答 2查看 4.6K关注 0票数 0

我最近将一个visual studio 6.0项目转换为visual studio 2010,每当在某些项目上调用GetDlgItem时,我都会遇到一个问题。以下代码失败。

代码语言:javascript
复制
CWnd *pWnd = (CWnd*) GetDlgItem(IDC_BATCH);
pWnd->GetWindowText(szBatchNum);

我在调用上述代码的表单的资源文件中看到了这段代码。

代码语言:javascript
复制
IDD_CC_PROCESS DIALOGEX 0, 0, 657, 410
STYLE DS_SETFONT | WS_CHILD
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
CONTROL         "",IDC_BATCH,"{978C9E23-D4B0-11CE-BF2D-00AA003F40D0}",0x0,85,18,89,16
END

在调用GetDlgItem()之后,pWnd为空。这在该项目的6.0版本中不是问题。在这个表单上,IDC_BATCH似乎是一个有效的资源。IDC_BATCH指向一个"Microsoft forms2.0标签“。这似乎是我在将项目从6.0转换到2010时遇到的许多问题之一。

EN

回答 2

Stack Overflow用户

发布于 2010-09-22 03:06:46

我对这个问题没有任何特别的了解,但我会检查GUID/控件是否针对VS2010附带的MFC版本进行了更新。如果MFC版本无法通过GUID识别控件类型,则可能无法为其正确创建CWnd包装对象。您可能需要更新VS2010的GUID,和/或尝试使用本机Win32调用来访问它,而不是使用MFC包装器调用。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2010-09-22 01:37:22

尝试枚举GetDlgItem调用所来自的CWnd的子项,看看句柄是否有子项。此外,您还应该检查GetLastError返回的值,该值应指示它是否是实际错误,以及错误是什么,或者控件是否真的没有子控件(这可能是res文件中的错误),或者父控件是否存在

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3762044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档