| ¿øÇü |
BOOL ScrollWindow(HWND hWnd, int XAmount, int YAmount, CONST RECT *lpRect, CONST RECT *lpClipRect); |
| MFC ¿øÇü |
void CWnd::ScrollWindow( int xAmount, int yAmount, LPCRECT lpRect = NULL, LPCRECT lpClipRect = NULL ); |
| Àμö |
¢ºhWnd : ½ºÅ©·Ñ ´ë»óÀÌ µÇ´Â À©µµ¿ì ¢ºXAmount, YAmount : ¼öÆò, ¼öÁ÷À¸·Î ½ºÅ©·Ñ ÇÒ °ªÀ̸ç ÀåÄ¡ ´ÜÀ§·Î Ç¥ÇöµÈ´Ù. ´Ü, hWnd°¡ CS_OWNDC, CS_CLASSDC ½ºÅ¸ÀÏÀ» °¡Áö°í ÀÖÀ¸¸é ÀÌ °ªÀº ³í¸® ´ÜÀ§ÀÌ´Ù. ¿ÞÂÊÀ̳ª À§·Î ½ºÅ©·Ñ ÇÒ ¶§´Â À½¼ö°ªÀÌ µÉ ¼öµµ ÀÖ´Ù. ¢ºlpRect : ½ºÅ©·Ñ µÉ ÀÛ¾÷ ¿µ¿ª ÁÂÇ¥. NULLÀ̸é Àüü ÀÛ¾÷ ¿µ¿ªÀÌ ½ºÅ©·Ñ µÈ´Ù. ÀÛ¾÷ ¿µ¿ªÁß ÀϺκи¸ ½ºÅ©·Ñ½ÃÇÒ ¶§´Â ÀÌ Àμö¿¡ ½ºÅ©·Ñ ´ë»ó ¿µ¿ªÀ» ÁöÁ¤ÇØ ÁÖ¸é µÈ´Ù. ÀÌ °ªÀÌ NULLÀÏ ¶§ ScrollWindow ÇÔ¼ö´Â ÈξÀ ´õ ºü¸£°Ô µ¿ÀÛÇÑ´Ù. ¢ºlpClipRect : Ŭ¸®ÇÎ ¿µ¿ª »ç°¢Çü. ÀÌ ¿µ¿ª ³»ºÎ¸¸ ½ºÅ©·Ñ¿¡ ÀÇÇØ ´Ù½Ã ±×·ÁÁö¸ç ¹Ù±ùÂÊÀº Àý´ë·Î °Çµå¸®Áö ¾ÊÀ¸¹Ç·Î½á ȸéÀÌ ±úÁö´Â °ÍÀ» ¹æÁöÇÑ´Ù. lpRect°¡ ÀÛ¾÷ ¿µ¿ªÀÇ ÀϺκÐÀÏ ¶§ ½ºÅ©·Ñ ¼Óµµ°¡ ºü¸£¸é lpRect ¹Ù±ùÀ¸·Î ½ºÅ©·ÑÀÌ ¹ß»ýÇÒ ¼öµµ Àִµ¥ Ŭ¸®ÇÎ ¿µ¿ªÀ» ¼³Á¤Çϸé ÀÌ·± Çö»óÀ» ¹æÁöÇÒ ¼ö ÀÖ´Ù. |
| ¸®ÅÏ |
¼º°øÇϸé 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ¸ç ½ÇÆÐÇϸé 0À» ¸®ÅÏÇÑ´Ù. |
| ¼³¸í |
À©µµ¿ì¸¦ ½ºÅ©·Ñ½ÃŲ´Ù. ÀϹÝÀûÀ¸·Î ÀÌ ÇÔ¼ö´Â WM_HSCROLL, WM_SCROLL µîÀÇ ½ºÅ©·Ñ °ü·Ã ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ È£ÃâµÇ¸ç ½ºÅ©·Ñ ¹Ù·Î ½ºÅ©·Ñ µÈ ¾ç¸¸Å ÀÛ¾÷ ¿µ¿ªÀ» À̵¿½ÃŰ´Â ¿ªÇÒÀ» ÇÑ´Ù. ½ºÅ©·ÑµÈ ¾ç¸¸Å ÀÛ¾÷ ¿µ¿ªÀ» BitBlt ÇÔ¼ö·Î °í¼Ó º¹»çÇÏ¸ç »õ·Î µå·¯³ª´Â ºÎºÐÀº ¹«È¿È½ÃÄÑ WM_PAINT¿¡¼ ´Ù½Ã ±×¸®µµ·Ï ÇØ ÁØ´Ù. ¸¸¾à ½ºÅ©·Ñ ¿µ¿ª¿¡ ij·µÀÌ ÀÖ´Ù¸é ½ºÅ©·ÑÇϱâ Àü¿¡ ij·µÀ» ¼û±â¸ç ½ºÅ©·ÑÀÌ ³¡³ ÈÄ Ä³·µÀ» º¹±¸½ÃÄÑÁØ´Ù. ij·µÀÇ À§Ä¡´Â ÀÚµ¿À¸·Î Á¶Á¤µÈ´Ù. ÀÛ¾÷ ¿µ¿ªÀÇ ÀϺκθ¸À» ½ºÅ©·Ñ½Ã۰íÀÚ ÇÒ ¶§´Â lpRect¿¡ ½ºÅ©·Ñ ¿µ¿ªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç À̶§ ȸéÀÇ ±úÁüÀ» ¹æÁöÇϱâ À§ÇØ Å¬¸®ÇÎ ¿µ¿ªÀ» ÁöÁ¤ÇØ ÁÖ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ¿¹Á¦´Â 1000*1000Å©±âÀÇ À©µµ¿ì¿¡ µ¿½É¿øÀ» ±×¸®°í ½ºÅ©·Ñ ¹Ù·Î ÀÌ µ¿½É¿øÀ» ½ºÅ©·ÑÇϵµ·Ï ÇÑ´Ù.
int yPos,xPos;
int yMax,xMax;
COLORREF col[5]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),RGB(255,0,255),RGB(255,255,0)};
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
int i,j;
HDC hdc;
PAINTSTRUCT ps;
int xInc, yInc;
SCROLLINFO si;
HBRUSH hBrush,OldBrush;
switch(iMessage) {
case WM_CREATE:
xPos=0;
yPos=0;
xMax=1000;
yMax=1000;
return 0;
case WM_SIZE:
si.cbSize=sizeof(SCROLLINFO);
si.fMask=SIF_ALL | SIF_DISABLENOSCROLL;
si.nMin=0;
si.nMax=1000;
si.nPage=HIWORD(lParam);
si.nPos=yPos;
SetScrollInfo(hWnd, SB_VERT, &si, TRUE);
si.nPage=LOWORD(lParam);
si.nPos=xPos;
SetScrollInfo(hWnd, SB_HORZ, &si, TRUE);
return 0;
case WM_HSCROLL:
xInc=0;
switch (LOWORD(wParam)) {
case SB_LINEUP:
xInc=-1;
break;
case SB_LINEDOWN:
xInc=1;
break;
case SB_PAGEUP:
xInc=-20;
break;
case SB_PAGEDOWN:
xInc=20;
break;
case SB_THUMBTRACK:
xInc=HIWORD(wParam)-xPos;
break;
default:
break;
}
// »õ·Î¿î À§Ä¡´Â ÃÖ¼ÒÇÑ 0 ÀÌ»ó
if (xPos+xInc < 0)
xInc=-xPos;
// »õ·Î¿î À§Ä¡´Â ÃÖ´ëÇÑ xMax ÀÌÇÏ
if (xPos+xInc > xMax)
xInc=xMax-xPos;
// »õ·Î¿î À§Ä¡ °è»ê
xPos=xPos+xInc;
// ½ºÅ©·Ñ½ÃŰ°í ½æ À§Ä¡¸¦ ´Ù½Ã °è»êÇÑ´Ù.
ScrollWindow(hWnd, -xInc, 0, NULL, NULL);
SetScrollPos(hWnd, SB_HORZ, xPos, TRUE);
return 0;
case WM_VSCROLL:
yInc=0;
switch (LOWORD(wParam)) {
case SB_LINEUP:
yInc=-1;
break;
case SB_LINEDOWN:
yInc=1;
break;
case SB_PAGEUP:
yInc=-20;
break;
case SB_PAGEDOWN:
yInc=20;
break;
case SB_THUMBTRACK:
yInc=HIWORD(wParam)-yPos;
break;
default:
break;
}
// »õ·Î¿î À§Ä¡´Â ÃÖ¼ÒÇÑ 0 ÀÌ»ó
if (yPos+yInc < 0)
yInc=-yPos;
// »õ·Î¿î À§Ä¡´Â ÃÖ´ëÇÑ yMax ÀÌÇÏ
if (yPos+yInc > yMax)
yInc=yMax-yPos;
// yInc=max(-yPos, min(yInc, yMax-yPos));
// »õ·Î¿î À§Ä¡ °è»ê
yPos=yPos+yInc;
// ½ºÅ©·Ñ½ÃŰ°í ½æ À§Ä¡¸¦ ´Ù½Ã °è»êÇÑ´Ù.
ScrollWindow(hWnd, 0, -yInc, NULL, NULL);
SetScrollPos(hWnd, SB_VERT, yPos, TRUE);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
for (i=500,j=0;i>=100;i-=100,j++) {
hBrush=CreateSolidBrush(col[j]);
OldBrush=(HBRUSH)SelectObject(hdc,hBrush);
Ellipse(hdc,500-i-xPos,500-i-yPos,500+i-xPos,500+i-yPos);
DeleteObject(SelectObject(hdc,OldBrush));
}
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
WM_H(V)SCROLL ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ½ºÅ©·Ñ ¹ÙÀÇ ½ºÅ©·Ñ µÈ ¾ç¸¸Å ÇØ´ç À©µµ¿ì¸¦ ¼öÆò, ¼öÁ÷À¸·Î °¢°¢ ½ºÅ©·Ñ½ÃÄ×´Ù. ÀÛ¾÷ ¿µ¿ª Àüü¸¦ ½ºÅ©·Ñ½ÃŰ¹Ç·Î lpRect´Â NULLÀ̸ç Ŭ¸®ÇÎ ¿µ¿ªµµ ¼³Á¤ÇÒ Çʿ䰡 ¾ø´Ù.
|
| Âü°íÇÔ¼ö |
SetScrollInfo, ScrollWindowEx |
| Ç÷§Æû | 95ÀÌ»ó |
| ÂüÁ¶ |
|
|
written by http://www.winapi.co.kr
|