У меня в программе создается много окон, одни являются детми других. В какой-то момнет это все дело надо корректно удалять. Или частично, то есть окно и всех его детей рекукрсивно
Вроде напрашивается дерево окон. Скажте, это все надо оформлять деревом или долстаточно просто списка? Удаляются ли автоматически все дети при удалении ролительского дерева?
Здравствуйте, Аноним, Вы писали:
А>У меня в программе создается много окон, одни являются детми других. В какой-то момнет это все дело надо корректно удалять. Или частично, то есть окно и всех его детей рекукрсивно
А>Вроде напрашивается дерево окон. Скажте, это все надо оформлять деревом или долстаточно просто списка? Удаляются ли автоматически все дети при удалении ролительского дерева?
примерно так :
class IWindow
{
realise()=0;
...
}
class Window: public IWindow
{
List<IWindow> childWindows;
Здравствуйте, Аноним, Вы писали:
А>У меня в программе создается много окон, одни являются детми других. В какой-то момнет это все дело надо корректно удалять. Или частично, то есть окно и всех его детей рекукрсивно
А>Вроде напрашивается дерево окон. Скажте, это все надо оформлять деревом или долстаточно просто списка? Удаляются ли автоматически все дети при удалении ролительского дерева?
В принципе, винды и так хранят иерархию окон. Возможно нет необходимости заводить свой дублирующий контейнер, и поможет (рекурсивный) вызов EnumChildWindows(). Пробовали? Но сначала я бы проверил, не удаляют ли винды корректно всю дочерние окна сами при удалении родительского?
Здравствуйте, goto, Вы писали:
А>>У меня в программе создается много окон, одни являются детми других. В какой-то момнет это все дело надо корректно удалять. Или частично, то есть окно и всех его детей рекукрсивно
А>>Вроде напрашивается дерево окон. Скажте, это все надо оформлять деревом или долстаточно просто списка? Удаляются ли автоматически все дети при удалении ролительского дерева?
G>В принципе, винды и так хранят иерархию окон. Возможно нет необходимости заводить свой дублирующий контейнер, и поможет (рекурсивный) вызов EnumChildWindows(). Пробовали? Но сначала я бы проверил, не удаляют ли винды корректно всю дочерние окна сами при удалении родительского?
Здравствуйте, Аноним, Вы писали:
А>У меня в программе создается много окон, одни являются детми других. В какой-то момнет это все дело надо корректно удалять. Или частично, то есть окно и всех его детей рекукрсивно
А>Вроде напрашивается дерево окон. Скажте, это все надо оформлять деревом или долстаточно просто списка? Удаляются ли автоматически все дети при удалении ролительского дерева?
Если речь идет об окнах Windows — да, удаляются. Сирот тут не бывает.
With best regards
Pavel Dvorkin
Re[2]: Массив окон. Удаление
От:
Аноним
Дата:
23.04.08 10:25
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Если речь идет об окнах Windows — да, удаляются. Сирот тут не бывает.
ОК, тогда предположим я буду хранить только те окна, родитель которых NULL (десктоп тобишь). Все это дело в WTL. И пусть у меня есть HWND какого-нить дочернего окна, у которого в свою очередь тоже есть дети. ТО есть если я скажу DestroyWindow(этот самый HWND), то железно придет сообщение сначала дочерним окнам а потом ему самому?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Если речь идет об окнах Windows — да, удаляются. Сирот тут не бывает.
А>ОК, тогда предположим я буду хранить только те окна, родитель которых NULL (десктоп тобишь).
Да
>Все это дело в WTL.
Не имеет значения.
>И пусть у меня есть HWND какого-нить дочернего окна, у которого в свою очередь тоже есть дети. ТО есть если я скажу DestroyWindow(этот самый HWND), то железно придет сообщение сначала дочерним окнам а потом ему самому?
Да. Только имей в виду, что DestroyWindow можно делать только в том потоке, где окно создано.
With best regards
Pavel Dvorkin
Re[4]: Массив окон. Удаление
От:
Аноним
Дата:
23.04.08 11:53
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Аноним, Вы писали:
PD>Да. Только имей в виду, что DestroyWindow можно делать только в том потоке, где окно создано.