| Àμö |
wParam : ½ºÅ©·Ñ ¹ÙÀÇ DCÇÚµé. ÀÌ DC¿¡ Àü°æ»ö°ú ¹è°æ»ö µîÀ» ¼³Á¤ÇÑ´Ù. lParam : ½ºÅ©·Ñ ¹ÙÀÇ ÇÚµé. ÇÑ À©µµ¿ì¿¡ ¿©·¯ °³ÀÇ ½ºÅ©·Ñ ¹Ù°¡ ÀÖÀ» °æ¿ì ÀÌ Çڵ鰪À¸·Î ¿øÇÏ´Â ½ºÅ©·Ñ ¹Ù¸¸ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. |
| ¼³¸í |
½Ã½ºÅÛÀÌ ½ºÅ©·Ñ ¹Ù¸¦ ±×¸®±â Àü¿¡ ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ¹è°æ»ö»óÀ¸·Î »ç¿ëÇÒ ºê·¯½Ã ÇÚµéÀ» Áú¹®ÇÑ´Ù. DefWindowProcÀº ½Ã½ºÅÛ¿¡ Á¤ÀÇµÈ ÄÁÆ®·Ñ »ö»óÀ» ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾ÊÀ¸¸é µðÆúÆ® »ö»óÀ¸·Î ½ºÅ©¸¦ ¹Ù°¡ ±×·ÁÁø´Ù. ºÎ¸ð À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¸¦ Á÷Á¢ ó¸®ÇÏ¿© ¹è°æ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇÏ¸é ½ºÅ©·Ñ ¹ÙÀÇ ¹è°æ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. wParamÀ¸·Î DCÀÇ ÇÚµéÀÌ Àü´ÞµÇ¹Ç·Î Àü°æ»ö°ú ¹è°æ»öÀ» º¯°æÇÒ ¼ö´Â ÀÖÁö¸¸ ½ºÅ©·Ñ ¹Ù´Â ÅØ½ºÆ®¸¦ Ãâ·ÂÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹è°æ ºê·¯½Ã¸¦ ¹Ù²Ù´Â °Í ¿Ü¿¡´Â º°´Ù¸¥ Àǹ̰¡ ¾ø´Ù. ¹è°æ ºê·¯½Ã¸¦ º¯°æÇϰíÀÚ ÇÒ °æ¿ì WM_CREATE µîÀÇ ¸Þ½ÃÁö¿¡¼ ¹Ì¸® ºê·¯½Ã¸¦ ¸¸µé¾î ³õ°í ÀÌ ¸Þ½ÃÁö¿¡¼ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇØ ÁÖ¸é µÈ´Ù. ½Ã½ºÅÛÀº ÀÌ ¸Þ½ÃÁö¿¡¼ ¸®ÅÏÇÑ ºê·¯½Ã ÇÚµé·Î ½ºÅ©·Ñ ¹ÙÀÇ ¸öü¸¦ ±×¸°´Ù. ÀÌ ºê·¯½Ã´Â ½Ã½ºÅÛÀÌ ÀÚµ¿À¸·Î ÆÄ±«ÇØ ÁÖÁö ¾ÊÀ¸¹Ç·Î ´õ ÀÌ»ó Çʿ䰡 ¾ø¾îÁ³À» ¶§(WM_DESTROY) ºÎ¸ð À©µµ¿ì°¡ Á÷Á¢ ÆÄ±«ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ ¸Þ½ÃÁö´Â ½ºÅ©·Ñ ¹Ù ÄÁÆ®·Ñ¿¡°Ô¸¸ º¸³»Áö¸ç WM_HSCROLL, WS_VSCROLL ½ºÅ¸ÀÏ¿¡ ÀÇÇØ À©µµ¿ì¿¡ ºÎÂøµÈ Ç¥ÁØ ½ºÅ©·Ñ ¹Ù¿¡´Â º¸³»ÁöÁö ¾Ê´Â´Ù. ÀÌ ¸Þ½ÃÁö´Â °°Àº ½º·¹µå ³»¿¡¼¸¸ º¸³»Áø´Ù. |
| ¸®ÅÏ |
ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é ¹è°æ ºê·¯½ÃÀÇ ÇÚµéÀ» ¸®ÅÏÇØ ÁØ´Ù. ºê·¯½Ã Çڵ鰪Àº LRESULT·Î ij½ºÆÃµÈ ÈÄ ¸®ÅϵǾî¾ß ÇÑ´Ù. ºÎ¸ð À©µµ¿ì°¡ ´ëÈ»óÀÚ¶ó¸é BOOLÇüÀ¸·Î ij½ºÆÃÇØ¾ß ÇÑ´Ù. |
| ¿¹Á¦ |
´ÙÀ½ ¿¹Á¦´Â ½ºÅ©·Ñ ¼¼ °³·Î »ö»óÀ» ¼±ÅÃÇÏ´Â ÀüÇüÀûÀÎ ½ºÅ©·Ñ ¹Ù ¿¹Á¦ÀÌ´Ù. °¢ ½ºÅ©·Ñ ¹ÙÀÇ ¸öü »ö»óÀ» Á¶Á¤ÇÒ »ö»óÀ¸·Î Ãâ·ÂÇϵµ·Ï ÇÏ¿´´Ù.
#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
|