학습목표    1

학습주제    1

예습내용    1

실습방법    1

        1

중요함수    1

다이어로그 박스에서 입출력

학습목표

버튼의 동작과 에디터 박스에서의 입출력을 공부한다.

학습주제

다이어로그 박스에서 입력창에 숫자를 입력하고 버튼을 눌러서 명령을 실행하면 출력창에 입력값의 2배의 결과가 나타나게 한다.

예습내용

다음 함수의 기능을 알아 본다.

UpdateData(TRUE)

UpdateData(FALSE)

실습방법

   

1.                    새로운 프로젝트를 만든다.

2. Project name Step1이라고 이름을 주고 [NI Measurment Studio AppWizard] 선택하고OK 버튼을 누른다.

처음

디렉토리 선택
 


3. Location      단추를 눌러 프로젝트를 저장할 디렉토리를 설정하고 OK 버튼을 누른다.

 

4. 다음과정은 계속 디폴트 값을 그대로 놔두고 Next 버튼을 누른다.

처음

처음

 

5. 다음과 같이 클래스와 다이어로그 박스가 만들어 것을 있다.

도구모음 창에서 Edit Box 선택하여 다이어로그 박스에 2개를 만든다.

처음

도구모음에서 Button 다이어로그 창에 만든다.                                

Edit 선택하고 마우스 오른쪽 버튼을 눌러 Properties 선택하면 등록된 ID 있다. IDC_EDIT1, IDC_EDIT2 , IDC_BUTTON1으로 등록되어 있다.

 

 

 

처음

메뉴 View에서 ClassWizard 선택한다.

IDC_EDIT1 선택하고 Add Variable 선택하고 아래와 같이 채우고 OK 버튼을 누른다.

처음

같은 방법으로 IDC_EDIT2 아래와 같이 입력한다.

다이어로그 창에서 Button1 단추를 마우스 왼쪽 버튼을 두번 크락하면 다음과 같이 OnButton1이라는 함수를 만들 있다. 프로그램 실행시에 마우스를 크릭하면 함수가 실행 된다.

처음

Cstep1Dlg 클래스에 함수가 추가 것을 있다.

OnButton1() 함수에 다음을 추가하고 프로그램을 컴파일, 링크 후에 실행한다.

void CStep1Dlg::OnButton1()

{

              // TODO: Add your control notification handler code here                                 

              UpdateData(TRUE);                             // 에디트창의 값을 가져온다.

              m_edit2 = m_edit1*2;                    // 연산을 한다.

              UpdateData(FALSE);                           // 에디트창으로 값을 출력한다.

}

처음

 

void CA2Dlg::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 CA2Dlg::WriteList()

{

              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("%d",a->ave);

                             m_ctrlList.SetItemText(lvitem.iItem, 4, strIms);

                             a++;

              }

}

   

1부터 입력한 숫자까지의 합을 구한다.

중요함수

다음은 MSDN Lib 있는 것을 나타낸 것이다.

CWnd::UpdateData

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

Return Value

Nonzero if the operation is successful; otherwise 0. If bSaveAndValidate is TRUE, then a return value of nonzero means that the data is successfully validated.

Parameters

bSaveAndValidate

Flag that indicates whether dialog box is being initialized (FALSE) or data is being retrieved (TRUE).

Remarks

Call this member function to initialize data in a dialog box, or to retrieve and validate dialog data.

The framework automatically calls UpdateData with bSaveAndValidate set to FALSE when a modal dialog box is created in the default implementation of CDialog::OnInitDialog. The call occurs before the dialog box is visible. The default implementation of CDialog::OnOK calls this member function with bSaveAndValidate set to TRUE to retrieve the data, and if successful, will close the dialog box. (If the Cancel button is clicked in the dialog box, the dialog box is closed without the data being retrieved.)

CWnd OverviewClass MembersHierarchy Chart

See Also   CWnd::DoDataExchange

처음