Приложение MFC падает в Windows 7 - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть приложение MFC, которое работает на XP и аварийно завершает работу в Windows 7. (У меня нет исходного кода - это стороннее приложение, которое сторонний производитель больше не поддерживает; я просто пытаюсь получить проклятая вещь, чтобы бежать).

Большинство приложений работает, но есть один экран (окно MDI), который содержит массу элементов управления (худший пользовательский интерфейс), включая 3 элемента управления ComboBox. Простое перемещение мыши над этими элементами управления (которые находятся в сжатом состоянии) вызывает сбой приложения с ошибкой «Приложение MFC перестало работать».

Из того, что я могу определить с помощью Spy ++, элементы управления являются стандартными классами окон ComboBox. Разумеется, они делятся на подклассы, и я предполагаю, что любая обработка, выполняемая в ответ на сообщение при наведении курсора мыши, вызывает ошибку.

Я надеялся, что запуск его в режиме совместимости с XP поможет, но это не так.

Что может вызвать сбой в Windows 7, когда он нормально работает на XP? (Некоторые другие части приложения перестали работать, потому что некоторые библиотеки DLL отсутствовали, и я смог это исправить, скопировав библиотеки DLL из более старой среды. Я надеялся, что это может быть что-то похожее).

PS. В старой среде был Office 2003, а в новой - Office 2010. Хотя эта вещь на самом деле не имеет отношения к Office, я упоминаю об этом на случай, если она как-то уместна.

1 Ответ

1 голос
/ 02 декабря 2011

Попробуйте запустить программу от имени администратора.Я предполагаю, что программа пытается записать какой-то лог / временный файл в C:\Windows\ или C:\Program Files\.Возможно, приложение использует правильный указатель файла при открытии файла для записи?

Если это работает, используйте Process Monitor , чтобы определить, какой файл он пытается открыть.Затем дайте полные права доступа к этой папке / файлу и посмотрите, работает ли он в обычном режиме.

ОБНОВЛЕНИЕ

Если при наведении курсора на элементы управления произойдет сбой, я бы поспорил, что вы используете какой-то скин-менеджерчтобы получить какой-то красивый интерфейс.Скининг включает в себя расширенные перехваты и / или перехват API.Такие методы не гарантированно будут работать в будущих версиях Windows.

Я знаю, что более старые версии Codejock SkinManager приводили к сбою в Windows Vista и более поздних версиях.Если вы используете эту библиотеку, я советую обновить ее до последней версии или просто полностью отключить.

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