2014-01-22 2 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

관련 문제