Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перерисовка в OnSize, как предовратить? 
:(
    Опции темы
vvpC
Дата 15.6.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 20.5.2006
Где: Москва

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



объяви собственные сообщения и шли их окну А, а в параметры можно запокавать хендл окна B , чтоб не ошибится... 
PM MAIL WWW   Вверх
maq
Дата 16.6.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
объяви собственные сообщения и шли их окну А, а в параметры можно запокавать хендл окна B , чтоб не ошибится... 

а можно по-подробнее? Я не очень-то понял. 
PM MAIL   Вверх
vvpC
Дата 16.6.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 20.5.2006
Где: Москва

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



Код

#define WM_MYMESSAGE WM_USER+100

void B::OnSize(UINT nType, int cx, int cy)
{
      AWindowPointer->SendMessage(WM_MYMESSAGE,(WPARAM)GetSafeHwnd(),0);
//или PostMessage
}



LRESULT A::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    if(message==WM_MYMESSAGE)
        {
                  if(BWindowPointer->GetSafeHwnd()==(HWND)wParam)
                 {
                    бла бла
                 }
         }

    return CDialog::WindowProc(message, wParam, lParam);
}

  

Это сообщение отредактировал(а) vvpC - 16.6.2006, 14:58
PM MAIL WWW   Вверх
Coocky
Дата 16.6.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(maq @  28.5.2006,  10:53 Найти цитируемый пост)
нужно чтобы при OnSize в CView не происходила перерисовка клиентской части окна или же его части. В MSDN-не покопался, но не помогло.

Господи , уже два месяца наблюдаю ваш сериал.. smile Не выдержал... smile 
Неужели так ТРУДНО ЗАПРЕТИТЬ перерисовк?????
LockWindowUpdate()
RedrawWindow()
Invalidate()
SetRedarw()
Ну, может хватит велосипеды изобретать? 


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
maq
Дата 16.6.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
Господи , уже два месяца наблюдаю ваш сериал..  Не выдержал...  
Неужели так ТРУДНО ЗАПРЕТИТЬ перерисовк?????
LockWindowUpdate()
RedrawWindow()
Invalidate()
SetRedarw()

Спасибо за совет, 
Coocky, но все это я уже перепробовал! 
PM MAIL   Вверх
Coocky
Дата 16.6.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(maq @  16.6.2006,  17:06 Найти цитируемый пост)
Coocky, но все это я уже перепробовал!

И что -перерисовывается?  smile  Страно... Значит врет МСДН.
А можно узнать-как ты пробывал? smile 
 


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
v2v
Дата 2.4.2007, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



Цитата(Earnest @ 29.5.2006,  12:42)
1) Чтобы на OnSize не было лишних подергиваний, нужно убрать CS_HREDRAW ии CS_VREDRAW из стиля класса окна. Т.е. зарегистрировать свой класса, а не пользоваться стандартным. CS_VREDRAW и CS_HREDRAW нужны только тогда, когда при изменении размеров окна изменяется масштаб изображения, а когда просто окрываются невидимые части - лучше убрать.

простите за мою не образованность но как и где это делается . (в вин апи я знаю как такое сделать, а в мфс)? smile 


--------------------
PM   Вверх
Earnest
Дата 3.4.2007, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(v2v @  2.4.2007,  21:13 Найти цитируемый пост)
 (в вин апи я знаю как такое сделать, а в мфс)? 

Практически так же. Никто не запрещает делать через WINAPI, только функцию оконную подставить нужно MFC-шную. Но в MFC есть удобные функции-обертки AfxRegisterClass и AfxRegisterWndClass. В частности, они проверяют, что класс не регистрируется повторно и обеспечивают удаление (де-регистрацию) класса на выходе. Эти функции удобно использовать в PreCreateWindow.
Кроме того, по моему можно убрать CS_REDRAW из стиля класа прямо у окна, не регистрируя специальный класс... через SetClassLong.


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



Перезарегистрировал класс. В коей мере удаление этих стилей помогло,НО!
У меня на моей форм-вью есть актив-х контрол, который занимает оснвную область окна:
Если размер окна меньше чем 800х600, размер актив-х контрола не менянется, но когда размер окна увеличивается больше указаного, я начинаю растягивать и контрол...вот тогда снова начинается мигание... можно от него(мигания) как то ещё избавиться....
Ps. ещё пробывал OnEraseBackground(...) { return 1; } не помогает...(не влияет на мигание (перерисовку) внутренностей актив-х контрола).




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


Эксперт
****


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

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



C актив-X контролом нужно бороться аналогично (с его окном). Раз мигает он, из  парента больше не выжмешь...


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



В том то и дело что всё сделал в классе актив х контрола, тоже что и в мди-окне. Не помогло...


--------------------
PM   Вверх
Earnest
Дата 4.4.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Да вряд ли в самом актив-Х контроле это сделал - скорее в окне, в которое он помещается...
Ты посмотри Спаем, что там за окна, и какие у них стили...
Но не факт, что сможешь изменить поведение актив X - все-таки это черный ящик...
Можно попробовать перенаправить его вывод в совместимый контекст... но это уже так, фантазии на тему - тут нужно предметно рыться в коде и пробовать.


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



Цитата(Earnest @ 4.4.2007,  18:16)
Можно попробовать перенаправить его вывод в совместимый контекст... но это уже так, фантазии на тему 

Для меня это черный лес... а времени разбиратся не особо есть....
....
Попробую плясать по другому:
Если, допустим, окно перерисовывать на ресайзе, только тогда, когда событие выполнилось, а именно отпустили левую кнопку мыши (уже перетянули форму) .... Немного не красиво, но лучше мигания....
Хм.. как мне перехватить это нажатие OnLButtonUp (..) {..} ведь нажатие происходит не непосредственно в моём классе форм-вью, где я обрабатываю OnSize() {...} ... 


--------------------
PM   Вверх
Earnest
Дата 4.4.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Для этого есть PreTranslateMessage на одном из родителей...
Но сомневаюсь, что поможет: ты разве сам Invalidate вызываешь на ресайзе?


--------------------
...
PM   Вверх
v2v
Дата 4.4.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



Нет, но пробывал сам Invalidate вызывать ... для Active-X контрола не помогает.


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


 




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


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

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