WM_CTLCOLORLISTBOX

Àμö

wParam : ¸®½ºÆ® ¹Ú½ºÀÇ DCÇÚµé. ÀÌ DC¿¡ Àü°æ»ö°ú ¹è°æ»ö µîÀ» ¼³Á¤ÇÑ´Ù.

lParam : ¸®½ºÆ® ¹Ú½ºÀÇ ÇÚµé. ÇÑ À©µµ¿ì¿¡ ¿©·¯ °³ÀÇ ¸®½ºÆ® ¹Ú½º°¡ ÀÖÀ» °æ¿ì ÀÌ Çڵ鰪À¸·Î ¿øÇÏ´Â ¸®½ºÆ® ¹Ú½º¸¸ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù.

¼³¸í

½Ã½ºÅÛÀÌ ¸®½ºÆ® ¹Ú½º ÄÁÆ®·ÑÀ» ±×¸®±â Àü¿¡ ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ¹è°æ»ö»ó°ú Àü°æ»ö ¹è°æ»ö µîÀ» Áú¹®ÇÑ´Ù. DefWindowProcÀº ½Ã½ºÅÛ¿¡ Á¤ÀÇµÈ ÄÁÆ®·Ñ »ö»óÀ» ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾ÊÀ¸¸é µðÆúÆ® »ö»óÀ¸·Î ¸®½ºÆ® ¹Ú½º°¡ ±×·ÁÁö¸ç ¸®½ºÆ® ¹Ú½ºÀÇ Ç׸ñÀº µðÆúÆ® Àü°æ»ö°ú ¹è°æ»öÀ¸·Î ±×·ÁÁø´Ù. ºÎ¸ð À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¸¦ Á÷Á¢ ó¸®Çϸé wParamÀ¸·Î Àü´ÞµÇ´Â DC¿¡ Àü°æ»ö°ú ¹è°æ»öÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç ¹è°æ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇÔÀ¸·Î½á ¸®½ºÆ® ¹Ú½ºÀÇ ¹è°æ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù.

¹è°æ ºê·¯½Ã¸¦ º¯°æÇÏ°íÀÚ ÇÒ °æ¿ì WM_CREATE µîÀÇ ¸Þ½ÃÁö¿¡¼­ ¹Ì¸® ºê·¯½Ã¸¦ ¸¸µé¾î ³õ°í ÀÌ ¸Þ½ÃÁö¿¡¼­ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇØ ÁÖ¸é µÈ´Ù. ½Ã½ºÅÛÀº ÀÌ ¸Þ½ÃÁö¿¡¼­ ¸®ÅÏÇÑ ºê·¯½Ã ÇÚµé·Î ¸®½ºÆ® ¹Ú½º ÄÁÆ®·ÑÀÇ ¹è°æÀ» ä»öÇÑ´Ù. ÀÌ ºê·¯½Ã´Â ½Ã½ºÅÛÀÌ ÀÚµ¿À¸·Î Æı«ÇØ ÁÖÁö ¾ÊÀ¸¹Ç·Î ´õ ÀÌ»ó ÇÊ¿ä°¡ ¾ø¾îÁ³À» ¶§(WM_DESTROY) ºÎ¸ð À©µµ¿ì°¡ Á÷Á¢ Æı«ÇØ ÁÖ¾î¾ß ÇÑ´Ù.

ÀÌ ¸Þ½ÃÁö´Â °°Àº ½º·¹µå ³»¿¡¼­¸¸ º¸³»Áø´Ù.

¸®ÅÏ

ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é ¹è°æ ºê·¯½ÃÀÇ ÇÚµéÀ» ¸®ÅÏÇØ ÁØ´Ù. ºê·¯½Ã Çڵ鰪Àº LRESULT·Î ij½ºÆÃµÈ ÈÄ ¸®ÅϵǾî¾ß ÇÑ´Ù. ºÎ¸ð À©µµ¿ì°¡ ´ëÈ­»óÀÚ¶ó¸é BOOLÇüÀ¸·Î ij½ºÆÃÇØ¾ß ÇÑ´Ù.

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ÃÊ·Ï»ö ¹è°æ¿¡ »¡°£»ö Àü°æ»öÀ¸·Î ¸®½ºÆ® ¹Ú½º¸¦ ±×¸°´Ù.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	int i;
	static HBRUSH hBrush;
	static HWND hList;
	char Items[][15]={"È«¸íº¸","ÃÖÁøö","¹ÚÁö¼º","È÷µùÅ©","ÀÌ¿îÀç"};

	switch(iMessage) {
	case WM_CREATE:
		hList=CreateWindow("listbox",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
		LBS_NOTIFY,10,10,150,200,hWnd,(HMENU)0,g_hInst,NULL);
		for (i=0;i<5;i++)
			SendMessage(hList,LB_ADDSTRING,0,(LPARAM)Items[i]);
		hBrush=CreateSolidBrush(RGB(0,255,0));
		return 0;
	case WM_CTLCOLORLISTBOX:
		if ((HWND)lParam==hList) {
			SetTextColor((HDC)wParam,RGB(255,0,0));
			SetBkColor((HDC)wParam,RGB(0,255,0));
			return (LRESULT)hBrush;
		}
		break;
	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_CREATE¿¡¼­ °ËÁ¤»öÀÇ ºê·¯½Ã¸¦ ¹Ì¸® ¸¸µé¾î µÎ¾úÀ¸¸ç WM_CTLCOLORLISTBOX¿¡¼­ ÀÌ ºê·¯½ÃÀÇ ÇÚµéÀ» ¸®ÅÏÇØ ÁÖ¾ú´Ù. ÇÑ À©µµ¿ì¿¡ ¸®½ºÆ® ¹Ú½º°¡ ¿©·¯ °³ ÀÖÀ» °æ¿ì lParamÀ¸·Î Àü´ÞµÈ Çڵ鰪À» ºñ±³ÇÏ¿© ¿øÇÏ´Â ÄÁÆ®·Ñ¿¡ ´ëÇؼ­¸¸ »ö»óÀ» º¯°æÇÒ ¼öµµ ÀÖÀ¸¸ç °¢ ¸®½ºÆ® ¹Ú½ºº°·Î ´Ù¸¥ »ö»óÀ» ÁÙ ¼öµµ ÀÖ´Ù. ÀÌ ¸Þ½ÃÁöÀÇ wParamÀ¸·Î DC ÇÚµéÀÌ Àü´ÞµÇ¹Ç·Î DCÀÇ Àü°æ»ö, ¹è°æ»ö, ¹è°æ ¸ðµå, Á¤·Ä »óÅ µîÀ» º¯°æÇÒ ¼öµµ ÀÖ´Ù. ºê·¯½Ã´Â WM_DESTROY¿¡¼­ ¹Ýµå½Ã Æı«ÇØ ÁÖ¾î¾ß ÇÑ´Ù.

Ç÷§Æû

95ÀÌ»ó

ÂüÁ¶

 


written by http://www.winapi.co.kr