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