WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  CView::OnSize(UINT nType, int cx, int cy)

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   CView::OnSize(UINT nType, int cx, int cy)
asteroid опубликован 17-12-2001 18:27 MSK   Click Here to See the Profile for asteroid   Click Here to Email asteroid  
Подскажите пожалуйста как можно в этом методе вывести на экран изображения в обход onDraw, я попытался заблокировать вызов onDraw но в любом случае изображения пр сообщении WM_SIZE не появляется
CView::OnSize(UINT nType, int cx, int cy)
CClientDC dc(this) ;
CRect rect
DrawBlock=1;
CDC* pDC = &dc ;
int nDC=pDC->SaveDC();
CBrush brushBlue(RGB(0, 0, 255));
CBrush* pOldBrush = dc.SelectObject(&brushBlue);
rect.DeflateRect(cx-100,cy-100);
dc.Rectangle(rect);
dc.SelectObject(pOldBrush);
dc.TextOut(cx-25,cy-25,"paint window");
В таком стиле но OnSize не выводит!
Flex Ferrum опубликован 17-12-2001 18:32 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
А смысл? Все равно в процессе изменения размера окну посылается WM_PAINT - так и рисуй в нем.
asteroid опубликован 17-12-2001 18:35 MSK     Click Here to See the Profile for asteroid  Click Here to Email asteroid     
Flex Ferrum я хочу чтобы выводилось блоккируя OnPaint, те у меня проблема мерцания при рбновлении и я думаю лбнлвлять обходя функцию OnDraw
Flex Ferrum опубликован 17-12-2001 18:38 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
Проблему мерцания ты этим не решишь. Мерцание возникает из-за дефолтной обработки WM_ERASEBKGND - это первое. Второе - не надо перерисовывать всю картинку - рисуй только в той облатси, которую надо обновлять.
asteroid опубликован 17-12-2001 19:08 MSK     Click Here to See the Profile for asteroid  Click Here to Email asteroid     
Проблема в том что у меня в клиентской облости как в пайнте виндовском, иожет быть загоужено до 50 картинок например, когда я меняю размеры окна видно как картинки мигают, те перересовка, поэтому то обновлять я могу либо всю клиентскую облость либо, я потеряю часть картинок.(Картинки анимают всю клиентскую область а при OnSize по Default вызывается OnDraw)
DmitryRyvkin опубликован 18-12-2001 05:58 MSK     Click Here to See the Profile for DmitryRyvkin  Click Here to Email DmitryRyvkin     
Добавляете OnEraseBkg.
Оьработчик, что будет поставлен (типа CWnd::OnEraseBkg) удаляете на фиг.
return true;

Для более красивого рисования рекомендую создать CDC в памяти рисовать на нем,
а в OnPaint делать BitBlt

DmitryRyvkin опубликован 18-12-2001 06:02 MSK     Click Here to See the Profile for DmitryRyvkin  Click Here to Email DmitryRyvkin     
PS в память создать CDC будет не очень просто
:)
По-крайней мере с непривычки. Ибо надо будет еще создать CBitmap совместимый с экраном,
поставить ему нужный размер и выбрать его в контекст это CDC в памяти.
Да еще в OnSize придется динамически удалять ентот битмэп и создавать новый.
Код у меня есть если надо.
asteroid опубликован 18-12-2001 11:21 MSK     Click Here to See the Profile for asteroid  Click Here to Email asteroid     
Дмитрий спасибо за ответ, кстате а у вас этот эмайл работает, я письмо вам послал.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.