WM_SETCURSOR

Àμö

wParam : Ä¿¼­ À§Ä¡ÀÇ À©µµ¿ì ÇÚµéÀÌ´Ù. Â÷Àϵå À§¿¡ Ä¿¼­°¡ ÀÖÀ» ¼öµµ ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ¹ÞÀº À©µµ¿ì ÇÚµé°ú´Â ´Ù¸£´Ù.

LOWORD(lParam) : È÷Æ® Å×½ºÆ® ÄÚµåÀ̸ç Ä¿¼­°¡ À©µµ¿ìÀÇ ¾îµðÂë¿¡ ÀÖ´ÂÁö ¾Ë·Á ÁØ´Ù. ÀÌ °ª¿¡ ´ëÇؼ­´Â WM_NCHITTEST ¸Þ½ÃÁö¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.

HIWORD(lParam) : ÀÌ ¸Þ½ÃÁö¸¦ º¸³¾ ¶§ÀÇ ¸¶¿ì½º ¸Þ½ÃÁö ID, ¸Þ´º°¡ ¿­·ÁÀÖ´Â »óÅÂÀ̸é 0ÀÌ´Ù.

¼³¸í

Ä¿¼­°¡ À©µµ¿ì ¿µ¿ª¿¡¼­ À̵¿µÉ ¶§¸¶´Ù ÀÌ ¸Þ½ÃÁö°¡ º¸³»Áö¸ç »õ À§Ä¡¿¡¼­ Ä¿¼­¸¦ ¾î¶² ¸ð¾çÀ¸·Î ¹Ù²Ü °ÍÀΰ¡¸¦ Áú¹®ÇÑ´Ù. ´Ü, Ä¿¼­°¡ ĸóµÇ¾î ÀÖÀ» ¶§´Â ÀÌ ¸Þ½ÃÁö°¡ º¸³»ÁöÁö ¾Ê´Â´Ù. DefWindowProcÀº ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ Á÷Á¢ ó¸®Çϱâ Àü¿¡ ºÎ¸ð À©µµ¿ì¿¡°Ô ÀÌ ¸Þ½ÃÁö¸¦ ¸ÕÀú º¸³» ó¸®Çϵµ·Ï ÇÑ´Ù. ±×·¡¼­ Â÷ÀϵåÀÇ Ä¿¼­ ¸ð¾çÀº ºÎ¸ð À©µµ¿ì°¡ ¿ì¼±ÀûÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Â ±âȸ¸¦ ÁØ´Ù. ºÎ¸ð À©µµ¿ì°¡ ÀÌ À©µµ¿ì¸¦ ó¸®ÇÑ ÈÄ TRUE¸¦ ¸®ÅÏÇÏ¸é ´õ ÀÌ»óÀÇ Ä¿¼­ °ü·Ã 󸮸¦ ÇÏÁö ¾Ê´Â´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì DefWindowProcÀº µðÆúÆ® ó¸®ÇÑ´Ù.

µðÆúÆ®·Î Ä¿¼­´Â ÀÛ¾÷ ¿µ¿ª¿¡ ÀÖÀ» ¶§ À©µµ¿ì Ŭ·¡½º¿¡ µî·ÏµÈ Ä¿¼­·Î º¯°æµÇ¸ç °æ°è¼±À̳ª ŸÀÌƲ ¹Ù µîÀÇ ºñÀÛ¾÷ ¿µ¿ª¿¡ ÀÖÀ» ¶§´Â Å©±âÁ¶Àý ¸ð¾çÀ̳ª È­»ìÇ¥ ¸ð¾çÀÇ Ä¿¼­·Î º¯°æµÈ´Ù. ÀÌ ¹æ½Ä´ë·Î Ä¿¼­¸¦ ó¸®ÇÏ·Á¸é WM_SETCURSOR¸¦ ó¸®ÇÏÁö ¾Ê°í DefWindowProcÀ¸·Î º¸³»Áֱ⸸ ÇÏ¸é µÈ´Ù. ¸¸¾à Ä¿¼­¸¦ Á¶°Ç¿¡ µû¶ó ´Ù¸¥ ¸ð¾çÀ¸·Î ¹Ù²Ù°í ½Í´Ù¸é ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ÁÂÇ¥, Ä¿¼­ À§Ä¡ÀÇ ÄÁÆ®·Ñ µîÀ» Âü°íÇÏ¿© ÀûÀýÈ÷ Ä¿¼­¸¦ º¯°æÇÏ°í TRUE¸¦ ¸®ÅÏÇÏ¸é µÈ´Ù.

¸®ÅÏ

ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é TRUE¸¦ ¸®ÅÏÇÏ¿© ´õ ÀÌ»óÀÇ Ã³¸®¸¦ ÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é FALSE¸¦ ¸®ÅÏÇÑ´Ù.

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ÀÛ¾÷ ¿µ¿ª¿¡ ¹öÆ°, ¸®½ºÆ® ¹Ú½º µî µÎ °³ÀÇ ÄÁÆ®·ÑÀ» »ý¼ºÇØ ³õ°í °¢ ÄÁÆ®·Ñ À§¿¡¼­ Ä¿¼­¸¦ ´Ù¸¥ ¸ð¾çÀ¸·Î ¹Ù²Û´Ù.

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