GetDlgItem()在2008上生成的项目的vc++2019中返回无效句柄



我最近正在将Visual Studio 8.0项目转换为Visual Studio 2019,每当对某些项调用GetDlgItem时都会遇到问题。以下代码失败。

PPOtypeComboHndl[0] = GetDlgItem(Hndl, IDC_PPO_TYPE1);
assert(PPOtypeComboHndl[0] != NULL);
LOG_INFO() << "PPOtypeComboHndl Hndl value is " << PPOtypeComboHndl[0];

记录的值为000000,这似乎不正确。

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

COMBOBOX        IDC_PPO_TYPE1,140,247,54,13,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP

调用GetDlgItem(),我认为控制项handel无效。这在8.0版本的项目中不是问题。IDC_PPO_TYPE1似乎是此表单上的有效资源。在将项目从8.0转换为2019时,这似乎是个问题。

您似乎已经对解决方案有了预感:

控制项handel无效我相信

这可能是你的问题。

来自文件:

只要hDlg参数指定父窗口和子窗口窗口具有唯一标识符(由中的hMenu参数指定创建子项的CreateWindow或CreateWindowEx函数窗口(,GetDlgItem将有效句柄返回给子窗口。

您必须确保hDlg是对话框的有效句柄,并且如果IDC_PPO_TYPE1是唯一的,请检查头文件。也许你添加了一些东西,但标识符发生了冲突?

相关内容

  • 没有找到相关文章

最新更新