Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ ¼ºÀû°ü¸® Å×ÀÌºí ¸¸µé±â |
||||||||||
ÇнÀ¸ñÇ¥ |
||||||||||
±¸Á¶Ã¼¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» ÇßÀ» ¶§ Ç×»ó Å×ÀÌºí¿¡ 10¸íÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂµÇ¾ú´Ù. Çлý¼ö°¡ °¡º¯ ÀÏ
¶§ ¸Þ¸ð¸®¸¦ °ü¸®ÇϱⰡ ºÒÆí ÇÏ¿´´Ù. ÀÌ´Â µ¥ÀÌÅ͸¦ Ŭ·¡½º¸¦ Á¤ÀÇÇÏ¿© »ç¿ëÇϸé È¿À²ÀûÀ¸·Î ÇÁ·Î±×·¥ ÇÒ ¼ö
ÀÖ´Ù. ´ÙÀ̾î·Î±× ¹Ú½º¿¡¼ Çлý°ú ¼ºÀûÀ» ÀÔ·ÂÇÏ°í, Å×À̺íÀ» ¸¸µé¾î Ãâ·ÂÇÑ´Ù. ÇлýÀÇ µ¥ÀÌÅʹ Ŭ·¡½º¸¦ Á¤ÀÇ Çؼ µ¥ÀÌÅ͸¦ °ü¸®ÇÑ´Ù. ¾Æ·¡´Â ÇлýÀÇ ¹øÈ£, ±¹¾î, ¿µ¾î Á¡¼ö¸¦ ÀÔ·ÂÇÏ°í ÀÔ·Â ¹öÆ°À» ´©¸£¸é Å×ÀÌºí¿¡ ÇлýÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂµÇ°í ÇлýÀÇ ¹øÈ£¸¦ ÀÔ·ÂÇÏ°í ã±â¸¦ ´©¸£¸é ÇлýÀÇ µ¥ÀÌÅÍ°¡ Ãâ·ÂµÈ´Ù.
|
||||||||||
ÇнÀÁÖÁ¦ |
||||||||||
1. ´ÙÀ̾î·Î±× ¹Ú½ºÀÇ ÀÔÃâ·Â 2. Çлý ¼ºÀûÀÇ Data Ŭ·¡½º Á¤ÀÇ 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()¡±ÀÇ ½ÇÇà ÇÔ¼ö°¡ ¸¸µé¾î Áø´Ù. |
||||||||||
|
||||||||||
¾Æ·¡ ±×¸²°ú °°ÀÌ »õ·Î¿î Ŭ·¡½º¸¦ ¸¸µç´Ù. ¾Æ·¡ ±×¸²°ú °°ÀÌ µ¥ÀÌÅÍ ÀúÀåÀ» À§ÇÑ ¡°CData¡± Ŭ·¡½º¸¦ ¸¸µç´Ù. ±×¸®°í Base class ¡°CObeject¡±·Î ÇؾßÇϳª ¿©±â¿¡´Â ¼±ÅÃÇ×ÀÌ ¾øÀ¸¹Ç·Î ÀÓÀÇ·Î ¾Æ¹«°ÍÀ̳ª ¼±ÅÃÀ» ÇÑ
ÈÄ¿¡ ³ªÁß¿¡ ¼öÁ¤À» Çϵµ·Ï ÇÑ´Ù. Ŭ·¡½º°¡ »ý¼ºµÈ ÈÄ¿¡ ¡°Data.h¡±¸¦ ¿¾î¼ ¡°class CData : public
CDataPathProperty¡±¿¡¼ ¡°class CData : public CObject¡±·Î
¼öÁ¤ÇÑ´Ù. ¸¦ ¼±ÅÃÇÏ¿© int ÇüÅ·Πno, kor, eng, sumÀ» ¼±¾ðÇÏ°í float·Î ave¸¦ ¼±¾ðÇÑ´Ù. CData Ŭ·¡½º¿¡ ÇÔ¼ö¸¦ Ãß°¡ÇØ¾ß Çϴµ¥ ÀÌ´Â Á÷Á¢ ¼ÕÀ¸·Î Ãß°¡ ÇÏ´Â °ÍÀ¸·Î ÇÑ´Ù. |
||||||||||
|
|
|
||||||||
|
#if
!defined(AFX_DATA_H__752B62B0_58FE_44DA_9A0B_8098639D3772__INCLUDED_) #define
AFX_DATA_H__752B62B0_58FE_44DA_9A0B_8098639D3772__INCLUDED_ #if _MSC_VER >
1000 #pragma once #endif //
_MSC_VER > 1000 // Data.h :
header file // ///////////////////////////////////////////////////////////////////////////// // CData command
target class
CData : public CObject //(1)
Base Class "CDataPathProperty"¸¦
¹Ù²Û´Ù. { // Attributes public: // Operations public: CData(); CData(CData& data); //(1)
¼±¾ð Ãß°¡ CData& operator=(CData& data); //(2) ¼±¾ð Ãß°¡ virtual
~CData(); // Overrides public: //CData(CData&
data); float
ave; int
sum; int
eng; int
kor; int
no; //
ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CData) //}}AFX_VIRTUAL //
Generated message map functions //{{AFX_MSG(CData) //
NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG // Implementation protected: }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft
Visual C++ will insert additional declarations immediately before the
previous line. #endif //
!defined(AFX_DATA_H__752B62B0_58FE_44DA_9A0B_8098639D3772__INCLUDED_) |
|
||||||||
|
||||||||||
|
|
|
||||||||
|
// Data.cpp :
implementation file // #include
"stdafx.h" #include
"TableClass.h" #include
"Data.h" #ifdef _DEBUG #define new
DEBUG_NEW #undef THIS_FILE static char
THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CData CData::CData() { } CData::CData(CData
&data) { no
= data.no; kor
= data.kor; eng
= data.eng; sum
= data.kor + data.eng; ave
= (float)sum/2.; } CData&
CData::operator =(CData &data) { if
(this == &data) return *this; no
= data.no; kor
= data.kor; eng
= data.eng; sum
= data.kor + data.eng; ave
= (float)sum/2.; return
*this; } CData::~CData() { } // Do not edit
the following lines, which are needed by ClassWizard. #if 0 BEGIN_MESSAGE_MAP(CData,
CDataPathProperty) //{{AFX_MSG_MAP(CData) //}}AFX_MSG_MAP END_MESSAGE_MAP() #endif // 0 ///////////////////////////////////////////////////////////////////////////// // CData member
functions |
|
||||||||
|
µ¥ÀÌÅ͸¦ Ãß°¡ÇÏ·Á¸é ¾Æ·¡¿Í °°ÀÌ Å¬·¡½º¸¦ Ãß°¡ÇÏ¸é µÈ´Ù. |
|
||||||||
|
void
CTableClassDlg::OnButton1() { CData
pData; UpdateData(TRUE); pData.no
= m_no; pData.kor
= m_kor; pData.eng
= m_eng; m_listData.AddTail(pData); } |
|
||||||||
|
||||||||||
|
µ¥ÀÌÅÍ°¡ ÀúÀåµÈ Ŭ·¡½ºÀÇ Ã³À½ºÎÅÍ °Ë»öÇÏ¿© ÀÔ·Â ¹øÈ£¿Í
ÀÏÄ¡Çϸé Ŭ·¡½º¸¦ ¸®ÅÏÇÑ´Ù. |
|
||||||||
|
CData
CTableClassDlg::FindMan(int no) { CData
pData; POSITION
pos,posL; for(pos=m_listData.GetHeadPosition(); pos != NULL;) { pData
= m_listData.GetNext(pos); if(pData.no
== no) return
pData; } pData.no
= 0; return
pData; } |
|
||||||||
½ÇÇàÇÏ¸é ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÏ°í ã±â¸¦ ÇÒ ¼ö ÀÖ´Ù. |
||||||||||
ÀÌÁ¦ Å×À̺íÀ» ¸¸µé¾î Àüü µ¥ÀÌÅ͸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À»
¸¸µéÀÚ. ¾Æ·¡¿Í °°ÀÌ ¡°List
Control¡±À» ¼±ÅÃÇÏ¿© Properties¿¡¼ ¾Æ·¡¿Í °°ÀÌ ¼±ÅÃÇÑ´Ù. |
||||||||||
Å×À̺íÀ» ¼±ÅÃÇÏ¿© ¿À¸¥ÂÊ ¸¶¿ì½º¸¦ Ŭ¸¯ÇÏ¿© ClassWizard¸¦ ¼±ÅÃÇÏ¿© º¯¼ö À̸§À» ¾Æ·¡¿Í °°ÀÌ ¡°m_ctrlList¡±·Î
Á¤ÀÇ ÇÑ´Ù. Å×À̺íÀº ¡°InitTabel¡±
ÇÔ¼ö¸¦ ¸¸µé¾î ¡°¹øÈ£¡±, ¡°±¹¾î¡±, ¡°¿µ¾î¡±, ¡°Çհ衱, ¡°Æò±Õ¡±À» ±â·ÏÇϱâ À§ÇÑ Ä÷³À» ÃʱâÈ ÇÑ´Ù. ±×¸®°í ¡°ListWrite¡± ÇÔ¼ö¸¦ ¸¸µé¾î ÇлýµéÀÇ ¼ºÀûÀ» Ç¥½ÃÇÑ´Ù. Ŭ·¡ºä¿¡¼ ÇÔ¼ö Ãß°¡¸¦ ¼±ÅÃÇÏ¿© Å×ÀÌºí¿¡ ¼ºÀûÀ» ³ª¿Çϱâ À§ÇØ 5°³ÀÇ Ä÷³À» Ãß°¡ÇÑ´Ù. ±×¸®°í ÀÌ ÇÔ¼ö¸¦ ´ÙÀ̾î·Î±× ¹Ú½º°¡ »ý±æ
¶§ ½ÇÇàµÇ´Â ¡°OnInitDialog()¡±¿¡ Ãß°¡ÇÑ´Ù. |
||||||||||
µ¥ÀÌÅ͸¦ Å×ÀÌºí¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù. ±×¸®°í ÀÌ ÇÔ¼ö°¡ ¡°ÀԷ¡± ¹öÆ°À» ´©¸£¸é ½ÇÇàÇÏ°Ô ÇÑ´Ù. |
||||||||||
|
|
|
||||||||
|
//
TableClassDlg.h : header file // #if
!defined(AFX_TABLECLASSDLG_H__0412ECCC_9AE5_41EC_A207_1C55687CA6EC__INCLUDED_) #define
AFX_TABLECLASSDLG_H__0412ECCC_9AE5_41EC_A207_1C55687CA6EC__INCLUDED_ #if _MSC_VER >
1000 #pragma once #endif //
_MSC_VER > 1000 ///////////////////////////////////////////////////////////////////////////// // CTableClassDlg
dialog #include
"Data.h" //
(1) Data¸¦ À§ÇÑ ÆÄÀÏ Ãß°¡ #include
"afxtempl.h" //
(1) Data¸¦ À§ÇÑ ÆÄÀÏ Ãß°¡ class
CTableClassDlg : public CDialog { // Construction public: void
ListWrite(); void
InitTable(); CData
FindMan(int no); CList <CData, CData&> m_listData; // µ¥ÀÌÅÍ ÀúÀåÀ» À§ÇÑ ¼±¾ð CTableClassDlg(CWnd*
pParent = NULL); //
standard constructor // Dialog Data //{{AFX_DATA(CTableClassDlg) enum
{ IDD = IDD_TABLECLASS_DIALOG }; CListCtrl m_ctrlList; 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(CTableClassDlg) protected: virtual
void DoDataExchange(CDataExchange* pDX); //
DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON
m_hIcon; //
Generated message map functions //{{AFX_MSG(CTableClassDlg) 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_TABLECLASSDLG_H__0412ECCC_9AE5_41EC_A207_1C55687CA6EC__INCLUDED_) |
|
||||||||
|
|
|
||||||||
|
BOOL
CTableClassDlg::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 InitTable(); return
TRUE; // return TRUE unless you set the focus to a control } void
CTableClassDlg::OnButton1() { CData
pData; UpdateData(TRUE); pData.no
= m_no; pData.kor
= m_kor; pData.eng
= m_eng; m_listData.AddTail(pData); ListWrite(); } void
CTableClassDlg::OnButton2() { CData
pData,pData1; UpdateData(TRUE); pData
= FindMan((int)m_no1); m_kor1
= pData.kor; m_eng1
= pData.eng; UpdateData(FALSE); } CData
CTableClassDlg::FindMan(int no) { CData
pData; POSITION
pos,posL; for(pos=m_listData.GetHeadPosition();
pos != NULL;) { pData
= m_listData.GetNext(pos); if(pData.no
== no) return
pData; } pData.no
= 0; return
pData; } void
CTableClassDlg::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
CTableClassDlg::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
= ""; CData
pData; POSITION
pos,posL; CString
strIms; for(pos=m_listData.GetHeadPosition();
pos != NULL;) { pData
= m_listData.GetNext(pos); lvitem.iItem
= m_ctrlList.GetItemCount(); m_ctrlList.InsertItem(&lvitem); strIms.Empty(); strIms.Format("%d",pData.no); m_ctrlList.SetItemText(lvitem.iItem,
0, strIms); strIms.Empty(); strIms.Format("%d",pData.kor); m_ctrlList.SetItemText(lvitem.iItem,
1, strIms); strIms.Empty(); strIms.Format("%d",pData.eng); m_ctrlList.SetItemText(lvitem.iItem,
2, strIms); strIms.Empty(); strIms.Format("%d",pData.sum); m_ctrlList.SetItemText(lvitem.iItem,
3, strIms); strIms.Empty(); strIms.Format("%f",pData.ave); m_ctrlList.SetItemText(lvitem.iItem,
4, strIms); } } |
|
||||||||
|
||||||||||
ÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇàÇϸé ÇнÀ¸ñÇ¥¿Í °°Àº ´ÙÀ̾î·Î±× âÀÌ ³ªÅ¸³´Ù. |
||||||||||
|
||||||||||
|
||||||||||
°ú Á¦ |
||||||||||
|
||||||||||
Áß¿äÇÔ¼ö |
||||||||||