PDF문서고급프로그래밍1(09주차 자료 1) - 도킹 & 계산기 프로그램.pdf

닫기

background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  1  -

※ 일반용 계산기 프로그램 만들기

    -  SDI  기반으로 프로젝트를 만들고 실행해보고, 

    -  아래와 같이 리소스 뷰에서 다이얼로그를 삽입하자.

    -  추가된 다이얼로그의 속성을 변경하자.

    -  대화상자에 컨트롤들(Radio,  Edit,  Button)을 넣고,  아래와 같이 ID  및 속성값들을 변경하자.

ID

Caption  (속성)

ID

Caption  (속성)

IDC_RADIO1

숫자 1

IDC_BUTTON7

7

IDC_RADIO2

숫자 2

IDC_BUTTON8

8

IDC_EDIT_NUM1

(Read  Only=  True)

IDC_BUTTON9

9

IDC_EDIT_NUM2

(Read  Only=  True)

IDC_BUTTON0

0

IDC_BUTTON1

1

IDC_BUTTON_BACK

(Button  11)

Back  Space

IDC_BUTTON2

2

IDC_BUTTON_CLEAR

(Button  12)

Clear

IDC_BUTTON3

3

IDC_BUTTON_ADD

(Button  13)

+

IDC_BUTTON4

4

IDC_BUTTON_SUBTRACT

(Button  14)

-

IDC_BUTTON5

5

IDC_BUTTON_MULTIPLY

(Button  15)

*

IDC_BUTTON6

6

IDC_BUTTON_DIVIDE

(Button  16)

/


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  2  -

    -  완성된 계산기 인터페이스(대화상자)

    -  계산기 기능을 수행해주는 클래스(CLASS)를 추가하자.

      ․  클래스 이름:  CCalculatorCtrl                        ․  기본 클래스:  CDialogEx

    -  계산기 대화상자를 가진 도킹 (Docking  Pane)  클래스를 추가하기.


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  3  -

    -  CCalculatorPane  클래스에 CCalculatorCtrl  클래스의 인스턴스를 멤버변수로 추가하자.

    -  CCalculatorPane  클래스에 메시지 핸들러 함수를 추가하기.

    ․  어플리케이션이 실행될 때  계산기 프로그램이 도킹된 상태로 실행되기 위해, 

    ․  WM_CREATE  메시지에 대한 핸들러 함수를 추가하자.


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  4  -

    -  CCalculatorPane  클래스에 윈도우 크기 변경에 대한 메시지 핸들러 함수를 추가하기.

    ․  WM_SIZE  메시지에 대한 핸들러 함수를 추가하자.

※ 계산기 도킹 팬을 생성해보자.

    -  도킹 팬 객체를 멤버 변수로 선언

      ․  윈도우의 틀에 대한 변수를 선언해야 하므로 Frame  클래스에 멤버변수를 선언하자.


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  5  -

    -  도킹 팬을 생성

    -  int  CMainFrame::OnCreate(LPCREATESTRUCT  lpCreateStruct)  함수에 아래의 코드를 작성하자.

※ 현재까지 작업한 내용을 실행해보자.


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  6  -

※ 연산결과의 출력을 위한 필요한 멤버변수 추가

    -  아래와 같이 멤버변수들을 추가

      ․  화면에 출력을 위한 CString형 m_strResultDisplay

※ 계산기 대화상자의 컨트롤들에 대한 메시지 핸들러 함수 추가

    -        ․  숫자1,  숫자2의 Radio  버튼값을 저장할 int형 m_nNumber

    -  숫자 버튼이 클릭되었을 때 수행할 일반함수:  void  PressNumber(int  nNumber)

   


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  7  -

    -  void  CCalculatorCtrl::PressNumber(int  nNumber)  함수에 아래의 코드를 작성하자.

    -  버튼이 클릭되었을 때의 메시지 핸들러 함수를 선언하자.


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  8  -

    -  버튼 클릭 시 추가된 핸들러 함수 코딩.

        ․  모든 버튼들에 대한 핸들러 함수 추가.


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  9  -


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  10  -


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  11  -

※ CalclulatorCtrl.cpp에 아래와 같이  헤더를 include  하자.

※ Test004View.h  에 아래와 같이 class를 정의하자.

※ Test004View의 OnDraw()  함수에에 아래와 같이 코드를 추가하시오.

※ 최종결과를 확인해보자.


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  12  -


background image

    2020년 2학기,                        고급프로그래밍1  (9주차 수업자료 -  1)                                박 기 홍

-  13  -

※ 아래 함수들을 이용하여 공학용 계산기 프로그램을 만들어보자.

    -  명령창에서 ‘calc’를 실행시켜보자.

    -  Visual  C++에서 수학적 처리를 위해서는 아래와 같이 <math.h>를 인쿨루드 해야 한다.

     

#include  “stdafx.h”
#include  <math.h>    ←수학관련 함수 사용을 위한 라이브러리 추가

  -  ‘math.h’  :  수학적 처리와 관련된 주요 함수.

함수명

기능

사용법

의미(m은 int,  x,y는 double)

abs(  )

절대값(정수)

int  n  =  abs(m);

n  =  |  m  |

fabs(  )

절대값(실수)

double  a  =  fabs(x);

a  =  |  x  |

sqrt(  )

제곱근

double  a  =  sqrt(x);

a  =  

exp(  )

e지수

double  a  =  exp(x);

a  =  e

x

log(  )

자연대수

double  a  =  log(x);

a  =  log  x

pow(  )

거듭제곱

double  a  =  pow(x,  y);

a  =  x

y

log10(  )

상용대수

double  a  =  log10(x);

a  =  log.10x

sin(  )

사인

double  a  =  sin(x);

a  =  sin  x

cos(  )

코사인

double  a  =  cos(x);

a  =  cos  x

tan(  )

탄젠트

double  a  =  tan(x);

a  =  tan  x

    ※ 삼각함수인 sin(  ),  cos(  ),  tan(  )에서는 각도를 라디안으로 지정한다.

    ※ 45°의 라디안 값은 다음과 같이 구함.

         

45.0  ×  3.14  /  180.0                    ← 라디안 =  각도[°]  ×  π  /  180