Àü °Á¿¡¼ ¼öÁ¤ÀÔ´Ï´Ù.
case WM_INITDIALOG:
¢º shidi.dwMask = SHIDIM_FLAGS;
¢º shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN |
¢º SHIDIF_SIZEDLGFULLSCREEN;
¢º shidi.hDlg = hDlg;
¢º SHInitDialog(&shidi);
return TRUE;
ÀÌ ºÎºÐÀÌ ÀÖ°í ¾ø°í°¡ ²Ï Â÷ÀÌ°¡ ³ª´Â±º¿ä. ´ÙÀ̾ó·Î±×¸¦ Àüü ȸéÀ¸·Î ÇÏ·Á¸é ÀÌ ºÎºÐÀÌ ²À ÇÊ¿äÇÕ´Ï´Ù. ÀÌ ºÎºÐÀ» ¾ø¾Ö°í ½ÇÇàÇØ º¸½Ã°í, ´Ù½Ã »ì¸®°í ½ÇÇàÇØ º¸¼¼¿ä. ´ÙÀ̾ó·Î±× Å©±â¸¦ ÁÙÀÌ°í ¾ø¾Ö°í ½ÇÇà½ÃÄ×´õ´Ï °á°ú°¡ ´Þ¸® ³ª¿Í¼ ±ô¦... ³ÖÀ¸´Ï Á¦´ë·Î µÇ´Â±º¿ä. ¾îÁ¦´Â ¿Ö ¶È°°ÀÌ ³ª¿ÔÁö? ÀÌ»óÇÏ´Ù... ¹º°¡ ½Ç¼ö¸¦...
À̹ø °ÀÇ¿¡¼´Â ´ÙÀ̾ó·Î±× ÄÁÆ®·ÑÀ» ´Ù·ç¾î º¾´Ï´Ù.
1. ÀÌÀü °ÀÇ¿¡¼ ¸¸µé¾ú´ø Exam16À» ¿µµ·Ï ÇÕ´Ï´Ù.(¿©´Â ¹æ¹ý ¿¹Àü °Á ÂüÁ¶. Àß Ã£¾Æº¸¼¼¿ä.)
2. ¸®¼Ò½º ºä·Î À̵¿Çؼ IDD_MYDLG ÀÇ ´ÙÀ̾ó·Î±×¸¦ ¿µµ·Ï ÇÕ´Ï´Ù.
3. À§ ±×¸² 1¹ø°ú °°ÀÌ ²Ù¹Ìµµ·Ï ÇÕ´Ï´Ù.
¿À¸¥ÂÊÀÇ ¡°¿ä³ð¡±À» ÄÁÆ®·Ñ µµ±¸ »óÀÚ¶ó°í ÇÕ´Ï´Ù. Ȥ½Ã ¿ä³ðÀÌ ³ªÅ¸³ªÁö ¾ÊÀ¸¼Ì°Å³ª ½Ç¼ö·Î ´ÝÀ¸½Å ºÐÀº À§ÂÊÀÇ ¸Þ´º ¹Ù·Î ¹ØÀÇ Åø¹Ù ¿À¸¥ÂÊ ºó ¿µ¿ª¿¡ Ä¿¼¸¦ ¿Ã¸®½Ã°í ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£¸é »ç¿ëÇÒ ¼ö ÀÖ´Â Åø¹Ù ¸ñ·ÏÀÌ Æ˾÷ ¸Þ´º·Î ³ªÅ¸³³´Ï´Ù. À̶§ Controls Ç׸ñÀ» ¼±ÅÃÇÏ¿© ÁֽʽÿÀ.
¨ç,¨è,¨é ¹øÀº (1) ¹ø ÄÁÆ®·Ñ Static Text¸¦ ¼±ÅÃÇÏ°í ´ÙÀ̾ó·Î±× â¿¡¼ ¸¶¿ì½º¸¦ ´©¸¥ ´ÙÀ½ ¿òÁ÷À̽øé Static À¸·Î Ç¥½ÃµË´Ï´Ù. À̳ðÀ» ´õºíŬ¸¯ ÇÏ¿© Text Properties âÀÌ ¶ß¸é ID ´Â ±×³É µÎ½Ã°í (IDC_STATIC) ĸ¼Ç¸¸ ±×¸²°ú °°ÀÌ ¹Ù²Ù¾î¼ À§ ±×¸²Ã³·³ À§Ä¡½ÃÄÑ ÁֽʽÿÀ.
¨ê,¨ë,¨ì ¹øÀº (2) ¹ø ÄÁÆ®·Ñ Edit Box¸¦ ¼±ÅÃÇϽðí À§ ±×¸²Ã³·³ À§Ä¡ ½ÃŲ ´ÙÀ½ °¢°¢ÀÇ Edit Properties¸¦ ¶ç¿ö¼(°¢ ÄÁÆ®·ÑÀ» ´õºí Ŭ¸¯) ¨ê¹øÀº ID¸¦ IDC_E_NAME À¸·Î, ¨ë ¹øÀº IDC_E_TEL ·Î, ¨ì ¹øÀº IDC_E_ADDR ·Î ¹Ù²Ù¾î ÁֽʽÿÀ. ID ´Â ¸ðµÎ ´ë¹®ÀÚ·Î ÇØ¾ß µÇ´Â °Í ¾Æ½ÃÁÒ? ±×¸®°í ¸¶Áö¸· ¨ì ¹ø Properties ÀÇ Styles ÅÇÀ¸·Î À̵¿Çؼ Auto HScroll Ç׸ñÀº üũ¸¦ Ç®¾î Áֽðí Multi Line Ç׸ñ°ú Vertical Scroll Ç׸ñ¸¸ üũ Ç¥½Ã¸¦ ÇØ ÁÖ¼¼¿ä. ÁÖ¼Ò¸¦ ¿©·¯ ÁÙ·Î ÀԷ¹ޱâ À§ÇؼÀÔ´Ï´Ù.
4. ´Ù½Ã Ŭ·¡½º ºä·Î ¿Í¼ WinMainÀ» ´õºíŬ¸¯ ÇÑ ´ÙÀ½ WinMain À§¿¡ Àü¿ª º¯¼ö ¼±¾ð ¿µ¿ª ¿¡ ¾Æ·¡¿Í °°ÀÌ Àü¿ª º¯¼ö¸¦ Ãß°¡ÇÕ´Ï´Ù. ÀÌ º¯¼ö¿¡ ÀԷ°ªÀ» ÀúÀåÇÕ´Ï´Ù.
// Global Variables:
HINSTANCE g_hInst;
HWND g_hwndCB;
¢º TCHAR g_szName[20] = LÀ̸§ÀÔ·Â;
¢º TCHAR g_szTel [20] = LÀüÈÀÔ·Â;
¢º TCHAR g_szAddr[100] = LÁÖ¼ÒÀÔ·Â;
5. ¹Ù·Î ¹ØÀÇ ÇÔ¼öÀÇ ÇÁ·ÎÅä ŸÀÔ ¼±¾ð ¿µ¿ª¿¡ ¾Æ·¡¿Í °°ÀÌ 2°³ÀÇ ÇÔ¼ö¸¦ Ãß°¡ÇÏ¿© ÁÝ´Ï´Ù. À̵é ÇÔ¼öµéÀ» ÇÁ·Î±×·¥ÀÇ ¹Ø¿¡¼ ÀÛ¼ºÇϱâ À§ÇؼÀÔ´Ï´Ù.
// Forward declarations of functions included in this code module:
......
LRESULT CALLBACK MyDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
¢ºRECT MyTextOut( HDC hdc, int x, int y, TCHAR* pBuf );
¢ºvoid DispInfo( HDC hdc );
6. MyTextOut ÇÔ¼ö¸¦ ÀÌÀü °ÀÇ¿¡¼ º¹»çÇؼ ÇÁ·Î±×·¥ÀÇ Á¦ÀÏ ÇÏ´Ü¿¡ ºÙ¿©³Ö±â ÇÕ´Ï´Ù.
7. DispInfo ÇÔ¼ö¸¦ ÇÁ·Î±×·¥ÀÇ Á¦ÀÏ ÇÏ´Ü¿¡ ¾Æ·¡¿Í °°ÀÌ Ãß°¡ÇÕ´Ï´Ù. ù À©µµ¿ì ȸ鿡 Á¤º¸¸¦ Ç¥½ÃÇϱâ À§ÇؼÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö°¡ È£ÃâµÇ¸é ÀÔ·ÂµÈ Á¤º¸°¡ ȸ鿡 Ç¥½ÃµË´Ï´Ù.
¢ºvoid DispInfo( HDC hdc )
¢º{
¢º TCHAR szBuf[MAX_LOADSTRING];
¢º
¢º swprintf(szBuf, LÀ̸§ : %s, g_szName );
¢º MyTextOut( hdc, 20, 20, szBuf );
¢º swprintf(szBuf, LÀüÈ : %s, g_szTel );
¢º MyTextOut( hdc, 20, 40, szBuf );
¢º swprintf(szBuf, LÁÖ¼Ò : %s, g_szAddr );
¢º MyTextOut( hdc, 20, 60, szBuf );
¢º}
8. ¾Æ·¡ ºÎºÐ¿¡ ÀÖ´Â ÇÔ¼ö MyDlg ÀÇ ÃʱâÈ ¿µ¿ª(WM_INITDIALOG ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â ºÎºÐ)¿¡ ¾Æ·¡¿Í °°ÀÌ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. ÀÌ °ÍÀº ¿ø·¡ º¯¼ö¿¡ µé¾îÀÖ´Â ³»¿ëÀ» ´ÙÀ̾ó·Î±×ÀÇ ÀÔ·Ââ¿¡ Ç¥½ÃÇÏ´Â °ÍÀÔ´Ï´Ù.
case WM_INITDIALOG:
......
SHInitDialog(&shidi);
¢º SetDlgItemText( hDlg, IDC_E_NAME, g_szName );
¢º SetDlgItemText( hDlg, IDC_E_TEL, g_szTel );
¢º SetDlgItemText( hDlg, IDC_E_ADDR, g_szAddr );
return TRUE;
SetDlgItemText ÇÔ¼ö´Â ´ÙÀ̾ó·Î±×ÀÇ °¢°¢ÀÇ ÄÁÆ®·Ñ¿¡°Ô °ªÀ» ÀÔ·ÂÇϱâ À§ÇÑ ÇÔ¼öÀÔ´Ï´Ù. Çü½ÄÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
SetDlgItemText( ´ÙÀ̾ó·Î±× À©µµ¿ì ÇÚµé, ÄÁÆ®·Ñ ID, Ãâ·Â°ª ¶Ç´Â º¯¼ö );
´ÙÀ̾ó·Î±× À©µµ¿ì ÇÚµéÀº MyDlg ÇÔ¼öÀÇ Ã¹ ¹ø° Àμö·Î¼ OS ·ÎºÎÅÍ Àü´Þ ¹Þ½À´Ï´Ù.
ÄÁÆ®·Ñ ID ´Â ´ÙÀ̾ó·Î±× âÀ» ±×¸± ¶§ (À§ 3¹ø) ÀÔ·ÂÇß´ø ID¸¦ ¸»ÇÕ´Ï´Ù.
Ãâ·Â°ªÀº ÇöÀç À§¿¡ ¼±¾ðµÈ Àü¿ª º¯¼öµéÀ» ¾²°í ÀÖ½À´Ï´Ù.
9. ¾Æ·¡ ºÎºÐ ÇÔ¼ö MyDlg ÀÇ ok ¹öÆ°À» °Ë»çÇÏ´Â ºÎºÐ(WM_COMMAND ¸Þ½ÃÁö ó¸®ÇÏ´Â ºÎºÐ Áß IDOK °ªÀ» °Ë»çÇÏ´Â °÷)¿¡ ¾Æ·¡¿Í °°ÀÌ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. ÀÌ °ÍÀº ÀÔ·ÂµÈ °ªÀ» OK ¹öÆ°ÀÌ ´¸®¸é Àü¿ª º¯¼ö·Î °¡Áö°í ¿À°í À©µµ¿ì¸¦ Á¾·áÇϵµ·Ï ÇÕ´Ï´Ù.
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
GetDlgItemText( hDlg, IDC_E_NAME, g_szName, 19 );
GetDlgItemText( hDlg, IDC_E_TEL, g_szTel, 19 );
GetDlgItemText( hDlg, IDC_E_ADDR, g_szAddr, 99 );
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
GetDlgItemText ÇÔ¼ö´Â SetDlgItemText ÇÔ¼ö¿Í´Â ¹Ý´ë·Î ÄÁÆ®·Ñ¿¡¼ º¯¼ö·Î °ªÀ» °¡Áö°í ¿À´Â ÇÔ¼öÀÔ´Ï´Ù. Çü½ÄÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
GetDlgItemText( ´ÙÀ̾ó·Î±× ÇÚµé, ÄÁÆ®·ÑID, ¹®ÀÚ¿ º¯¼ö, ¹ÞÀ» ¼ö ÀÖ´Â ÃÖ´ë ±æÀÌ)
¹ÞÀ» ¼ö ÀÖ´Â ÃÖ´ë ±æÀÌ´Â ¹®ÀÚ¿·Î ¼±¾ðµÈ º¯¼ö(»ç½ÇÀº ¹è¿)ÀÇ ¼±¾ðµÈ Å©±â º¸´Ù 1 ÀÛ°Ô ÇØÁÝ´Ï´Ù. ¹®ÀÚ¿ÀÇ ³¡À» ³ªÅ¸³»´Â NULL °ª ¶§¹®ÀÔ´Ï´Ù. (´Ù¸¥ C ¾ð¾î Ã¥ ÂüÁ¶)
10. WndProc ÇÔ¼ö·Î °¡¼ ´ÙÀ̾ó·Î±×¸¦ È£ÃâÇÏ´Â ºÎºÐ¿¡ ¾Æ·¡¿Í °°ÀÌ Ãß°¡Çϵµ·Ï ÇÕ´Ï´Ù. ÀÔ·ÂµÈ Á¤º¸¸¦ ȸ鿡 Ç¥½ÃÇϱâ À§ÇؼÀÔ´Ï´Ù.
case IDM_VIEW_MYDLG:
DialogBox(g_hInst, (LPCTSTR)IDD_MYDLG, hWnd, (DLGPROC)MyDlg);
¢º hdc = GetDC( hWnd );
¢º DispInfo( hdc );
¢º ReleaseDC( hWnd, hdc );
break;
11. WM_PAINT ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â °÷¿¡ ¾Æ·¡¿Í °°ÀÌ DispInfo ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï Ãß°¡ÇØ ÁÝ´Ï´Ù.
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
¢º DispInfo( hdc );
EndPaint(hWnd, &ps);
break;
12. ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸¼¼¿ä. À§ ±×¸²Ã³·³ µÇ³ª¿ä?
|