Àμö |
wParam : ¹öÆ° ÄÁÆ®·ÑÀÇ DCÇÚµé. ÀÌ DC¿¡ Àü°æ»ö°ú ¹è°æ»ö µîÀ» ¼³Á¤ÇÑ´Ù. lParam : ¹öÆ° ÄÁÆ®·ÑÀÇ ÇÚµé. ÇÑ À©µµ¿ì¿¡ ¹öÆ°ÀÌ ¿©·¯ °³ ÀÖÀ» °æ¿ì ÀÌ Çڵ鰪À¸·Î ¿øÇÏ´Â ¹öÆ°¸¸ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. |
¼³¸í |
½Ã½ºÅÛÀÌ ¿À³Ê µå·Î¿ì ¹öÆ°À» ±×¸®±â Àü¿¡ ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ¹è°æ»ö»ó°ú Àü°æ»ö ¹è°æ»ö µîÀ» Áú¹®ÇÑ´Ù. DefWindowProcÀº ½Ã½ºÅÛ¿¡ Á¤ÀÇµÈ ÄÁÆ®·Ñ »ö»óÀ» ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾ÊÀ¸¸é µðÆúÆ® »ö»óÀ¸·Î ¹öÆ°ÀÌ ±×·ÁÁø´Ù. ºÎ¸ð À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¸¦ Á÷Á¢ ó¸®Çϸé wParamÀ¸·Î Àü´ÞµÇ´Â DC¿¡ Àü°æ»ö°ú ¹è°æ»öÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç ¹è°æ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇÔÀ¸·Î½á ¹öÆ°ÀÇ ¹è°æ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ¹è°æ ºê·¯½Ã¸¦ º¯°æÇÏ°íÀÚ ÇÒ °æ¿ì WM_CREATE µîÀÇ ¸Þ½ÃÁö¿¡¼ ¹Ì¸® ºê·¯½Ã¸¦ ¸¸µé¾î ³õ°í ÀÌ ¸Þ½ÃÁö¿¡¼ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇØ ÁÖ¸é µÈ´Ù. ½Ã½ºÅÛÀº ÀÌ ¸Þ½ÃÁö¿¡¼ ¸®ÅÏÇÑ ºê·¯½Ã ÇÚµé·Î ¿À³Ê µå·Î¿ì ¹öÆ°ÀÇ ¹è°æÀ» ä»öÇÑ´Ù. ÀÌ ºê·¯½Ã´Â ½Ã½ºÅÛÀÌ ÀÚµ¿À¸·Î Æı«ÇØ ÁÖÁö ¾ÊÀ¸¹Ç·Î ´õ ÀÌ»ó ÇÊ¿ä°¡ ¾ø¾îÁ³À» ¶§(WM_DESTROY) ºÎ¸ð À©µµ¿ì°¡ Á÷Á¢ Æı«ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¿À³Ê µå·Î¿ì ¹öÆ°¿¡ ´ëÇؼ¸¸ ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸ç BS_PUSHBUTTON, BS_DEFPUSHBUTTON, BS_PUSHLIKE ½ºÅ¸ÀÏÀÇ ¹öÆ°¿¡ ´ëÇؼ´Â ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇÁö ¾Ê´Â´Ù. ÀÌ ¸Þ½ÃÁö¸¦ ¹ÞÀ¸·Á¸é ¹öÆ°Àº ¹Ýµå½Ã BS_OWNERDRAW ½ºÅ¸ÀÏÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ ¸Þ½ÃÁö´Â °°Àº ½º·¹µå ³»¿¡¼¸¸ º¸³»Áø´Ù. |
¸®ÅÏ |
ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é ¹è°æ ºê·¯½ÃÀÇ ÇÚµéÀ» ¸®ÅÏÇØ ÁØ´Ù. ºê·¯½Ã Çڵ鰪Àº LRESULT·Î ij½ºÆÃµÈ ÈÄ ¸®ÅϵǾî¾ß ÇÑ´Ù. ºÎ¸ð À©µµ¿ì°¡ ´ëÈ»óÀÚ¶ó¸é BOOLÇüÀ¸·Î ij½ºÆÃÇØ¾ß ÇÑ´Ù. |
¿¹Á¦ |
´ÙÀ½ ¿¹Á¦´Â Ǫ½¬ ¹öÆ°°ú ¿À³Ê µå·Î¿ì ¹öÆ°À» ¸¸µé°í ¿À³Ê µå·Î¿ì ¹öÆ°ÀÇ ¹è°æ »ö»ó°ú Àü°æ, ¹è°æ»öÀ» º¯°æÇÑ´Ù. HWND hBtn1,hBtn2; LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static HBRUSH hBrush; LPDRAWITEMSTRUCT lpdis; switch(iMessage) { case WM_CREATE: hBtn1=CreateWindow("button","º¸Åë ¹öÆ°",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 20,20,100,25,hWnd,(HMENU)0,g_hInst,NULL); hBtn2=CreateWindow("button","",WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, 20,120,100,25,hWnd,(HMENU)1,g_hInst,NULL); hBrush=CreateSolidBrush(RGB(0,0,255)); return 0; case WM_CTLCOLORBTN: SetTextColor((HDC)wParam,RGB(0,255,0)); SetBkColor((HDC)wParam,RGB(0,0,255)); return (LRESULT)hBrush; case WM_DRAWITEM: lpdis = (LPDRAWITEMSTRUCT)lParam; if (lpdis->itemState & ODS_SELECTED) { TextOut(lpdis->hDC,2,2,"¼±ÅõÊ",6); } else { TextOut(lpdis->hDC,2,2,"¾È¼±ÅÃ",6); } return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case 0: MessageBox(hWnd,"º¸Åë ¹öÆ°À» ´·¶½À´Ï´Ù.","¾Ë¸²",MB_OK); break; case 1: MessageBox(hWnd,"¿À³Ê µå·Î¿ì ¹öÆ°À» ´·¶½À´Ï´Ù.","¾Ë¸²",MB_OK); break; } return 0; case WM_PAINT: hdc=BeginPaint(hWnd, &ps); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: DeleteObject(hBrush); PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù. ¿À³Ê µå·Î¿ì ¹öÆ°µµ ¼±ÅÃÇϸé WM_COMMAND ¸Þ½ÃÁö¸¦ º¸³½´Ù. |
Ç÷§Æû |
95ÀÌ»ó |
ÂüÁ¶ |
|
written by http://www.winapi.co.kr
|