Àμö |
wParam : Ä¿¼ À§Ä¡ÀÇ À©µµ¿ì ÇÚµéÀÌ´Ù. Â÷Àϵå À§¿¡ Ä¿¼°¡ ÀÖÀ» ¼öµµ ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ¹ÞÀº À©µµ¿ì ÇÚµé°ú´Â ´Ù¸£´Ù. LOWORD(lParam) : È÷Æ® Å×½ºÆ® ÄÚµåÀ̸ç Ä¿¼°¡ À©µµ¿ìÀÇ ¾îµðÂë¿¡ ÀÖ´ÂÁö ¾Ë·Á ÁØ´Ù. ÀÌ °ª¿¡ ´ëÇؼ´Â WM_NCHITTEST ¸Þ½ÃÁö¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. HIWORD(lParam) : ÀÌ ¸Þ½ÃÁö¸¦ º¸³¾ ¶§ÀÇ ¸¶¿ì½º ¸Þ½ÃÁö ID, ¸Þ´º°¡ ¿·ÁÀÖ´Â »óÅÂÀ̸é 0ÀÌ´Ù. |
¼³¸í |
Ä¿¼°¡ À©µµ¿ì ¿µ¿ª¿¡¼ À̵¿µÉ ¶§¸¶´Ù ÀÌ ¸Þ½ÃÁö°¡ º¸³»Áö¸ç »õ À§Ä¡¿¡¼ Ä¿¼¸¦ ¾î¶² ¸ð¾çÀ¸·Î ¹Ù²Ü °ÍÀΰ¡¸¦ Áú¹®ÇÑ´Ù. ´Ü, Ä¿¼°¡ ĸóµÇ¾î ÀÖÀ» ¶§´Â ÀÌ ¸Þ½ÃÁö°¡ º¸³»ÁöÁö ¾Ê´Â´Ù. DefWindowProcÀº ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ Á÷Á¢ ó¸®Çϱâ Àü¿¡ ºÎ¸ð À©µµ¿ì¿¡°Ô ÀÌ ¸Þ½ÃÁö¸¦ ¸ÕÀú º¸³» ó¸®Çϵµ·Ï ÇÑ´Ù. ±×·¡¼ Â÷ÀϵåÀÇ Ä¿¼ ¸ð¾çÀº ºÎ¸ð À©µµ¿ì°¡ ¿ì¼±ÀûÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Â ±âȸ¸¦ ÁØ´Ù. ºÎ¸ð À©µµ¿ì°¡ ÀÌ À©µµ¿ì¸¦ ó¸®ÇÑ ÈÄ TRUE¸¦ ¸®ÅÏÇÏ¸é ´õ ÀÌ»óÀÇ Ä¿¼ °ü·Ã 󸮸¦ ÇÏÁö ¾Ê´Â´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì DefWindowProcÀº µðÆúÆ® ó¸®ÇÑ´Ù. µðÆúÆ®·Î Ä¿¼´Â ÀÛ¾÷ ¿µ¿ª¿¡ ÀÖÀ» ¶§ À©µµ¿ì Ŭ·¡½º¿¡ µî·ÏµÈ Ä¿¼·Î º¯°æµÇ¸ç °æ°è¼±À̳ª ŸÀÌƲ ¹Ù µîÀÇ ºñÀÛ¾÷ ¿µ¿ª¿¡ ÀÖÀ» ¶§´Â Å©±âÁ¶Àý ¸ð¾çÀ̳ª È»ìÇ¥ ¸ð¾çÀÇ Ä¿¼·Î º¯°æµÈ´Ù. ÀÌ ¹æ½Ä´ë·Î Ä¿¼¸¦ ó¸®ÇÏ·Á¸é WM_SETCURSOR¸¦ ó¸®ÇÏÁö ¾Ê°í DefWindowProcÀ¸·Î º¸³»Áֱ⸸ ÇÏ¸é µÈ´Ù. ¸¸¾à Ä¿¼¸¦ Á¶°Ç¿¡ µû¶ó ´Ù¸¥ ¸ð¾çÀ¸·Î ¹Ù²Ù°í ½Í´Ù¸é ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ÁÂÇ¥, Ä¿¼ À§Ä¡ÀÇ ÄÁÆ®·Ñ µîÀ» Âü°íÇÏ¿© ÀûÀýÈ÷ Ä¿¼¸¦ º¯°æÇÏ°í TRUE¸¦ ¸®ÅÏÇÏ¸é µÈ´Ù. |
¸®ÅÏ |
ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é TRUE¸¦ ¸®ÅÏÇÏ¿© ´õ ÀÌ»óÀÇ Ã³¸®¸¦ ÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é FALSE¸¦ ¸®ÅÏÇÑ´Ù. |
¿¹Á¦ |
´ÙÀ½ ¿¹Á¦´Â ÀÛ¾÷ ¿µ¿ª¿¡ ¹öÆ°, ¸®½ºÆ® ¹Ú½º µî µÎ °³ÀÇ ÄÁÆ®·ÑÀ» »ý¼ºÇØ ³õ°í °¢ ÄÁÆ®·Ñ À§¿¡¼ Ä¿¼¸¦ ´Ù¸¥ ¸ð¾çÀ¸·Î ¹Ù²Û´Ù. HWND hBtn, hList; LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; TCHAR Mes[]="Ä¿¼ÀÇ À§Ä¡¿¡ µû¶ó ¸ð¾çÀ» ¹Ù²ß´Ï´Ù"; switch(iMessage) { case WM_CREATE: hBtn=CreateWindow("button","¹öÆ°",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 20,20,100,25,hWnd,(HMENU)0,g_hInst,NULL); hList=CreateWindow("listbox",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER, 20,50,100,100,hWnd,(HMENU)1,g_hInst,NULL); return 0; case WM_PAINT: hdc=BeginPaint(hWnd, &ps); TextOut(hdc,150,20,Mes,lstrlen(Mes)); EndPaint(hWnd, &ps); return 0; case WM_SETCURSOR: if ((HWND)wParam==hBtn) { SetCursor(LoadCursor(NULL,IDC_WAIT)); return TRUE; } if ((HWND)wParam==hList) { SetCursor(LoadCursor(NULL,IDC_IBEAM)); return TRUE; } break; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ¹öÆ° À§¿¡ ÀÖÀ» ¶§´Â ¸ð·¹ ½Ã°è ¸ð¾çÀ¸·Î ¹Ù²Ù¸ç ¸®½ºÆ® ¹Ú½º À§¿¡ ÀÖÀ» ¶§´Â IÀÚ ¸ð¾çÀÇ Ä¿¼·Î ¹Ù²Ù¾ú´Ù. Ä¿¼¸¦ Á÷Á¢ ¹Ù²Ù¾úÀ¸¹Ç·Î TRUE¸¦ ¸®ÅÏÇÏ¿© ´õ ÀÌ»óÀÇ Ä¿¼ °ü·Ã 󸮸¦ ÇÏÁö ¾Êµµ·Ï ÇÏ¿´´Ù. ¸¸¾à ±× ¿ÜÀÇ ¿µ¿ª¿¡ ÀÖÀ» °æ¿ì´Â breakÇÏ¿© DefWindowProcÀ¸·Î 󸮸¦ ³Ñ±ä´Ù. |
Ç÷§Æû |
95ÀÌ»ó |
ÂüÁ¶ |
|
written by http://www.winapi.co.kr
|