Àμö |
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
|