Поиск:

Ответ в темуСоздание новой темы Создание опроса
> че за ошибка при ресайзе? 
:(
    Опции темы
tonchitos
Дата 7.5.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



мне надо чтобы при ресайзе вида изменялся размер контрола...
вот что я делаю



Код

void CreadMDLView::OnSize(UINT nType, int cx, int cy)
{
    CFormView::OnSize(nType,cx,cy);
    CRect lpRect;
    CWnd* pWnd;
    pWnd =this->GetDlgItem(IDC_TREE1);
    this->GetClientRect(lpRect);
    pWnd->MoveWindow(lpRect.left,lpRect.top,lpRect.Width(),lpRect.Height());
    
}


вид у меня от формвью наследованный...

    pWnd->MoveWindow(lpRect.left,lpRect.top,lpRect.Width(),lpRect.Height());
 вот на этой строчке выполненре программы прерывается, выкидывает...


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
tonchitos
Дата 7.5.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



сорри сильно извиняюсь..
мне уже на этот вопрос отвечали )) да я невнимательно читала

http://forum.vingrad.ru/forum/topic-208098...y1492271/0.html

Добавлено через 5 минут и 12 секунд
Код

void CreadMDLView::OnSize(UINT nType, int cx, int cy)
{
    CFormView::OnSize(nType,cx,cy);
    if ((cx != 0)||(cy != 0))
    {
        CRect lpRect;
        CWnd* pWnd;
        pWnd =this->GetDlgItem(IDC_TREE1);
        this->GetClientRect(lpRect);
        pWnd->MoveWindow(lpRect.left,lpRect.top,lpRect.Width(),lpRect.Height());
    }
}


сделала как надо - все равно ошипка

Добавлено через 9 минут и 23 секунды
вот тут
    ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));
ошибка


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
tonchitos
Дата 7.5.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



поставила проверку pWnd не нуль
теперь все ботает

спасибо Rapalexу

Добавлено через 1 минуту и 28 секунд
проверка размеров сх и су некорректна..тк форма может существовать, а контрол еще нет

Добавлено через 7 минут и 15 секунд
теперь такая проблема...
когда у меня при существующих видах создается докинг окно..по сути диалог... то виды отодвигаются конечно, но не ресайзятся по размеруфреймового окна...

и получается что край видов за гранью видимости..как то так не так..что и где вписать?

наверно перерисовку переопределить?....

Добавлено через 13 минут и 55 секунд
user posted image

вот пользователь может их так переместить
то есть видите..по идеи виды не должны перемещаться за размеры клиентской области и под диалог
плюс при создании диалога они перемещаются вправо и тоже край выходит за пределы клиентобласти


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
tonchitos
Дата 7.5.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



или должны так перемещать при желании пользователя, а только при добавлении докдиалога надо отследить чтоб не вылезали а ресайзились по размеру


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 8.5.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В чем вопрос-то?


--------------------
...
PM   Вверх
tonchitos
Дата 8.5.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



как отследить, чтобы нельзя было перемещать док-вид за диалог 
как аотследить чтобы при создании диалога док-вид ресайзился если ему места не хватает


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 8.5.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А что такое док-вид и какого диалога?
А вообще принцип такой: обрабатывай WM_WINDOWPOSCHANGING: 
Цитата

The WM_WINDOWPOSCHANGING message is sent to a window whose size, position, or place in the Z order is about to change as a result of a call to the SetWindowPos function or another window-management function.
...
While this message is being processed, modifying any of the values in WINDOWPOS affects the window's new size, position, or place in the Z order. An application can prevent changes to the window by setting or clearing the appropriate bits in the flags member of WINDOWPOS. 

Или можно обрабатывать WM_GETMINMAXINFO, только я не уверена, что так можно контролировать позицию.
При создании - соответственно - проверяй как потенциальные размеры вписываются в отведенное место и корректируй их.

В общем, никаких волшебных слов нету, все делается ручками.


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


 




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


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

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