|
20 / 20 / 7
Регистрация: 27.10.2012
Сообщений: 156
|
|||||||||||
Удаление кнопки при нажатии на нее08.01.2013, 15:11. Показов 6131. Ответов 35
Метки нет (Все метки)
В блоке WM_CREATE создаю кнопку:
0
|
|||||||||||
| 08.01.2013, 15:11 | |
|
Ответы с готовыми решениями:
35
При нажатии правой кнопки мыши на форме с нее удаляются все кнопки При нажатии правой кнопки мыши на форме с нее удаляются все кнопки
|
|
2735 / 890 / 331
Регистрация: 10.02.2018
Сообщений: 2,112
|
||||||
| 06.10.2020, 13:58 | ||||||
|
Не достаточно кода для анализа.
Иногда гораздо проще найти проблему с помощью отладчика, чем пытаться вычислить её аналитически глядя в код, тем более в псевдо код лишь части программы. А что есть в стеке вызовов на момент краша? Возможно вы позже пытаетесь что-то сделать со своим комбобоксом, который уже удалили. Попробуйте обнулить хендл окна сразу после его удаления, это не исправит ошибки, но возможно результат выполнения измениться и появится больше информации для размышления. Добавлено через 31 минуту Мне удалось повторить падение у себя. Возможно, я понял в чём дело. Нельзя удалить контрол внутри обработчика его сообщения. Следом за CBN_SELCHANGE, контрол посылает ещё ряд сообщений. Уничтожая окно мы рушим его внутренности и при попытке отправки очередных сообщений происходит развал. Можно обойти это отложенным удалением контрола. Например, отправить самому себе с помощью post сообщение. Сообщение помещается в конец очереди и будет выполнено после всех оставшихся операций контрола. Кусочек кода, который иллюстрирует предложенный механизм отложенного удаления:
1
|
||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 06.10.2020, 15:06 | |
|
1
|
|
|
фрилансер
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
|
||||||
| 06.10.2020, 15:10 | ||||||
|
как говорится - вместо тысячи слов
1
|
||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 06.10.2020, 15:18 | |
|
0
|
|
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
||||||||||||
| 06.10.2020, 18:00 | ||||||||||||
|
Не
Добавлено через 3 минуты
Добавлено через 44 секунды И все! ![]() Добавлено через 56 секунд Аналогично можно и "воскресить" нужный контрол:
1
|
||||||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 06.10.2020, 18:38 | ||
![]() Более того, когда кнопку нужно удалить, то те кнопки, которые созданы после этой удаленной кнопки - их положение нужно сместить на то место откуда удалилась кнопка. Может конфликтов не будет в случае с сворачиванием, а вдруг и будет ? Зачем проверить, если можно уничтожить ?
0
|
||
|
фрилансер
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
|
|||
| 06.10.2020, 18:43 | |||
|
я ещё с натяжкой понимаю это в MFC, если вдруг захотелось магии, чёрт с ним, бывает такое. но добровольный мазохизм - это я не понимаю!
1
|
|||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||
| 06.10.2020, 18:45 | |||
|
0
|
|||
|
фрилансер
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
|
|||
| 06.10.2020, 18:53 | |||
|
1
|
|||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||
| 06.10.2020, 21:23 | |||||||
Если окно уничтожено, как это может быть.
0
|
|||||||
|
фрилансер
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
|
|
| 06.10.2020, 21:27 | |
|
Optimus11, GetLastError после вызова GetWindowRect вернёт ошибку. Да и сам GetWindowRect вернёт 0, наверное
1
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 06.10.2020, 21:29 | ||
|
0
|
||
|
фрилансер
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
|
|
| 06.10.2020, 21:43 | |
|
Optimus11, а, после WM_CLOSE то? Ну таки да, окно ещё живое, его просто "закрыли". После WM_DESTROY будут возвращаться ошибки
Добавлено через 34 секунды Spy++ в помощь, он покажет текущую иерархию окон
1
|
|
|
2735 / 890 / 331
Регистрация: 10.02.2018
Сообщений: 2,112
|
||||||||||||
| 06.10.2020, 21:57 | ||||||||||||
|
PostMessage поставил сообщение в очередь и вернул управление обратно. Обработка будет позже, на то оно и отложенное удаление. Или я не понимаю, что именно вы делаете и где проверяете.
1
|
||||||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 06.10.2020, 22:24 | ||
|
1
|
||
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
|||
| 07.10.2020, 11:04 | |||
|
Короче, это альтернатива удалению. Делайте, как Вам хочется... Добавлено через 6 минут ![]() А, возможно, еще и проанализировать о каком контроле(ах) идет речь... Оно вроде и несложно, но все же.
1
|
|||
| 07.10.2020, 11:04 | |
|
Помогаю со студенческими работами здесь
36
Перемещение кнопки при нажатии на неё Изменение координат кнопки при нажатии на нее
Как изменить цвет кнопки при нажатии на нее? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|