我最近正在将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
是唯一的,请检查头文件。也许你添加了一些东西,但标识符发生了冲突?