Здравствуйте, algol, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
А>>Как мне прикрутить scrollbar'ы к обычному view из sdi приложения
A>CScrollWindowImpl, CMapScrollWindowImpl
Спасибо.
Но как теперь мне рисовать? До этого я перегружал OnPaint и рисовал в нем.
Посмотрел пример BmpVIEW, но там отображается картинка. Тогда я перенес весь код в DoPaint и удалил OnPaint
CDC dcMem;
dcMem.CreateCompatibleDC(dc);
DrawStations(&dcMem);
dc=dcMem;
Теперь вообще ничего не стало отображаться
И что мне теперь делать
Здравствуйте, AntonKasimov, Вы писали:
AK>Но как теперь мне рисовать? До этого я перегружал OnPaint и рисовал в нем.
AK>Посмотрел пример BmpVIEW, но там отображается картинка. Тогда я перенес весь код в DoPaint и удалил OnPaint
AK>AK> CDC dcMem;
AK> dcMem.CreateCompatibleDC(dc);
AK> DrawStations(&dcMem);
AK> dc=dcMem;
AK>
AK>Теперь вообще ничего не стало отображаться
AK>И что мне теперь делать
А если написать просто
DrawStations(&dc);
В приведенном коде много непонятного. Если рисуем в Memory DC, то где CreateCompatibleBitmap и BitBlt? И что значит dc = dcMem?
Вот код
void CLinksView::DoPaint(CDCHandle dc){
CDC dcMem;
dcMem.CreateCompatibleDC(dc);
DrawStations(&dcMem);
dc=dcMem;
}
Функция составлена по аналогии с примером из BmpVIEW
void DoPaint(CDCHandle dc)
{
if(!m_bmp.IsNull())
{
CDC dcMem;
dcMem.CreateCompatibleDC(dc);
HBITMAP hBmpOld = dcMem.SelectBitmap(m_bmp);
dc.BitBlt(0, 0, m_size.cx, m_size.cy, dcMem, 0, 0, SRCCOPY);
dcMem.SelectBitmap(hBmpOld);
}
}
Только разница заключается в том, что там выводится bitmap, а у меня рисуется в своем dc и затем переносится в CDCHandle dc
Даже вопрос не в коде, а в том как рисовать в CScrollWindowImpl (документации по нему нет

)
Здравствуйте, AntonKasimov, Вы писали:
AK>Функция составлена по аналогии с примером из BmpVIEW
AK>Только разница заключается в том, что там выводится bitmap, а у меня рисуется в своем dc и затем переносится в CDCHandle dc
AK>Даже вопрос не в коде, а в том как рисовать в CScrollWindowImpl (документации по нему нет
)
В DoPaint уже передан dc, вот в нем и нужно рисовать. Код в примере выводит bitmap, его можно использовать по аналогии, если хочется делать вывод с буферизацией (чтобы избежать мерцания при обновлении и т.д.). Но тогда нужно создавать свой bitmap, выбирать его в контекст и рисовать в нем.
В любом случае строчка dc=dcMem всего лишь скопирует хендл в другую переменную и ничего больше.
Спасибо большое. Все понял и все работает