¿øÇü |
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
|