WM_CTLCOLORSCROLLBAR

Àμö

wParam : ½ºÅ©·Ñ ¹ÙÀÇ DCÇÚµé. ÀÌ DC¿¡ Àü°æ»ö°ú ¹è°æ»ö µîÀ» ¼³Á¤ÇÑ´Ù.

lParam : ½ºÅ©·Ñ ¹ÙÀÇ ÇÚµé. ÇÑ À©µµ¿ì¿¡ ¿©·¯ °³ÀÇ ½ºÅ©·Ñ ¹Ù°¡ ÀÖÀ» °æ¿ì ÀÌ Çڵ鰪À¸·Î ¿øÇÏ´Â ½ºÅ©·Ñ ¹Ù¸¸ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù.

¼³¸í

½Ã½ºÅÛÀÌ ½ºÅ©·Ñ ¹Ù¸¦ ±×¸®±â Àü¿¡ ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ¹è°æ»ö»óÀ¸·Î »ç¿ëÇÒ ºê·¯½Ã ÇÚµéÀ» Áú¹®ÇÑ´Ù. DefWindowProcÀº ½Ã½ºÅÛ¿¡ Á¤ÀÇµÈ ÄÁÆ®·Ñ »ö»óÀ» ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾ÊÀ¸¸é µðÆúÆ® »ö»óÀ¸·Î ½ºÅ©¸¦ ¹Ù°¡ ±×·ÁÁø´Ù. ºÎ¸ð À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¸¦ Á÷Á¢ ó¸®ÇÏ¿© ¹è°æ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇÏ¸é ½ºÅ©·Ñ ¹ÙÀÇ ¹è°æ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. wParamÀ¸·Î DCÀÇ ÇÚµéÀÌ Àü´ÞµÇ¹Ç·Î Àü°æ»ö°ú ¹è°æ»öÀ» º¯°æÇÒ ¼ö´Â ÀÖÁö¸¸ ½ºÅ©·Ñ ¹Ù´Â ÅؽºÆ®¸¦ Ãâ·ÂÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹è°æ ºê·¯½Ã¸¦ ¹Ù²Ù´Â °Í ¿Ü¿¡´Â º°´Ù¸¥ Àǹ̰¡ ¾ø´Ù.

¹è°æ ºê·¯½Ã¸¦ º¯°æÇÏ°íÀÚ ÇÒ °æ¿ì WM_CREATE µîÀÇ ¸Þ½ÃÁö¿¡¼­ ¹Ì¸® ºê·¯½Ã¸¦ ¸¸µé¾î ³õ°í ÀÌ ¸Þ½ÃÁö¿¡¼­ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇØ ÁÖ¸é µÈ´Ù. ½Ã½ºÅÛÀº ÀÌ ¸Þ½ÃÁö¿¡¼­ ¸®ÅÏÇÑ ºê·¯½Ã ÇÚµé·Î ½ºÅ©·Ñ ¹ÙÀÇ ¸öü¸¦ ±×¸°´Ù. ÀÌ ºê·¯½Ã´Â ½Ã½ºÅÛÀÌ ÀÚµ¿À¸·Î Æı«ÇØ ÁÖÁö ¾ÊÀ¸¹Ç·Î ´õ ÀÌ»ó ÇÊ¿ä°¡ ¾ø¾îÁ³À» ¶§(WM_DESTROY) ºÎ¸ð À©µµ¿ì°¡ Á÷Á¢ Æı«ÇØ ÁÖ¾î¾ß ÇÑ´Ù.

ÀÌ ¸Þ½ÃÁö´Â ½ºÅ©·Ñ ¹Ù ÄÁÆ®·Ñ¿¡°Ô¸¸ º¸³»Áö¸ç WM_HSCROLL, WS_VSCROLL ½ºÅ¸ÀÏ¿¡ ÀÇÇØ À©µµ¿ì¿¡ ºÎÂøµÈ Ç¥ÁØ ½ºÅ©·Ñ ¹Ù¿¡´Â º¸³»ÁöÁö ¾Ê´Â´Ù. ÀÌ ¸Þ½ÃÁö´Â °°Àº ½º·¹µå ³»¿¡¼­¸¸ º¸³»Áø´Ù.

¸®ÅÏ

ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é ¹è°æ ºê·¯½ÃÀÇ ÇÚµéÀ» ¸®ÅÏÇØ ÁØ´Ù. ºê·¯½Ã Çڵ鰪Àº LRESULT·Î ij½ºÆÃµÈ ÈÄ ¸®ÅϵǾî¾ß ÇÑ´Ù. ºÎ¸ð À©µµ¿ì°¡ ´ëÈ­»óÀÚ¶ó¸é BOOLÇüÀ¸·Î ij½ºÆÃÇØ¾ß ÇÑ´Ù.

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ½ºÅ©·Ñ ¼¼ °³·Î »ö»óÀ» ¼±ÅÃÇÏ´Â ÀüÇüÀûÀÎ ½ºÅ©·Ñ ¹Ù ¿¹Á¦ÀÌ´Ù. °¢ ½ºÅ©·Ñ ¹ÙÀÇ ¸öü »ö»óÀ» Á¶Á¤ÇÒ »ö»óÀ¸·Î Ãâ·ÂÇϵµ·Ï ÇÏ¿´´Ù.

#define ID_SCRRED 100
#define ID_SCRGREEN 101
#define ID_SCRBLUE 102
HWND hRed,hGreen,hBlue;
int Red,Green,Blue;
HBRUSH hbR,hbG,hbB;
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);
		hbR=CreateSolidBrush(RGB(255,0,0));
		hbG=CreateSolidBrush(RGB(0,255,0));
		hbB=CreateSolidBrush(RGB(0,0,255));
		return 0;
	case WM_CTLCOLORSCROLLBAR:
		if ((HWND)lParam==hRed)
			return (LRESULT)hbR;
		if ((HWND)lParam==hGreen)
			return (LRESULT)hbG;
		if ((HWND)lParam==hBlue)
			return (LRESULT)hbB;
		break;
	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:
		DeleteObject(hbR);
		DeleteObject(hbG);
		DeleteObject(hbB);
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

WM_CREATE¿¡¼­ ¹Ì¸® ¼¼ °³ÀÇ ºê·¯½Ã¸¦ »ý¼ºÇØ µÎ¾úÀ¸¸ç WM_CTLCOLORSCROLLBAR ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ½ºÅ©·Ñ ¹ÙÀÇ ÇÚµé°ú ºñ±³ÇÏ¿© ÀûÀýÇÑ »ö»óÀÇ ºê·¯½Ã¸¦ ¸®ÅÏÇØ ÁÖ¾ú´Ù. WM_DESTROY¿¡¼­ ºê·¯½Ã´Â ÇØÁ¦ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù.

Ç÷§Æû

95ÀÌ»ó

ÂüÁ¶

 


written by http://www.winapi.co.kr