ÇнÀ¸ñÇ¥    1

ÇнÀÁÖÁ¦    1

¿¹½À³»¿ë    1

½Ç½À¹æ¹ý    1

°ú    Á¦    1

Áß¿äÇÔ¼ö    1

Å×ÀÌºí ¸¸µé±â

ÇнÀ¸ñÇ¥

´ÙÀ̾î·Î±× ¹Ú½º¸¦ ÀÌ¿ëÇÏ¿© Çлý°ú ¼ºÀûÀ» ÀÔ·ÂÇÏ°í, Å×À̺íÀ» ¸¸µé¾î Ãâ·ÂÇÑ´Ù.

¾Æ·¡´Â ÇлýÀÇ ¹øÈ£, ±¹¾î, ¿µ¾î Á¡¼ö¸¦ ÀÔ·ÂÇÏ°í ÀÔ·Â ¹öÆ°À» ´©¸£¸é Å×ÀÌºí¿¡ ÇлýÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂµÇ°í ÇлýÀÇ ¹øÈ£¸¦ ÀÔ·ÂÇÏ°í ã±â¸¦ ´©¸£¸é ÇлýÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂµÈ´Ù.

ÇнÀÁÖÁ¦

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++;

              }

}

 

ÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇàÇϸé ÇнÀ¸ñÇ¥¿Í °°Àº ´ÙÀ̾î·Î±× âÀÌ ³ªÅ¸³­´Ù.

 

 

 

 

°ú    Á¦

 

Áß¿äÇÔ¼ö

óÀ½