| Àμö |
wParam : ¹öư ÄÁÆ®·ÑÀÇ DCÇÚµé. ÀÌ DC¿¡ Àü°æ»ö°ú ¹è°æ»ö µîÀ» ¼³Á¤ÇÑ´Ù. lParam : ¹öư ÄÁÆ®·ÑÀÇ ÇÚµé. ÇÑ À©µµ¿ì¿¡ ¹öưÀÌ ¿©·¯ °³ ÀÖÀ» °æ¿ì ÀÌ Çڵ鰪À¸·Î ¿øÇÏ´Â ¹öư¸¸ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. |
| ¼³¸í |
½Ã½ºÅÛÀÌ ¿À³Ê µå·Î¿ì ¹öưÀ» ±×¸®±â Àü¿¡ ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ¹è°æ»ö»ó°ú Àü°æ»ö ¹è°æ»ö µîÀ» Áú¹®ÇÑ´Ù. DefWindowProcÀº ½Ã½ºÅÛ¿¡ Á¤ÀÇµÈ ÄÁÆ®·Ñ »ö»óÀ» ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾ÊÀ¸¸é µðÆúÆ® »ö»óÀ¸·Î ¹öưÀÌ ±×·ÁÁø´Ù. ºÎ¸ð À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¸¦ Á÷Á¢ ó¸®Çϸé wParamÀ¸·Î Àü´ÞµÇ´Â DC¿¡ Àü°æ»ö°ú ¹è°æ»öÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç ¹è°æ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇÔÀ¸·Î½á ¹öưÀÇ ¹è°æ »ö»óÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ¹è°æ ºê·¯½Ã¸¦ º¯°æÇϰíÀÚ ÇÒ °æ¿ì WM_CREATE µîÀÇ ¸Þ½ÃÁö¿¡¼ ¹Ì¸® ºê·¯½Ã¸¦ ¸¸µé¾î ³õ°í ÀÌ ¸Þ½ÃÁö¿¡¼ ºê·¯½Ã ÇÚµéÀ» ¸®ÅÏÇØ ÁÖ¸é µÈ´Ù. ½Ã½ºÅÛÀº ÀÌ ¸Þ½ÃÁö¿¡¼ ¸®ÅÏÇÑ ºê·¯½Ã ÇÚµé·Î ¿À³Ê µå·Î¿ì ¹öưÀÇ ¹è°æÀ» ä»öÇÑ´Ù. ÀÌ ºê·¯½Ã´Â ½Ã½ºÅÛÀÌ ÀÚµ¿À¸·Î ÆÄ±«ÇØ ÁÖÁö ¾ÊÀ¸¹Ç·Î ´õ ÀÌ»ó Çʿ䰡 ¾ø¾îÁ³À» ¶§(WM_DESTROY) ºÎ¸ð À©µµ¿ì°¡ Á÷Á¢ ÆÄ±«ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¿À³Ê µå·Î¿ì ¹öư¿¡ ´ëÇØ¼¸¸ ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸ç BS_PUSHBUTTON, BS_DEFPUSHBUTTON, BS_PUSHLIKE ½ºÅ¸ÀÏÀÇ ¹öư¿¡ ´ëÇØ¼´Â ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇÁö ¾Ê´Â´Ù. ÀÌ ¸Þ½ÃÁö¸¦ ¹ÞÀ¸·Á¸é ¹öưÀº ¹Ýµå½Ã BS_OWNERDRAW ½ºÅ¸ÀÏÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ ¸Þ½ÃÁö´Â °°Àº ½º·¹µå ³»¿¡¼¸¸ º¸³»Áø´Ù. |
| ¸®ÅÏ |
ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é ¹è°æ ºê·¯½ÃÀÇ ÇÚµéÀ» ¸®ÅÏÇØ ÁØ´Ù. ºê·¯½Ã Çڵ鰪Àº LRESULT·Î ij½ºÆÃµÈ ÈÄ ¸®ÅϵǾî¾ß ÇÑ´Ù. ºÎ¸ð À©µµ¿ì°¡ ´ëÈ»óÀÚ¶ó¸é BOOLÇüÀ¸·Î ij½ºÆÃÇØ¾ß ÇÑ´Ù. |
| ¿¹Á¦ |
´ÙÀ½ ¿¹Á¦´Â Ǫ½¬ ¹öư°ú ¿À³Ê µå·Î¿ì ¹öưÀ» ¸¸µé°í ¿À³Ê µå·Î¿ì ¹öưÀÇ ¹è°æ »ö»ó°ú Àü°æ, ¹è°æ»öÀ» º¯°æÇÑ´Ù.
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
|