2014-01-22 4 views
0

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

int currentLength = iImage * (WIDTH + SPACER); 
picName.Format(_T("Image %d"),iImage); 
CPoint topLeft(currentLength,0); 
CPoint bottomRigth(currentLength + (WIDTH), HEIGHT); 

CRect miniCRect(topLeft, bottomRigth); 
Miniature[iImage] = new CStatic(); 
Miniature[iImage]->Create(picName, WS_CHILD|WS_VISIBLE|SS_BITMAP, miniCRect, this); 

if((bottomRigth.x > 500) && (currentLength <= 500)) 
{ 
    //creo la scrool bar 
    CPoint ptnrigin(0,210); 
    CPoint endptn(bottomRigth.x,230); 
    CRect workingArea(ptnrigin,endptn); 
    cs.Create(WS_VISIBLE,workingArea,this,0); 
    cs.EnableScrollBar(ESB_ENABLE_BOTH); 
    SCROLLINFO info; 
    info.cbSize = sizeof(SCROLLINFO);  
    info.fMask = SIF_ALL;  
    info.nMin = 1;  
    info.nMax = 10; 
    info.nPage = 2;  
    info.nPos = 5;  
    info.nTrackPos = 5; 
    cs.SetScrollInfo(&info); 
} 

HDC hDCScreen_mini = ::CreateDC(_T("DISPLAY"), NULL, NULL, NULL); 
HDC hDCMem_mini = ::CreateCompatibleDC(hDCScreen_mini); 
// create a compatible bitmap and select it in the memory DC 
HBITMAP hBitmap_mini = ::CreateCompatibleBitmap(hDCScreen_mini, miniCRect.Width(), miniCRect.Height()); 
HBITMAP hBmpOld_mini = (HBITMAP)::SelectObject(hDCMem_mini, hBitmap_mini); 

BitBlt(hDCMem_mini, 0, 0, desktopRect.Width(), desktopRect.Height(), hDCScreen_mini, desktopRect.left, desktopRect.top, dwRop); 

Miniature[iImage]->SetBitmap(hBitmap_mini); 
Invalidate(); 

// restore the memory DC and perform cleanup 
SelectObject(hDCMem_mini, hBmpOld_mini); 
DeleteDC(hDCMem_mini); 
DeleteDC(hDCScreen_mini); 
//end capture 

Может кто-нибудь мне помочь?

ответ

0

Прокрутка не прокручивает окно или его содержимое. Он предоставляет только пользователю доступ к коду, который вы должны записать, чтобы переместить изображения. Такой код обычно использует ScrollWindow для перемещения видимой части с последующим добавлением вновь видимой части в WM_PAINT.

Другой подход (который выполняет прокрутку для вас) заключается в том, чтобы поместить изображения в список, нарисованный владельцем.

+0

Невозможно оповестить новый размер родительского диалога, чтобы разрешить прокрутку? – ste

+0

Прокрутка не вызывает «нового размера родительского диалога». Непонятно, что вы просите. –

+0

Я ищу что-то вроде Panel on C#. В панели легко прокручиваются элементы. – ste

Смежные вопросы