![]() |
|
|
![]()
|
|
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
Здравствуйте.
Я создаю длл, в котором единственный класс наследованный от CTreeCtrl. Создаю обьект этого класса в SDI-приложении в отдельном окне. CTreeEE *derevo=new CTreeEE; derevo->CTreeCtrl::Create(WS_CHILD | WS_VISIBLE|TVS_LINESATROOT| TVS_HASBUTTONS| TVS_HASLINES| TVS_EDITLABELS|WS_THICKFRAME, CRect(10, 10, 700, 400), this, 1234); Как сделать чтоб при изменении родительского окна изменялся мое окно(в котором дерево). Я понимаю что надо отлавливать сообщения wm_size/wm_sizing, но как это реализовать.(Впервые с этим столкнулся). Реализацию нужно сделать в моем классе. |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
В родительском окне лови wm_size и добавь код:
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Или, если не хочешь связвать родителя с конкретными детями, прлосто разошли из родительского OnSize какое-то пользовательское сообщение с параметрами - всем потомкам, и пусть твое дерево его ловит и обрабатывает.
Совсем без участия родителя это сделать нельзя. Ну, или как дикий вариант, по таймеру проверять соответствие текущего размера размерам родителя, но, думаю это будет плохо выглядеть. -------------------- ... |
|||
|
||||
| EvgenyTS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
добавил, но вылетает при запуске. Где указывать ему родителя? void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint) { ASSERT(::IsWindow(m_hWnd)); |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Значит, должна быть проверка не if (derevo) а if (derevo && IsWindow (*derevo))
-------------------- ... |
|||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
если if (derevo && IsWindow (*derevo)) derevo->MoveWindow(0, 0, cx, cy)
то вылетает на _AFXWIN_INLINE CWnd::operator HWND() const { return this == NULL ? NULL : m_hWnd; } Это сообщение отредактировал(а) EvgenyTS - 3.2.2009, 14:20 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А ты указатель на дерево вообще инициализируешь в конструкторе, нулем?
-------------------- ... |
|||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
спасиб. Точно!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |