WM_CTLCOLORBTN

Àμö

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

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

¼³¸í

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

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

¿À³Ê µå·Î¿ì ¹öÆ°¿¡ ´ëÇؼ­¸¸ ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸ç BS_PUSHBUTTON, BS_DEFPUSHBUTTON, BS_PUSHLIKE ½ºÅ¸ÀÏÀÇ ¹öÆ°¿¡ ´ëÇؼ­´Â ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇÁö ¾Ê´Â´Ù. ÀÌ ¸Þ½ÃÁö¸¦ ¹ÞÀ¸·Á¸é ¹öÆ°Àº ¹Ýµå½Ã BS_OWNERDRAW ½ºÅ¸ÀÏÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.

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

¸®ÅÏ

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

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â Ǫ½¬ ¹öÆ°°ú ¿À³Ê µå·Î¿ì ¹öÆ°À» ¸¸µé°í ¿À³Ê µå·Î¿ì ¹öÆ°ÀÇ ¹è°æ »ö»ó°ú Àü°æ, ¹è°æ»öÀ» º¯°æÇÑ´Ù.

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