GetDlgItem () возвращает ноль в vc ++ 2010 - PullRequest
0 голосов
/ 21 сентября 2010

Я недавно преобразовал проект Visual Studio 6.0 в Visual Studio 2010, и у меня возникает проблема при вызове GetDlgItem для определенных элементов.Следующий код не работает.

CWnd *pWnd = (CWnd*) GetDlgItem(IDC_BATCH);
pWnd->GetWindowText(szBatchNum);

Я вижу этот код в своем файле ресурсов для формы, которая вызывает вышеуказанный код.НОЛЬ.Это не было проблемой в версии 6.0 проекта.IDC_BATCH представляется допустимым ресурсом в этой форме.IDC_BATCH указывает на «Microsoft Forms 2.0 Label».Похоже, это одна из многих проблем, с которыми я столкнулся при преобразовании проекта из 6.0 в 2010.

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

У меня нет особых знаний по этому вопросу, но я бы проверил, был ли обновлен GUID / элемент управления для версии MFC, которая поставляется с VS2010.Если версия MFC не распознает тип элемента управления по идентификатору GUID, возможно, она не сможет правильно создать объект-оболочку CWnd для него.Вам может потребоваться обновить GUID для VS2010 и / или попытаться использовать собственные вызовы Win32 для доступа к нему, а не вызовы оболочки MFC.

Надеюсь, это поможет.

0 голосов
/ 21 сентября 2010

Попробуйте перечислить дочерние элементы CWnd, из которого поступил вызов GetDlgItem, и посмотрите, есть ли у дескриптора даже дочерние элементы. Также вы должны проверить значение, возвращаемое GetLastError, это должно указать, является ли это фактической ошибкой, и что это за ошибка, или если элемент управления действительно не имеет дочерних элементов (что может быть ошибкой в ​​файле res) или если родительский контроль даже существует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...