À̹ø¿¡ ¸¸µé¾î º¼ ¿¹Á¦´Â ´ëÈ»óÀÚ¸¦ ÅëÇØ »ç¿ëÀÚ¿¡°Ô ÇöÀç ¼³Á¤µÈ °ªÀ» º¸¿©ÁÖ°í ¶ÇÇÑ »ç¿ëÀÚ°¡ ´ëÈ»óÀÚ¸¦ ÅëÇØ °ªÀ» º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁÖ´Â ¿¹Á¦ÀÌ´Ù. ¾ÆÁÖ ÀüÇüÀûÀÎ ´ëÈ»óÀÚ ¿¹Á¦À̹ǷΠ¾Æ¿¹ Á¦ÀÛ ÀýÂ÷¸¦ ¿Ü¿öµÑ¸¸ÇÏ´Ù. ´ÙÀ½ ´Ü°è¸¦ µû¶ó ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. 1¸ÕÀú InfoDlg ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ApiStart.txt¸¦ º¹»çÇØ¿Â ÈÄ lpszClass¸¦ "InfoDlg"·Î ¼öÁ¤ÇÑ´Ù. 2¸ÕÀú ÀÌ ÇÁ·Î±×·¥¿¡¼ »ç¿ëÇÒ Àü¿ª º¯¼öµéÀ» ÆÄÀÏ ¼±µÎ¿¡ ¼±¾ðÇÑ´Ù. LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hInst; LPSTR lpszClass="InfoDlg"; int x; int y; char str[128]; ÁÂÇ¥¸¦ ±â¾ïÇÏ´Â °ª x,y¿Í ¹®ÀÚ¿ str µî ¼¼ °³ÀÇ Àü¿ªº¯¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù. Àü¿ª º¯¼ö´Â ÇÔ¼ö ³»ºÎ°¡ ¾Æ´Ï¸é ¾îµðµç ¼±¾ðÇصµ »ó°ü¾øÀ¸³ª ÀÌ ¿¹Á¦¿¡¼´Â WndProc°ú ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú¿¡¼ ÀÌ °ªµéÀ» ÂüÁ¶ÇϹǷΠ°¡±ÞÀûÀÌ¸é ¼Ò½ºÀÇ ¼±µÎ¿¡ ¼±¾ðÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½Àº WndProcÀ» ÀÛ¼ºÇÑ´Ù. ¼Ò½º¸¸ Àо¸é ¾î¶»°Ô µ¿ÀÛÇÏ´Â ¿¹Á¦ÀÎÁö ½±°Ô ÆÄ¾ÇµÉ °ÍÀÌ´Ù.
WM_CREATE¿¡¼ ÁÂÇ¥¿Í ¹®ÀÚ¿À» °¢°¢ (100,100) ±×¸®°í "String"À¸·Î ÃʱâÈÇÏ¿´´Ù. ±×¸®°í WM_PAINT¿¡¼ (x,y) ÁÂÇ¥¿¡ str ¹®ÀÚ¿À» Ãâ·ÂÇÑ´Ù. ¿©±â±îÁö ÀÛ¼ºÇÑ ÈÄ ÇÁ·Î±×·¥À» ½ÇÇàÇØ º¸ÀÚ. Á¤ÇØÁø À§Ä¡¿¡ ¹®ÀÚ¿À» Ãâ·ÂÇϱ⸸ ÇÒ »Ó º°´Ù¸¥ ±â´ÉÀ» °¡Áö°í ÀÖÁö´Â ¾Ê´Ù. ÀÌÁ¦ ´ëÈ»óÀÚ¸¦ Çϳª ¸¸µé¾î ¹®ÀÚ¿°ª°ú ÀÌ ¹®ÀÚ¿ÀÌ Ãâ·ÂµÉ ÁÂÇ¥¸¦ »ç¿ëÀÚ°¡ Á÷Á¢ º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇØ º¸ÀÚ. 3Insert/Resource/Dialog Ç׸ñÀ» ¼±ÅÃÇÏ¿© »ç¿ëÀڷκÎÅÍ °ªÀ» ÀԷ¹ÞÀ» ´ëÈ»óÀÚ¸¦ ¸¸µç´Ù. ¿ì¸®°¡ ÀԷ¹ްíÀÚ ÇÏ´Â °ªÀº ÁÂÇ¥°ª µÎ °³¿Í ¹®ÀÚ¿ ÇϳªÀ̹ǷΠÀÌ °æ¿ì´Â ¿¡µðÆ® ÄÁÆ®·ÑÀ» ¼¼ °³ ¹èÄ¡ÇÏ¸é µÈ´Ù. ÁÂÇ¥¸¦ ÀԷ¹ÞÀ» ¿¡µðÆ®´Â À§ÂÊ¿¡ µÎ °³ ¹èÄ¡ÇÏ°í ¹®ÀÚ¿À» ÀԷ¹ÞÀ» ¿¡µðÆ®´Â ¾Æ·¡ÂÊ¿¡ ¹èÄ¡ÇÑ ÈÄ ±æÀ̸¦ Á» ±æ°Ô ¸¸µé¾î ÁØ´Ù. ±×¸®°í °¢°¢ÀÇ ¿¡µðÆ® ÄÁÆ®·Ñ¿¡ IDC_X, IDC_Y, IDC_STRÀ̶ó´Â ID¸¦ ÁÖµµ·Ï ÇÑ´Ù. ¸®¼Ò½º ÆÄÀÏÀ» InfoDlg.rc·Î ÀúÀåÇÑ ÈÄ ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃŲ´Ù. 4»ç¿ëÀÚ°¡ ´ëÈ»óÀÚ¸¦ È£ÃâÇÒ ¼ö ÀÖµµ·Ï WndProc¿¡ ´ëÈ»óÀÚ¸¦ È£ÃâÇÏ´Â Äڵ带 »ðÀÔÇÑ´Ù. ¸Þ´º¸¦ ¼±ÅÃÇϰųª ´ÜÃàÅ°¸¦ ´©¸¦¶§ È£ÃâÇÏ´Â °ÍÀÌ ÀûÇÕÇÏ°ÚÁö¸¸ ÀÏ´Ü °¡Àå »ç¿ëÇϱ⠽¬¿î WM_LBUTTONDOWN ¸Þ½ÃÁö¸¦ »ç¿ëÇϵµ·Ï ÇÏÀÚ. WndProc¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇÑ´Ù. case WM_PAINT: hdc=BeginPaint(hWnd, &ps); TextOut(hdc,x,y,str,strlen(str)); EndPaint(hWnd, &ps); return 0; case WM_LBUTTONDOWN: if (DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1), hWnd,InfoDlgProc)==1) InvalidateRect(hWnd, NULL, TRUE); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } DialogBox ÇÔ¼ö·Î ´ëÈ»óÀÚ¸¦ È£ÃâÇÏ¿´À¸¸ç ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú¸íÀº InfoDlgProcÀ¸·Î ÁöÁ¤ÇÏ¿´´Ù. ¹°·Ð Àá½Ã ÈÄ¿¡ ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ´ëÈ»óÀÚ¸¦ ´Ü¼øÈ÷ È£ÃâÇϱ⸸ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ±× ¸®ÅÏ°ªÀ» »ìÆ캸°í 1ÀÌ ¸®ÅϵǾúÀ¸¸é À©µµ¿ì Àüü¸¦ ´Ù½Ã ±×¸®µµ·Ï ÇÏ¿´´Ù. 1ÀÌ ¸®ÅϵǾú´Ù´Â °ÍÀº »ç¿ëÀÚ°¡ °ªÀ» º¯°æÇÑ ÈÄ OK¹öÆ°À» ´·¶´Ù´Â ¶æÀ̹ǷΠº¯°æµÈ ÁÂÇ¥¿¡ º¯°æµÈ ¹®ÀÚ¿À» ´Ù½Ã ±×·Á ÁÖ¾î¾ß ÇÑ´Ù. 5¸¶Áö¸·À¸·Î ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇØ ÁØ´Ù. ÀÌ ÇÁ·ÎÁ§Æ®ÀÇ °¡Àå ÇÙ½ÉÀÌ µÇ´Â ºÎºÐÀÌ´Ù. ´Ü ÀÌ ÇÔ¼ö¸¦ WndProc¿¡¼ »ç¿ëÇÏ°í ÀÖÀ¸¹Ç·Î WndProc ÀÌÀü¿¡ Äڵ带 ÀÛ¼ºÇϰųª ¾Æ´Ï¸é ¿øÇü¼±¾ðÀÌ¶óµµ ¸ÕÀú ÇØ µÎ¾î¾ß ÇÒ °ÍÀÌ´Ù. #include "resource.h" BOOL CALLBACK InfoDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam) { switch(iMessage) { case WM_INITDIALOG: SetDlgItemText(hDlg,IDC_STR,str); SetDlgItemInt(hDlg,IDC_X,x,FALSE); SetDlgItemInt(hDlg,IDC_Y,y,FALSE); return TRUE; case WM_COMMAND: switch (wParam) { case IDOK: GetDlgItemText(hDlg,IDC_STR, str,128); x=GetDlgItemInt(hDlg,IDC_X,NULL,FALSE); y=GetDlgItemInt(hDlg,IDC_Y,NULL,FALSE); EndDialog(hDlg,1); return TRUE; case IDCANCEL: EndDialog(hDlg,0); return TRUE; } break; } return FALSE; } ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú¿¡¼´Â µÎ °³ÀÇ ¸Þ½ÃÁö¸¸À» ó¸®ÇÏ°í ÀÖ´Ù. ¿ì¼± ´ëÈ»óÀÚ°¡ óÀ½ ¸¸µé¾îÁú ¶§ È£ÃâµÇ´Â WM_INITDIALOG ¸Þ½ÃÁö¿¡¼´Â ¼¼ °³ÀÇ ÄÁÆ®·Ñ¿¡ °ªÀ» ´ëÀÔÇÏ¿© »ç¿ëÀÚ¿¡°Ô ÇöÀçÀÇ ÁÂÇ¥¿Í ¹®ÀÚ¿À» º¸¿©ÁÖµµ·Ï ÇÑ´Ù. ¸¸¾à ÀÌ Ãʱâȸ¦ »ý·«ÇØ ¹ö¸®¸é »ç¿ëÀÚµéÀº ÇöÀç ¼³Á¤µÈ ÁÂÇ¥¿Í ¹®ÀÚ¿°ªÀ» º¼ ¼ö ¾øÀ» °ÍÀÌ´Ù. WM_COMMAND ¸Þ½ÃÁö¿¡¼´Â µÎ °³ÀÇ ÄÁÆ®·Ñ·ÎºÎÅÍ Àü´ÞµÈ ÅëÁö ¸Þ½ÃÁö¸¦ ó¸®ÇÑ´Ù. IDOK(OK ¹öÆ°)°¡ Àü´ÞµÇ¾úÀ» °æ¿ì´Â Get* ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÄÁÆ®·Ñ·ÎºÎÅÍ °ªÀ» ÀÐÀº ÈÄ ÁÂÇ¥¿Í ¹®ÀÚ¿À» º¯°æÇÑ´Ù. ±×¸®°í EndDialog ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ´ëÈ»óÀÚ¸¦ Á¾·áÇ쵂 µÎ¹ø° Àμö·Î 1À» Àü´ÞÇÏ¿© ´ëÈ»óÀÚ¸¦ È£ÃâÇÑ DialogBox ÇÔ¼ö°¡ 1À» ¸®ÅÏÇϵµ·Ï ÇØ ÁØ´Ù. IDCANCEL(Cancel ¹öÆ°)ÀÌ Àü´ÞµÇ¾úÀ» °æ¿ì´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °ªÀ» ¹«½ÃÇÏ°í EndDialog ÇÔ¼ö¸¦ È£ÃâÇÏ¿© °ð¹Ù·Î ´ëÈ»óÀÚ¸¦ Á¾·áÇØ ¹ö¸°´Ù. ´Ü À̶§ Dialog ÇÔ¼ö·Î Àü´ÞµÇ´Â °ªÀº 0ÀÌ µÇµµ·Ï ÇÏ¿© ȸéÀ» ´Ù½Ã ±×¸®Áö ¾Êµµ·Ï ÇØ ÁØ´Ù. ±×·³ ÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇàÇØ º¸ÀÚ. óÀ½ ½ÇÇàÇϸé (100,100) ÁÂÇ¥¿¡ StringÀ̶ó´Â ¹®ÀÚ¿ÀÌ Ãâ·ÂµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´·¯ ¹®ÀÚ¿À̳ª ÁÂÇ¥¸¦ º¯°æÇÏ°í OK¹öÆ°À» ´©¸£¸é º¯°æµÈ ÁÂÇ¥¿¡ º¯°æµÈ ¹®ÀÚ¿ÀÌ Ãâ·ÂµÉ °ÍÀÌ´Ù. ´ëÈ»óÀÚ¿Í ºÎ¸ð À©µµ¿ì°£¿¡ °ªµéÀÌ ¾î¶»°Ô Àü´ÞµÇ´ÂÁö ±× °úÁ¤À» ¸Ó¸®¼ÓÀ¸·Î ±×·Áº¸°í Á¤¸®ÇØ º¸µµ·Ï ÇÏÀÚ. ÀÌ ¿¹Á¦¸¦ ¿ÏÀüÈ÷ ÀÌÇØÇß´Ù¸é ÇÁ·ÎÁ§Æ®¸¦ ¿ÏÀüÈ÷ Áö¿î ÈÄ Ã³À½ºÎÅÍ ´Ù½Ã ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ¾ÆÁÖ ÀüÇüÀûÀÎ À©µµ¿ìÁî ÇÁ·Î±×·¥À̹ǷΠ¿Ü¿öµÑ¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Ù. |