½ºÅ©·Ñ ¹Ù´Â Áö±Ý±îÁö ³íÇÑ ÄÁÆ®·Ñµé¿¡ ºñÇؼ´Â ºñ±³Àû º¹ÀâÇÑ ÄÁÆ®·ÑÀÌ´Ù. ¿©±â¼´Â ´ëÃæ ¿¹Á¦ ±¸°æ¸¸ ÇÏ°í ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½¿¡ ¾Ë¾Æº¸´Â °ÍÀÌ ÁÁÀ» °Í °°´Ù.
½ºÅ©·Ñ ¹Ù´Â "scrollbar"À©µµ¿ì Ŭ·¡½º·Î »ý¼ºÇÏ¸ç ¼öÆò ½ºÅ©·Ñ ¹ÙÀÏ °æ¿ì SBS_HORZ ½ºÅ¸ÀÏÀ», ¼öÁ÷ ½ºÅ©·Ñ ¹ÙÀÏ °æ¿ì´Â SBS_VERT ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÑ´Ù. ´ÙÇàÈ÷ ½ºÅ¸ÀÏÀº µÎ °¡Áö Á¾·ù¹Û¿¡ ¾ø´Ù. ½ºÅ©·Ñ ¹Ù´Â ¹üÀ§¿Í ÇöÀç À§Ä¡°ªÀ» °¡Áö´Âµ¥ ´ÙÀ½ µÎ ÇÔ¼ö·Î ÀÌ °ªµéÀ» ÁöÁ¤ÇÑ´Ù.
BOOL SetScrollRange( HWND hWnd, int nBar, int nMinPos, int nMaxPos, BOOL bRedraw );
int SetScrollPos( HWND hWnd, int nBar, int nPos, BOOL bRedraw );
SetScrollRange ÇÔ¼ö·Î ÃÖ´ë°ª(nMaxPos), ÃÖ¼Ò°ª(nMinPos)À» ÁöÁ¤ÇÏµÇ Ã¹¹ø° Àμö°¡ ½ºÅ©·Ñ ¹ÙÀÇ À©µµ¿ì ÇÚµéÀÌ´Ù. µÎ¹ø° Àμö nBar´Â ¸ÞÀÎ À©µµ¿ì¿¡ ºÎÂøµÈ ½ºÅ©·Ñ ¹Ù ¶Ç´Â º°µµÀÇ ½ºÅ©·Ñ ¹Ù ÄÁÆ®·ÑÀ» ÁöÁ¤Çϴµ¥ ÀÌ °ªÀÌ SBS_CTLÀÌ¸é º°µµÀÇ ÄÁÆ®·ÑÀ» ÁöÁ¤ÇÑ´Ù. SetScrollPos´Â ½ºÅ©·Ñ ¹ÙÀÇ ÇöÀç À§Ä¡¸¦ ¼¼¹ø° Àμö nPos·Î ÁöÁ¤ÇÑ´Ù.
´Ù¸¥ ÄÁÆ®·ÑµéÀº Àڽſ¡°Ô º¯È°¡ ÀÖÀ» ¶§ ºÎ¸ð À©µµ¿ì·Î ÅëÁö ¸Þ½ÃÁö¸¦ º¸³»´Âµ¥ ºñÇØ ½ºÅ©·Ñ ¹Ù´Â WM_HSCROLL(¼öÆòÀÏ °æ¿ì), WM_VSCROLL(¼öÁ÷ÀÏ °æ¿ì)À̶ó´Â º°µµÀÇ ¸Þ½ÃÁö¸¦ ºÎ¸ð À©µµ¿ì·Î º¸³»¸ç Ãß°¡ Á¤º¸´Â ´ÙÀ½°ú °°´Ù.
Àμö |
¼³¸í |
LOWORD(wParam) |
½ºÅ©·Ñ ¹Ù ³»ÀÇ ¾îµð¸¦ ´·¶´Â°¡? |
HIWORD(wParam) |
ÇöÀç À§Ä¡ |
lParam |
½ºÅ©·Ñ ¹ÙÀÇ À©µµ¿ì ÇÚµé |
LOWORD(wParam)À¸·Î Àü´ÞµÇ´Â °ªÀº »ç¿ëÀÚÀÇ ½ºÅ©·Ñ ¿ä±¸»çÇ×À» ³ªÅ¸³»¸ç °¡´ÉÇÑ °ªÀÇ Á¾·ù´Â ´ÙÀ½°ú °°´Ù.
°ª |
¼³¸í |
SB_LINELEFT ¶Ç´Â SB_LINEUP |
»ç¿ëÀÚ°¡ ¿ÞÂÊ È»ìÇ¥ ¹öÆ°À» ´·¶´Ù´Â ¶æÀ̸ç À̶§´Â ¿ÞÂÊÀ¸·Î ÇÑ ´ÜÀ§ ½ºÅ©·Ñ½ÃŲ´Ù. |
SB_LINERIGHT ¶Ç´Â SB_LINEDOWN |
»ç¿ëÀÚ°¡ ¿À¸¥ÂÊ È»ìÇ¥ ¹öÆ°À» ´·¶´Ù´Â ¶æÀ̸ç À̶§´Â ¿À¸¥ÂÊÀ¸·Î ÇÑ ´ÜÀ§ ½ºÅ©·Ñ½ÃŲ´Ù. |
SB_PAGELEFT ¶Ç´Â SB_PAGEUP |
»ç¿ëÀÚ°¡ ¿ÞÂÊ ¸öÅë ºÎºÐÀ» ´·¶´Ù´Â ¶æÀ̸ç À̶§´Â ÇÑÆäÀÌÁö ¿ÞÂÊÀ¸·Î ½ºÅ©·Ñ½ÃŲ´Ù. |
SB_PAGERIGHT ¶Ç´Â SB_PAGEDOWN |
»ç¿ëÀÚ°¡ ¿À¸¥ÂÊ ¸öÅë ºÎºÐÀ» ´·¶´Ù´Â ¶æÀ̸ç À̶§´Â ÇÑÆäÀÌÁö ¿À¸¥ÂÊÀ¸·Î ½ºÅ©·Ñ½ÃŲ´Ù. |
SB_THUMBPOSITION |
½ºÅ©·Ñ ¹Ú½º¸¦ µå·¡±×ÇÑ ÈÄ ¸¶¿ì½º ¹öÆ°À» ³õ¾Ò´Ù. |
SB_THUMBTRACK |
½ºÅ©·Ñ ¹Ú½º¸¦ µå·¡±×ÇÏ°í ÀÖ´Â ÁßÀÌ´Ù. ÀÌ ¸Þ½ÃÁö´Â ¸¶¿ì½º ¹öÆ°À» ³õÀ» ¶§±îÁö °è¼Ó Àü´ÞµÈ´Ù. |
¼öÆò ½ºÅ©·Ñ ¹Ù¸¦ ¿¹·Î µé¾î »ç¿ëÀÚ°¡ Ŭ¸¯ÇÑ ºÎºÐ°ú À̶§ Àü´ÞµÇ´Â ¸Þ½ÃÁö¸¦ º¸¸é ´ÙÀ½°ú °°´Ù. ¾ç³¡ÀÇ ¹öÆ°À» ´©¸£´Â °ÍÀº ºñ±³Àû ÀÛÀº ´ÜÀ§(¿¹¸¦ µé¾î ÇÑ ÁÙ¾¿)·Î ¼¶¼¼ÇÏ°Ô À̵¿Ç϶ó´Â ¶æÀÌ¸ç ¸öÅëºÎºÐÀ» Ŭ¸¯ÇÏ´Â °ÍÀº ºñ±³Àû Å« ´ÜÀ§(¿¹¸¦ µé¾î ÇÑ ÆäÀÌÁö¾¿)·Î À̵¿Ç϶ó´Â ¶æÀÌ´Ù.
¶ÇÇÑ ¼öÆò ½ºÅ©·Ñ ¹Ù´Â ¿ÞÂÊ, ¿À¸¥ÂÊÀ¸·Î ½ºÅ©·ÑµÇÁö¸¸ ¼öÁ÷ ½ºÅ©·Ñ ¹Ù´Â À§, ¾Æ·¡·Î ½ºÅ©·ÑµÇ´Âµ¥ À̶§ ¼öÆòÀÇ ¿ÞÂÊ À̵¿°ú ¼öÁ÷ÀÇ À§ÂÊ À̵¿Àº µÑ ´Ù °ªÀ» °¨¼Ò½ÃÅ°´Â Á¡¿¡¼ µ¿ÀÏÇÏ´Ù. ±×·¡¼ SB_LINELEFT¿Í SB_LINEUPÀº °°Àº Àǹ̶ó°í ÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½ ¿¹Á¦´Â ½ºÅ©·Ñ ¹Ù ¼¼ °³¸¦ »ç¿ëÇÏ¿© R,G,B°ªÀ» ÀÔ·Â¹Þ¾Æ ºê·¯½Ã¸¦ ¸¸µç ÈÄ »ç°¢ÇüÀ» ±×¸°´Ù.
#define ID_SCRRED 100
#define ID_SCRGREEN 101
#define ID_SCRBLUE 102
HWND hRed,hGreen,hBlue;
int Red,Green,Blue;
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
HBRUSH MyBrush, OldBrush;
int TempPos;
switch(iMessage) {
case WM_CREATE:
hRed=CreateWindow("scrollbar",NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
10,10,200,20,hWnd,(HMENU)ID_SCRRED,g_hInst,NULL);
hGreen=CreateWindow("scrollbar",NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
10,40,200,20,hWnd,(HMENU)ID_SCRGREEN,g_hInst,NULL);
hBlue=CreateWindow("scrollbar",NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
10,70,200,20,hWnd,(HMENU)ID_SCRBLUE,g_hInst,NULL);
SetScrollRange(hRed,SB_CTL,0,255,TRUE);
SetScrollPos(hRed,SB_CTL,0,TRUE);
SetScrollRange(hGreen,SB_CTL,0,255,TRUE);
SetScrollPos(hGreen,SB_CTL,0,TRUE);
SetScrollRange(hBlue,SB_CTL,0,255,TRUE);
SetScrollPos(hBlue,SB_CTL,0,TRUE);
return 0;
case WM_HSCROLL:
if ((HWND)lParam == hRed) TempPos = Red;
if ((HWND)lParam == hGreen) TempPos = Green;
if ((HWND)lParam == hBlue) TempPos = Blue;
switch (LOWORD(wParam)) {
case SB_LINELEFT:
TempPos=max(0,TempPos-1);
break;
case SB_LINERIGHT:
TempPos=min(255,TempPos+1);
break;
case SB_PAGELEFT:
TempPos=max(0,TempPos-10);
break;
case SB_PAGERIGHT:
TempPos=min(255,TempPos+10);
break;
case SB_THUMBTRACK:
TempPos=HIWORD(wParam);
break;
}
if ((HWND)lParam == hRed) Red=TempPos;
if ((HWND)lParam == hGreen) Green=TempPos;
if ((HWND)lParam == hBlue) Blue=TempPos;
SetScrollPos((HWND)lParam,SB_CTL,TempPos,TRUE);
InvalidateRect(hWnd,NULL,FALSE);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
MyBrush=CreateSolidBrush(RGB(Red,Green,Blue));
OldBrush=(HBRUSH)SelectObject(hdc,MyBrush);
Rectangle(hdc,10,100,210,200);
SelectObject(hdc,OldBrush);
DeleteObject(MyBrush);
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
|
½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù. ½ºÅ©·Ñ ¹Ù¸¦ µå·¡±×ÇÏ¿© À̵¿½ÃÄÑ º¸¸é ¾Æ·¡ÂÊ »ç°¢ÇüÀÇ »ö»óÀÌ º¯°æµÉ °ÍÀÌ´Ù.
WM_CREATE¿¡¼ ¼¼ °³ÀÇ ¼öÆò ½ºÅ©·Ñ ¹Ù¸¦ ¸¸µé°í ¹üÀ§¸¦ °¢°¢ 0~255±îÁö ÁöÁ¤ÇÏ¿´´Ù. »ö»ó°ªÀº 1¹ÙÀÌÆ®À̱⠶§¹®¿¡ ÃÖ´ë°ªÀº 255ÀÌ¸é µÈ´Ù. ÀÌ ¼öÆò ½ºÅ©·Ñ ¹Ù´Â »ç¿ëÀÚ°¡ ÀÚ½ÅÀ» Ŭ¸¯ÇÒ °æ¿ì ºÎ¸ð À©µµ¿ì·Î WM_HSCROLL ¸Þ½ÃÁö¸¦ º¸³»ÁÙ °ÍÀÌ´Ù. ¸ÞÀÎ À©µµ¿ì´Â ½ºÅ©·Ñ ¹Ù°¡ WM_HSCROLL ¸Þ½ÃÁö¸¦ º¸³»¿Ã ¶§ »ç¿ëÀÚ°¡ ½ºÅ©·Ñ ¹ÙÀÇ ¾îµð¸¦ ´·¶´ÂÁö LOWORD(wParam) °ª¿¡ µû¶ó »ö»ó°ªÀ» Àû´çÈ÷ Áõ°¨½ÃÅ°´Âµ¥ SB_LINE* ¸Þ½ÃÁöÀÏ °æ¿ì 1¾¿ Áõ°¨½ÃÅ°°í SB_PAGE*ÀÏ °æ¿ì´Â 10¾¿ Áõ°¨½ÃÄ×´Ù. Áõ°¨µÈ °ªÀÇ °á°ú´Â Red, Green, Blue Àü¿ª º¯¼ö¿¡ ´ëÀԵǸç ÀÌ °©½Ã º¯°æµÉ ¶§¸¶´Ù ÀÛ¾÷ ¿µ¿ªÀ» ¹«È¿ÈÇÏ¿© ´Ù½Ã ±×¸®µµ·Ï ÇÏ¿´´Ù.
WM_PAINT ¸Þ½ÃÁö¿¡¼´Â Àü¿ª º¯¼ö Red, Green, Blue °ªÀ» È¥ÇÕÇÏ¿© ´Ü»öÀÇ ºê·¯½Ã¸¦ ¸¸µé°í »ç°¢ÇüÀ» ±×¸²À»½á ½ºÅ©·Ñ ¹Ù·Î ¼±ÅÃÇÑ »ö»ó°ªÀÌ È¸éÀ¸·Î Ãâ·ÂµÇ´Â °ÍÀÌ´Ù.
|