Å×ÀÌºí ¸¸µé±â |
||||||||||
ÇнÀ¸ñÇ¥ |
||||||||||
´ÙÀ̾î·Î±× ¹Ú½º¸¦ ÀÌ¿ëÇÏ¿© Çлý°ú ¼ºÀûÀ» ÀÔ·ÂÇÏ°í, Å×À̺íÀ» ¸¸µé¾î Ãâ·ÂÇÑ´Ù. ¾Æ·¡´Â ÇлýÀÇ ¹øÈ£, ±¹¾î, ¿µ¾î Á¡¼ö¸¦ ÀÔ·ÂÇÏ°í ÀÔ·Â ¹öÆ°À» ´©¸£¸é Å×ÀÌºí¿¡ ÇлýÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂµÇ°í ÇлýÀÇ ¹øÈ£¸¦ ÀÔ·ÂÇÏ°í ã±â¸¦ ´©¸£¸é ÇлýÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂµÈ´Ù.
|
||||||||||
ÇнÀÁÖÁ¦ |
||||||||||
1. ´ÙÀ̾î·Î±× ¹Ú½ºÀÇ ÀÔÃâ·Â 2. Çлý ¼ºÀûÀÇ ±¸Á¶Ã¼ ¼±¾ð°ú ¸Þ¸ð¸® ÇÒ´ç 3. Å×ÀÏºí ¸¸µé±â, Å×À̺í ÃʱâÈ, Å×ÀÌºí¿¡ µ¥ÀÌÅÍ ¾²±â 4. µ¥ÀÌÅÍÀÇ ªO±â |
||||||||||
¿¹½À³»¿ë |
||||||||||
´ÙÀ̾î·Î±× ¹Ú½ºÀÇ ÀÔÃâ·Â°ú ±¸Á¶Ã¼¿¡¼ ÇнÀÇÑ ³»¿ëÀ» °áÇÕÇÏ°í ºñÁê¾ó ÇÁ·Î±×·¥ÀÇ Å×À̺íÀ» ÀÌ¿ëÇÏ¿© ¼ºÀû ÇÁ·Î±×·¥À» ¸¸µé°í µ¥ÀÌÅ͸¦ ã´Â ±â´ÉÀ» ¸¸µé¾î º»´Ù. |
||||||||||
½Ç½À¹æ¹ý |
||||||||||
¸ñ Â÷ |
||||||||||
1. »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í À̸§Àº ¡°Table¡±·Î ÀÔ·ÂÇÑ´Ù.
¡°OK¡±¸¦ ´©¸£°í ¾Æ·¡¿¡¼ ¡°Dialog based¡±À» ¼±ÅÃÇÑ´Ù. ³ª¸ÓÁö´Â ±âº»°ªÀ¸·Î ¼±ÅÃÇϰųª ¡°Finish¡±À» ´©¸£¸é ÇÁ·ÎÁ§Æ®°¡ »ý¼ºµÈ´Ù.
¡°¸®¼Ò½ººä¡±¿¡ ´ÙÀ̾î·Î±× ¹Ú½º°¡ »ý¼ºµÈ °ÍÀ» º¼¼ö ÀÖ´Ù.
¡°Edit Control¡±À» ¼±ÅÃÇÏ¿© 6°³ÀÇ ÀÔ·ÂâÀ» ¸¸µç´Ù.
´ëÈ»óÀÚ ÆíÁý±â¿¡¼ ¡°Static Text¡±¸¦ ¼±ÅÃÇÏ¿© ¸¸µç ÈÄ¿¡ ¾Æ·¡¿Í °°ÀÌ ¡°¼Ó¼º¡± âÀÇ ¡°Caption¡± Ç׸ñ¿¡ ÇØ´ç À̸§À» ¾´´Ù.
¾Æ·¡ ±×¸²¿¡¼ Edit ControlÀ» ¼±ÅÃÇÏ¿© ¸¶¿ì½º ¿À¸¥ÂÊ Å°¸¦ ´·¯ ¡°Class Wizard¡±¸¦ ¼±ÅÃÇÑ´Ù.
¡°¹üÁÖ(T)¡±¸¦ ¡°Value¡±, ¡°º¯¼ö Çü½Ä(V)¡±Àº ¡°int¡±, ¡°º¯¼öÀ̸§(N)¡±Àº ¡°m_no¡±·Î ÇÑ´Ù.
³ª¸ÓÁö 5°³µµ ¾Æ·¡¿Í °°ÀÌ º¯¼ö¸¦ Ãß°¡ÇÑ´Ù. |
||||||||||
|
|
¹øÈ£ |
±¹¾î |
¿µ¾î |
|
|||||
|
ID |
IDC_EDIT1 |
IDC_EDIT2 |
IDC_EDIT3 |
|
|||||
|
º¯¼öÀ̸§ |
m_no |
m_kor |
m_eng |
|
|||||
|
ID |
IDC_EDIT4 |
IDC_EDIT5 |
IDC_EDIT6 |
|
|||||
|
º¯¼öÀ̸§ |
m_no1 |
m_kor1 |
m_eng1 |
|
|||||
¾Æ·¡ ´ëÈ»óÀÚ ÆíÁý±â¿¡¼ ¡°Button¡±À» ¼±ÅÃÇÏ¿© 2°³ÀÇ ¹öÆ°À» ¸¸µç´Ù. »ý¼ºµÈ ¹öÆ°ÀÇ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´·¯ ¡°¼Ó¼º¡±Ã¢¿¡¼
¡°Caption¡±À» ¡°ÀԷ¡±°ú ¡°Ã£±â¡±·Î ¼öÁ¤ÇÑ´Ù. ¡°ÀԷ¡±°¡ ¡°Ã£±â¡± ¹öÆ°À» ¸¶¿ì½º ¿ÞÂÊ Å°·Î ´õºí Å©¸¯Çϸé
¡°OnBnClickedButton1()¡±, ¡°OnBnClickedButton2()¡±ÀÇ ½ÇÇà ÇÔ¼ö°¡ ¸¸µé¾î Áø´Ù. ÀÌÁ¦ ÇÊ¿äÇÑ ±¸Á¶Ã¼¿Í º¯¼ö¸¦ ¼±¾ðÇÏ¿© µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í
Àоî¾ß ÇÕ´Ï´Ù. ¡°º¸±â1¡±ÀÇ ¡°TableDlg.h¡±¿¡ (1)Ç׸ñÀÇ ±¸Á¶Ã¼¸¦ Á÷Á¢
ÀÔ·ÂÇÏ°í, ±¸Á¶Ã¼ÀÇ Ãʱ⠹øÁö¸¦ ÀÔ·ÂÇϱâ À§ÇÑ Æ÷ÀÎÅ͸¦ (2) Ç׸ñÀ»
¾Æ·¡¿Í °°ÀÌ ¡°Add Member Variable¡±À» ¼±ÅÃÇÏ¿© ÀÔ·ÂÇÕ´Ï´Ù. |
||||||||||
|
||||||||||
µ¥ÀÌÅ͸¦ ÀÔ·ÂÇϰųª ã±â ÇÒ
¶§ ¼±ÅÃµÈ ÇлýÀÇ ¸Þ¸ð¸® ¹øÁö¿¡ À§Ä¡ÇÏ¿© µ¥ÀÌÅ͸¦ ÀÔ·ÂÇϰųª ÂüÁ¶¸¦ ÇÏ¿©¾ßÇÑ´Ù. ±×·¯¹Ç·Î µ¥ÀÌÅÍÀÇ
¹øÁö¼ö¸¦ ã±âÀ§ÇÑ ¡°Man* FindMan(int no)¡± ÇÔ¼ö¸¦ ¸¸µç´Ù. ÀÌ ÇÔ¼ö´Â ÇлýÀÇ ¹øÈ£¸¦ ÀÔ·Â º¯¼ö·Î ¹Þ¾Æ µ¥ÀÌÅÍÀÇ ÀúÀå ¹øÁö¸¦ Æ÷ÀÎÅÍ·Î ¹Ýȯ ÇÑ´Ù. Ŭ·¡½º¿¡¼ ¡°ÇÔ¼ö Ãß°¡¡±¸¦ ¼±ÅÃÇÑ´Ù. |
||||||||||
|
º¸±â1 TableDlg.h |
|
||||||||
|
// TableDlg.h :
header file #if
!defined(AFX_TABLEDLG_H__0A887F7C_4701_4AB5_8095_E38B3089862F__INCLUDED_) #define
AFX_TABLEDLG_H__0A887F7C_4701_4AB5_8095_E38B3089862F__INCLUDED_ #if _MSC_VER
> 1000 #pragma once #endif //
_MSC_VER > 1000 ///////////////////////////////////////////////////////////////////////////// // CTableDlg
dialog typedef
struct list Man; struct
list{ // (1)±¸Á¶Ã¼ÀÇ ¼±¾ð int
no; int
kor; int
eng; int
sum; float
ave; }; class CTableDlg
: public CDialog { // Construction public: Man *init; //
(2) ±¸Á¶Ã¼ÀÇ Ãʱ⠹øÁö¸¦ ÀÔ·ÂÇϱâ À§ÇØ ¼±¾ð Man* FindMan(int no); // (3) ÇлýÀÇ ¹øÈ£¸¦ ¹Þ¾Æ ÀúÀå ¹øÁöÀÇ Æ÷ÀÎÅ͸¦ ¹ÝȯÇÑ´Ù. CTableDlg(CWnd*
pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CTableDlg) enum
{ IDD = IDD_TABLE_DIALOG }; int m_no; int m_kor; int m_eng; int m_no1; int m_kor1; int m_eng1; //}}AFX_DATA //
ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CTableDlg) protected: virtual
void DoDataExchange(CDataExchange* pDX); //
DDX/DDV support //}}AFX_VIRTUAL //
Implementation protected: HICON
m_hIcon; //
Generated message map functions //{{AFX_MSG(CTableDlg) virtual
BOOL OnInitDialog(); afx_msg
void OnSysCommand(UINT nID, LPARAM lParam); afx_msg
void OnPaint(); afx_msg
HCURSOR OnQueryDragIcon(); afx_msg
void OnButton1(); afx_msg
void OnButton2(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft
Visual C++ will insert additional declarations immediately before the
previous line. #endif //
!defined(AFX_TABLEDLG_H__0A887F7C_4701_4AB5_8095_E38B3089862F__INCLUDED_) |
|
||||||||
|
||||||||||
|
º¸±â 2 TableDlg.cpp |
|
||||||||
|
// TableDlg.cpp : implementation file BOOL
CTableDlg::OnInitDialog() { CDialog::OnInitDialog(); //
Add "About..." menu item to system menu. //
IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX
& 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX
< 0xF000); CMenu*
pSysMenu = GetSystemMenu(FALSE); if
(pSysMenu != NULL) { CString
strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if
(!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,
IDM_ABOUTBOX, strAboutMenu); } } //
Set the icon for this dialog. The
framework does this automatically // when the application's main window is
not a dialog SetIcon(m_hIcon,
TRUE); //
Set big icon SetIcon(m_hIcon,
FALSE); //
Set small icon //
TODO: Add extra initialization here init = (Man *)malloc(sizeof(Man)*10); //(4) 10 ¸íÀǵ¥ÀÌŸ¸Þ¸ð¸®ÇÒ´ç Man *a; a=init; for(int
i=1;i<=10;i++) { //(5)
ÇлýÀǹøÈ£¸¦ÃʱâÈÇÑ´Ù. a->no
= i; a->kor=0;
a->eng=0; a->sum=0; a->ave=0; a++; } return
TRUE; // return TRUE unless you set the focus to a control } void
CTableDlg::OnButton1() //
"ÀÔ·Â" ¹öÆ°½ÇÇàÇÔ¼ö { //
(6) ÀԷµȹøÈ£ÀÇÇлýÀ»Ã£¾Æ±¹¾î, ¿µ¾îÁ¡¼ö¸¦ÀÔ·ÂÇÑ´Ù. Man *a; UpdateData(TRUE); a=FindMan(m_no); a->kor
= m_kor; a->eng
= m_eng; } void
CTableDlg::OnButton2() //
"ã±â" ¹öÆ°½ÇÇàÇÔ¼ö { //
(7) ÀԷµȹøÈ£ÀÇÇлýÀ»Ã£¾Æ±¹¾î, ¿µ¾îÁ¡¼ö¸¦È¸é¿¡Ãâ·ÂÇÑ´Ù. Man *a; UpdateData(TRUE); a=FindMan(m_no1); m_kor1=a->kor; m_eng1=a->eng; a->sum
= a->kor + a->eng; a->ave
= (float)a->sum/2.; UpdateData(FALSE); } Man*
CTableDlg::FindMan(int no) { // (8) ¸Å°³º¯¼öno ¿Í ÇлýÀÇ ¹øÈ£°¡ ÀÏÄ¡Çϸé ÇØ´ç ÇлýÀÇ Æ÷ÀÎÅ͸¦
¹ÝȯÇÏ°í ÇØ´ç ÇлýÀÌ ¾øÀ¸¸é NULLÀ» ¹ÝȯÇÑ´Ù. Man *a; a=init; for(int
i=0;i<10;i++) { if(a->no
== no) return
a; a++; } return
NULL; } |
|
||||||||
|
|
|
||||||||
ÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¸é ¾Æ·¡¿Í °°ÀÌ È¸éÀÌ ³ª¿À°í
¹øÈ£¿Í ¼ºÀûÀ» ÀÔ·ÂÇÑ ÈÄ¿¡ ÀÔ·Â ¹öÆ°À» ´©¸£¸é ÀԷµǰí ã±âÀÇ ¹øÈ£¿¡ ÇлýÀÇ ¹øÈ£¸¦ ÀÔ·Â ÈÄ¿¡ ¡°Ã£±â¡± ¹öÆ°À» ´©¸£¸é ÇØ´ç ÇлýÀÇ ¼ºÀûÀÌ Ãâ·Â
µÈ´Ù. ÀÌÁ¦ Å×À̺íÀ» ¸¸µé°í ¿©±â¼ ÇлýµéÀÇ ¼ºÀûÀ» Ãâ·ÂÇÑ´Ù. ¾Æ·¡¿¡¼ ¡°List Control¡±À» ¼±ÅÃÇÑ´Ù. ¾Æ·¡¿Í °°ÀÌ Å×À̺íÀ» ¸¸µé°í ¼Ó¼º â¿¡¼ ¡°View¡±¸¦ ¡°Report¡±·Î ¼öÁ¤ÇÏ°í ¡°Single selection¡±, ¡°Edit labels¡±¸¦ ¼±ÅÃÇÑ´Ù. Å×À̺íÀ» ¼±ÅÃÇÏ¿© ¿À¸¥ÂÊ ¸¶¿ì½º¸¦ Ŭ¸¯ÇÏ¿© ClassWizard¸¦ ¼±ÅÃÇÏ¿© º¯¼ö À̸§À» ¾Æ·¡¿Í °°ÀÌ ¡°m_ctrlList¡±·Î
Á¤ÀÇ ÇÑ´Ù. Å×À̺íÀº ¡°InitTabel¡±
ÇÔ¼ö¸¦ ¸¸µé¾î ¡°¹øÈ£¡±, ¡°±¹¾î¡±, ¡°¿µ¾î¡±, ¡°Çհ衱, ¡°Æò±Õ¡±À» ±â·ÏÇϱâ À§ÇÑ Ä÷³À» ÃʱâÈ ÇÑ´Ù. ±×¸®°í ¡°ListWrite¡± ÇÔ¼ö¸¦ ¸¸µé¾î ÇлýµéÀÇ ¼ºÀûÀ» Ç¥½ÃÇÑ´Ù. Ŭ·¡ºä¿¡¼ ÇÔ¼ö Ãß°¡¸¦ ¼±ÅÃÇÏ¿© Å×ÀÌºí¿¡ ¼ºÀûÀ» ³ª¿Çϱâ À§ÇØ 5°³ÀÇ Ä÷³À» Ãß°¡ÇÑ´Ù. ±×¸®°í ÀÌ ÇÔ¼ö¸¦ ´ÙÀ̾î·Î±× ¹Ú½º°¡ »ý±æ
¶§ ½ÇÇàµÇ´Â ¡°OnInitDialog()¡±¿¡ Ãß°¡ÇÑ´Ù. |
||||||||||
µ¥ÀÌÅ͸¦ Å×ÀÌºí¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù. ±×¸®°í ÀÌ ÇÔ¼ö°¡ ¡°ÀԷ¡± ¹öÆ°À» ´©¸£¸é ½ÇÇàÇÏ°Ô ÇÑ´Ù. |
||||||||||
|
BOOL CTableDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here init = (Man *)malloc(sizeof(Man)*10); //(4) 10 ¸íÀǵ¥ÀÌŸ¸Þ¸ð¸®ÇÒ´ç Man *a; a=init; for(int i=1;i<=10;i++) { //(5) ÇлýÀǹøÈ£¸¦ÃʱâÈÇÑ´Ù. a->no = i; a->kor=0; a->eng=0; a->sum=0; a->ave=0; a++; } InitTable(); //(10) Å×ÀÌºí¿¡ Ä÷³À» Ãß°¡ÇÏ¿© ÃʱâÈ ÇÑ´Ù. return TRUE; // return TRUE unless you set the focus to a control } void CTableDlg::OnButton1() // "ÀÔ·Â" ¹öÆ°½ÇÇàÇÔ¼ö { // (6) ÀԷµȹøÈ£ÀÇÇлýÀ»Ã£¾Æ±¹¾î, ¿µ¾îÁ¡¼ö¸¦ÀÔ·ÂÇÑ´Ù. Man *a;
UpdateData(TRUE); a=FindMan(m_no); a->kor = m_kor; a->eng = m_eng; a->sum = a->kor + a->eng; a->ave = (float)a->sum/2.; ListWrite(); } void CTableDlg::InitTable() { // Ä÷³¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÏ´Â ±¸Á¶Ã¼ LV_COLUMN lvcolumn; // ¼³Á¤ÇÒ Ç׸ñµéÀ» ¸í½ÃÇÔ lvcolumn.mask = LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH; // Ä÷³ Çì´õ¸¦ Áß¾Ó¿¡ Ãâ·ÂÇϵµ·Ï ÇÔ lvcolumn.fmt = LVCFMT_CENTER; for(int i = 0 ; i < 5 ; i++ ) { lvcolumn.iSubItem = i; switch(i) { case 0: // ù¹ø° Ä÷³ Á¤º¸ ¼³Á¤ lvcolumn.cx = 50; lvcolumn.pszText = "¹øÈ£"; break; case 1: // µÎ¹ø° Ä÷³ Á¤º¸ ¼³Á¤ lvcolumn.cx = 50; lvcolumn.pszText = "±¹¾î"; break; case 2: // ¼¼¹ø° Ä÷³ Á¤º¸ ¼³Á¤ lvcolumn.cx = 50; lvcolumn.pszText = "¿µ¾î"; break; case 3: // ³×¹ø° Ä÷³ Á¤º¸ ¼³Á¤ lvcolumn.cx = 50; lvcolumn.pszText = "ÇÕ°è"; break; case 4: // ´Ù¼¸¹ø° Ä÷³ Á¤º¸ ¼³Á¤ lvcolumn.cx = 50; lvcolumn.pszText = "Æò±Õ"; break; } m_ctrlList.InsertColumn(i, &lvcolumn); // Ä÷³ Ãß°¡ } } void CTableDlg::ListWrite() { m_ctrlList.DeleteAllItems( ); // ¸®½ºÆ®¿¡ ÀÖ´Â °ÍÀ» ¸ðµÎ Áö¿î´Ù. // ±âÁ¸ ÆÄÀÏÀ» ¿¾úÀ» ¶§ Å×À̺í ÀÛ¼º LV_ITEM lvitem; lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE; lvitem.iSubItem = 0; lvitem.iImage = 2; lvitem.stateMask = LVIS_STATEIMAGEMASK; lvitem.state = INDEXTOSTATEIMAGEMASK(1); lvitem.pszText = ""; int i; CString strIms; Man *a; a=init; for(i=0;i<10;i++) { lvitem.iItem = m_ctrlList.GetItemCount(); m_ctrlList.InsertItem(&lvitem); strIms.Empty(); strIms.Format("%d",a->no); m_ctrlList.SetItemText(lvitem.iItem, 0, strIms); strIms.Empty(); strIms.Format("%d",a->kor); m_ctrlList.SetItemText(lvitem.iItem, 1, strIms); strIms.Empty(); strIms.Format("%d",a->eng); m_ctrlList.SetItemText(lvitem.iItem, 2, strIms); strIms.Empty(); strIms.Format("%d",a->sum); m_ctrlList.SetItemText(lvitem.iItem, 3, strIms); strIms.Empty(); strIms.Format("%f",a->ave); m_ctrlList.SetItemText(lvitem.iItem, 4, strIms); a++; } } |
|
||||||||
ÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇàÇϸé ÇнÀ¸ñÇ¥¿Í °°Àº ´ÙÀ̾î·Î±× âÀÌ ³ªÅ¸³´Ù. |
||||||||||
|
||||||||||
|
||||||||||
|
||||||||||
|
||||||||||
°ú Á¦ |
||||||||||
|
||||||||||
Áß¿äÇÔ¼ö |
||||||||||