2015-11-17 5 views
0

У меня есть приложение MFC (Visual Studio 2010), которое динамически создает и уничтожает множество ящиков редактирования, выпадающих списков и кнопок на основе последующего ввода пользователя.Приложение MFC с динамически создаваемыми элементами управления внезапно перестает отвечать

Я использовал функцию «Создать» для динамического создания элементов управления, а при удалении элементов управления система сначала вызывает функцию «DestoryWindow» для каждого элемента управления, а затем удаляет каждый указатель управления.

После того, как вы проверили определенное количество элементов управления созданием/удалением, если я попытаюсь «открыть» раскрывающееся меню, система не сможет открыть его и перестанет отвечать на мой ввод, но я могу добавить больше элементов управления, если не пытаюсь чтобы открыть раскрывающееся меню.

Может кто-нибудь, пожалуйста, дайте мне знать, как обходить эту странную проблему? Это один почти сводит меня с ума ...

+1

Возможно, у вас есть утечка ресурсов? – marcinj

+1

Вопросы, связанные с поиском справки по отладке («** почему этот код не работает? **)) должны включать в себя желаемое поведение, * конкретную проблему или ошибку * и * самый короткий код, необходимый для воспроизведения ** в самом вопросе **. Вопросы без ** ясного заявления о проблеме ** не полезны для других читателей. См. [Как создать минимальный, полный и проверенный пример.] (Http://stackoverflow.com/help/mcve) –

ответ

2

Обход проста - не пытаться «открыть», что меню :)

Теперь я предполагаю, что вы хотите FIX этот вопрос. Тогда вам нужно выяснить, что происходит. Система может быть невосприимчива по нескольким причинам, наиболее вероятно одна из этих двух:

  • Вы находитесь в замкнутом цикле в вашей основной теме пользовательского интерфейса.
  • Ожидание события, которое никогда не произойдет. Например, тупик.

Когда приложение заморожено, попробуйте подключить к нему отладчик и выполните Debug -> Break All. Затем посмотрите, какой код выполняется. Если причина этого «замораживания» не будет очевидна, отправьте соответствующий код.

Смежные вопросы