TabControl не работает с VS2010 - PullRequest
0 голосов
/ 12 июля 2011

Я недавно обновил проект VC ++ с 2005 по 2010 год, все отлично работает, кроме ресурсов.У меня есть элемент управления вкладками с 2 страницами, все диалоги в одном файле ресурсов, TabControl найден и отображен, но все страницы не загружаются (общая ошибка _AfxCheckDialogTemplate ()).

Это очень страннотак как все диалоги находятся в одном файле.Я установил для AfxSetResourceHandle () правильное значение.

Я провел несколько тестов со следующим результатом: - Загрузка страницы свойств напрямую с помощью DoModal: происходит сбой в DDX_Text () на первом элементе управления.- Загрузка вновь созданного PPage с помощью DoModal: хорошо!- Загрузка того же PPage в TabControl: происходит сбой в AfxSetResourceHandle () - Загрузка нового PPage в TabControl: также происходит сбой.

Как уже было сказано, проект был просто перенесен с VS2005, и он работал хорошо.Я также изменил свой хост с XP 32 на Seven 64bit, но я думаю, что pb более вероятно связан с тем, как ресурсы обрабатываются в VS.Я помню, у меня уже было много проблем с этим, особенно если вы используете общие ресурсы с include.

Есть идеи о том, что попробовать сейчас?Есть ли какая-то проблема с TabControls в VS2010?Я много гуглил, но пока не нашел ничего интересного.Есть ли другой способ перенести ресурсы из проекта VS2005?Воссоздание всех ресурсов будет довольно долгим.Должен ли я просто вернуться к VS2005?

Спасибо за любые советы,

Ален

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

Pb наконец исправлено: создал новый файл .rc и скопировал все ресурсы по одному перетаскиванием. Кажется, пб было то, что миграция с 2005 по 2010 год не удалась (с первой попытки было даже невозможно открыть ресурс в редакторе!). Это довольно старый проект, перенесенный сначала из VC6 и содержащий включенные файлы ресурсов. Может быть, VS не очень хорошо справляется с этим ... Спасибо

0 голосов
/ 12 июля 2011

Может быть, при переходе на 64-битный режим один или несколько элементов управления на странице свойств «сбоят». Обычно об этом должно сообщать CPropertySheet :: Create (), возвращая FALSE. Если вы попадаете в обработчик WM_INITDIALOG, что происходит при отображении страницы с помощью DoModal (), функция DDX_Control завершается сбоем, что означает, что первый элемент управления не может быть создан, и это серьезная ошибка. Посмотрите обсуждение InitCommonControlsEx () в MSDN и посмотрите, правильно ли ваше приложение вызывает его.

...