Реализация прокрутки в CWnd с несколькими дочерними CWnd

Я использую код ScrollHelper [1], чтобы попытаться реализовать прокрутку в моем объекте CWnd (ProgressListWnd). В этом CWnd у меня есть несколько дочерних объектов CWnd (ProgressWnd), помещаемых в родительский ProgressListWnd. Все, что я нашел, это работа с изображениями или текстом / фигурами, нарисованными в CWnd, а не только работа с родительским CWnd с дочерними CWnds.

Реализация ScrollHelper, кажется, «работает», но моя проблема в моей OnPaint в ProgressListWnd, я перемещаю каждый дочерний объект. Я читал, что когда вызывается OnScroll, он заканчивается отправкой события рисования в окно. Поскольку я начинаю с 0,0 и переставляю детей вниз, кажется, ничего не двигается.

Мой onPaint для родительского окна находится ниже. Все, что связано с полосой прокрутки, напрямую из класса ScrollHelper.

Есть ли более простой способ прокрутки в CWnd, который будет состоять только из дочерних объектов CWnd? Нужно ли вручную отслеживать позиции прокрутки и MoveWindow () на моих дочерних CWnds в отрицательные позиции при перерисовке (что будет необходимо при добавлении или удалении дочерних элементов)?

[1]

http://www.codeproject.com/Articles/10902/Add-Scrolling-to-a-CWnd-or-CDialog-using-a-C-Helpe

void CProgressListWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting

POSITION pos = m_ProgressMap.GetStartPosition();
int corner = 0;
while(pos != NULL)
{
int uid = 0;
CProgressWnd* pWnd = NULL;
m_ProgressMap.GetNextAssoc(pos, uid, pWnd);
if(pWnd != NULL)
{
pWnd->MoveWindow(0,corner,400,90);
corner = corner + 90;
}
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]