Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wm_sizing Изменение размера 
:(
    Опции темы
EvgenyTS
Дата 3.2.2009, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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, но как это реализовать.(Впервые с этим столкнулся). Реализацию нужно сделать в моем классе.
PM MAIL   Вверх
voov
Дата 3.2.2009, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



В родительском окне лови wm_size и добавь код:
Код

void CxxxView::OnSize(UINT nType, int cx, int cy)
{
    CView::OnSize(nType, cx, cy);

    if (derevo) derevo->MoveWindow(0, 0, cx, cy);
}

PM MAIL   Вверх
Earnest
Дата 3.2.2009, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Или, если не хочешь связвать родителя с конкретными детями, прлосто разошли из родительского OnSize какое-то пользовательское сообщение с параметрами - всем потомкам, и пусть твое дерево его ловит и обрабатывает.
Совсем без участия родителя это сделать нельзя. Ну, или как дикий вариант, по таймеру проверять соответствие текущего размера размерам родителя, но, думаю это будет плохо выглядеть.


--------------------
...
PM   Вверх
EvgenyTS
Дата 3.2.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Цитата(voov @ 3.2.2009,  10:48)
В родительском окне лови wm_size и добавь код:
Код

void CxxxView::OnSize(UINT nType, int cx, int cy)
{
    CView::OnSize(nType, cx, cy);

    if (derevo) derevo->MoveWindow(0, 0, cx, cy);
}

добавил, но вылетает при запуске. Где указывать ему родителя?
void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
{
    ASSERT(::IsWindow(m_hWnd));
PM MAIL   Вверх
Earnest
Дата 3.2.2009, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Значит, должна быть проверка не if (derevo) а if (derevo && IsWindow (*derevo))


--------------------
...
PM   Вверх
EvgenyTS
Дата 3.2.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Earnest
Дата 3.2.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



А ты указатель на дерево вообще инициализируешь в конструкторе, нулем?



--------------------
...
PM   Вверх
EvgenyTS
Дата 3.2.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



спасиб. Точно! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.