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)
/
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 2 -
- 완성된 계산기 인터페이스(대화상자)
- 계산기 기능을 수행해주는 클래스(CLASS)를 추가하자.
․ 클래스 이름: CCalculatorCtrl ․ 기본 클래스: CDialogEx
- 계산기 대화상자를 가진 도킹 (Docking Pane) 클래스를 추가하기.
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 3 -
- CCalculatorPane 클래스에 CCalculatorCtrl 클래스의 인스턴스를 멤버변수로 추가하자.
- CCalculatorPane 클래스에 메시지 핸들러 함수를 추가하기.
․ 어플리케이션이 실행될 때 계산기 프로그램이 도킹된 상태로 실행되기 위해,
․ WM_CREATE 메시지에 대한 핸들러 함수를 추가하자.
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 4 -
- CCalculatorPane 클래스에 윈도우 크기 변경에 대한 메시지 핸들러 함수를 추가하기.
․ WM_SIZE 메시지에 대한 핸들러 함수를 추가하자.
※ 계산기 도킹 팬을 생성해보자.
- 도킹 팬 객체를 멤버 변수로 선언
․ 윈도우의 틀에 대한 변수를 선언해야 하므로 Frame 클래스에 멤버변수를 선언하자.
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 5 -
- 도킹 팬을 생성
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 함수에 아래의 코드를 작성하자.
※ 현재까지 작업한 내용을 실행해보자.
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 6 -
※ 연산결과의 출력을 위한 필요한 멤버변수 추가
- 아래와 같이 멤버변수들을 추가
․ 화면에 출력을 위한 CString형 m_strResultDisplay
※ 계산기 대화상자의 컨트롤들에 대한 메시지 핸들러 함수 추가
- ․ 숫자1, 숫자2의 Radio 버튼값을 저장할 int형 m_nNumber
- 숫자 버튼이 클릭되었을 때 수행할 일반함수: void PressNumber(int nNumber)
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 7 -
- void CCalculatorCtrl::PressNumber(int nNumber) 함수에 아래의 코드를 작성하자.
- 버튼이 클릭되었을 때의 메시지 핸들러 함수를 선언하자.
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 8 -
- 버튼 클릭 시 추가된 핸들러 함수 코딩.
․ 모든 버튼들에 대한 핸들러 함수 추가.
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 9 -
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 10 -
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 11 -
※ CalclulatorCtrl.cpp에 아래와 같이 헤더를 include 하자.
※ Test004View.h 에 아래와 같이 class를 정의하자.
※ Test004View의 OnDraw() 함수에에 아래와 같이 코드를 추가하시오.
※ 최종결과를 확인해보자.
2020년 2학기, 고급프로그래밍1 (9주차 수업자료 - 1) 박 기 홍
- 12 -
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