책 소개
입문자를 위한 단계별로 따라하며 배우는 MFC 프로그래밍
이 책은 처음으로 Visual C++을 접하는 대학 초년생, 몇 번 Visual C++ 책과 씨름하였으나 아직 윈도우 프로그램을 작성하는데 문제가 있는 학생들을 위한 책이다. 실습을 중심으로 단계별로 따라하며 자연스럽게 MFC를 배울 수 있는 가장 쉬운 Visual C++ 2015 입문서이다.
기존의 Visual C++ 입문서와 다음과 같은 차별화 된 특징이 있다.
첫째, 이 책은 기본적인 C 또는 C++의 문법적 내용은 수록하지 않았다. 대신 Visual C++ 2015를 사용하여 윈도우 프로그래밍을 하는 방법을 알기 쉽게 수록하고 있다. 따라서 이 책을 보기 위해서는 C/C++의 기본적인 지식이 필요하다.
둘째, 컴퓨터의 조작 시 표시되는 실제 화면을 그대로 수록하고 장문의 설명을 탈피하여 아주 일반적인 컴퓨터 조작 능력만 있으면 실습 예제의 단계를 따라가면서 다양한 실습을 직접 해보고 그 결과를 완전히 자기 것으로 만든 후에 다음 단계로 진행되도록 구성되어 있다.
셋째, Visual C++ 2015를 사용하여 프로젝트를 작성하는데 장문의 설명 중심의 나열식이 아닌 문제 해결 중심의 실습 위주로 다양하고 필요한 내용만을 선택하여 쉽게 구성하였다. 이러한 간단한 설명과 실습 방법이 독특하고 실용적이기에 C 또는 C++ 언어를 배우고 처음으로 Visual C++ 2015를 이용하여 윈도우 애플리케이션을 만드는 방법을 익히기 위한 학생들에게는 최고의 입문서가 될 것이다.
넷째, 대학에서 이 책을 교재로 하여 한 학기 강의를 할 경우 중간고사와 기말고사를 제외한 14주에 한 단원씩 완성할 수 있도록 구성되어 있으며 각 단원 마지막 부분에는 연습 문제를 두어 본인 스스로 실습과제를 통해 배운 내용을 다시 한 번 확인할 수 있는 기회를 제공하였다.
이 책의 구성
이 책을 교재로 하여 한 학기 강의를 할 경우 중간고사와 기말고사를 제외한 14주에 한 단원씩 완성할 수 있도록 구성되어 있다.
1장에서는 윈도우 프로그래밍의 기본 개념과 Win32 SDK를 이용하여 윈도우 프로그램을 작성하는 방법에 대해 설명한다. 그리고 윈도우 프로그램의 기본 형식에 대해 자세히 알아본다.
2장에서는 MFC의 기본적인 개요와 MFC의 아키텍처에 대해 상세히 설명한다. 또한 MFC 응용 프로그램 마법사 사용법에 대해 설명하고 MFC 응용 프로그램 마법사를 사용하여 MFC 프로젝트를 만드는 방법에 대해서 알아본다.
3장에서는 윈도우 프로그래밍에서 가장 중요한 개념 중의 하나인 메시지 처리에 대해 설명한다. MFC가 메시지를 처리하는 방법에 대해 설명하고, 클래스 마법사를 사용하여 메시지에 대응하는 메시지 핸들러 함수와 맵핑시키는 방법에 대해 자세히 살펴본다. 많은 종류의 메시지가 있지만 특히 이 장에서는 윈도우 메시지, 마우스 메시지, 그리고 키보드 메시지에 대해 살펴본다.
4장에서는 MFC에서 제공하는 공용 대화상자와 사용자가 직접 대화상자 기반의 프로그램을 구현함으로서, 윈도우 프로그래밍 방식에서 대화상자가 동작하는 원리와 대화상자에서 사용되는 기본적인 표준 컨트롤의 사용법에 대해 알아본다.
5장에서는 사용자 인터페이스인 메뉴, 툴바, 상태 표시줄, 도킹 팬 윈도우에 대해 설명하고 이것들을 만드는 방법에 대해서 자세히 살펴본다.
6장에서는 그래픽 출력에 대한 개념과 그래픽을 출력하는 방법에 대해 상세히 기술한다. GDI와 DC의 개념, GDI 객체에 대해 설명하고 GDI 객체를 사용하여 그래픽을 출력하는 방법과 GDI+ 객체를 사용하여 그래픽을 출력하는 방법에 대해서 자세히 살펴본다.
7장에서는 List Control과 Tree Control에 대해 배운다. List Control과 Tree Control은 프로그램 내의 정보를 특정 기준에 따라 분류할 수 있게 해 주며, List Control과 Tree Control은 우리가 윈도우 탐색기에서 많이 경험해 보았을 것이다.
8장에는 7장에서 배운 컨트롤 이외에 자주 사용되고 윈도우에서 흔히 볼 수 있는 여러 가지 컨트롤들에 대해 배운다. 정보를 분류하고자 할 때 사용되는 Tab Control, 마우스를 통해 일정범위 안의 값을 입력하는 Slider Control, 간단한 동영상 재생에 사용되는 Animation Control, 세밀한 제어라든지 일정 값을 입력하는 Spin Control, 어떤 작업의 진행 상황을 시각적으로 표현하는 Progress Bar Control, 사용자로부터 인터넷 프로토콜(IP) 형식의 숫자 주소를 입력할 수 있는 IP Address Control, 특정날짜를 입력하거나 선택하도록 하는 Date Time Picker Control에 대해 간단히 살펴보고 실습을 통해 익혀본다.
9장에서는 Visual C++ 2008 Feature Pack 버전부터 새롭게 추가된 고급 MFC
Feature 컨트롤(“MFC” 접두어가 붙은 컨트롤)과 리본(Ribbon) 메뉴에 대해 배울 것이다. 대표적인 MFC Feature 컨트롤들에 대해 간단히 설명하고, 실습을 통하여 대표적인 CMFCColorButton, CMFCFontComboBox, CVSListBox, MFC PropertyGrid 컨트롤에 대한 사용법을 배우게 될 것이다. 그리고 리본 디자이너(Ribbon Designer)를 이용한 리본 메뉴의 편집과 각 요소들에 대한 이벤트 처리에 대해서 실습을 통하여 배우게 될 것이다.
10장에서는 여러 종류의 뷰 클래스에 대해서 알아보고 분할 윈도우, 다중 뷰에 대해서 알아본다. 또한 도큐먼트 클래스의 Serialize() 함수를 이용하여 파일의 입·출력에 대해 알아볼 것이다.
11장에서는 동적 연결 라이브러리 DLL을 만드는 방법에 대하여 설명한다. DLL의 링크 방법과 종류에 대해 살펴보고 실습을 통해 사용 방법을 익혀본다.
12장에서는 OLE DB를 이용한 데이터베이스 프로그램을 작성해 본다. 데이터베이스 프로그램은 기본적으로 데이터의 입·출력과 데이터 추가, 수정, 삭제 그리고 검색기능을 갖는 것이 일반적인데 데이터베이스 프로그래밍을 하기 전에 반드시 알고 있어야 하는 사항은 데이터베이스에 접근하는 방식이다. Visual C++에서 데이터베이스에 접근하는 세 가지 방식인 ODBC를 이용하는 방법, DAO를 이용하는 방법, 그리고 OLE DB를 이용하는 방법에 대해 배운다.
13장에서는 모든 그래픽 도구에서 곡선을 그리는데 사용되고 있는 베지어 곡선을 구현하는 프로그램을 작성해 볼 것이다. 베지어 곡선 알고리즘은 곡선을 생성하는데 있어 대표적이며 기본이 되는 알고리즘이다. 물론 MFC에서 PolyBezier() 함수가 제공되는데 이 함수는 cubic 베지어 곡선을 그리는데 한정되어 있다. 이번 장에서는 베지어 곡선상의 좌표를 계산하는 알고리즘을 배우고 그 알고리즘에 입각하여 베지어 곡선을 구현해 볼 것이다.
14장에서는 네트워크 프로그래밍 중에 채팅 프로그램을 작성해 본다. 채팅 프로그램을 구현함으로써, 윈도우 프로그램 방식에서 채팅 프로그램이 동작하는 원리와 방법에 대해 공부한다.
작가 소개
저자 : 정일홍
애리조나 주립대학교 컴퓨터공학과 공학 박사
현재) 대전대학교 컴퓨터공학과 교수
저서
『단계별로 쉽게 배우는 2010 MFC Programming』, 2013, 『MFC로 구현한 윈도우 프로그래밍』, 2006, 『교양 컴퓨터 활용』, 2003, 『단계별 실습으로 배우는 Visual C++ 6.0』, 2002, 『컴퓨터 정보품 배움터』, 2002, 『IT 공학입문』, 2002, 『실습으로 배우는 컴퓨터 이해와 활용』, 2001
목 차
1.1 윈도우 프로그래밍의 개념
1.2 Win32 SDK 윈도우 프로그램의 기본 구조
실습 1-1 간단한 Win32 SDK 윈도우 프로그램 만들기
1.3 간단한 윈도우 애플리케이션의 분석
1.4 윈도우 프로그램의 기본 형식
연습문제
CHAPTER 02 MFC 개요 및 아키텍처
2.1 MFC의 개요
2.2 MFC 프로그램의 구조
2.3 Visual C++의 시작
실습 2-1 MFC 응용 프로그램 마법사 익히기
2.4 SDI 템플릿
2.5 MDI 템플릿
2.6 MFC 애플리케이션 아키텍처
실습 2-2 간단한 MFC 프로젝트 만들기
연습문제
CHAPTER 03 메시지 처리
3.1 메시지 처리의 기본개념
3.2 메시지 박스(Message Box)
실습 3-1 메시지 박스 생성하기
3.3 마우스 메시지(Mouse Message)
실습 3-2 디지털시계 만들기
3.4 키보드 메시지(Keyboard Message)
실습 3-3 문자를 입력하고 이동시키기
연습문제
CHAPTER 04 대화상자
4.1 CDialogEx 클래스
4.2 대화상자 기반의 프로그램
4.3 MFC 기본 컨트롤
실습 4-1 MFC의 기본 컨트롤(Control) 사용법 익히기
4.4 모달(Modal) 대화상자와 모덜리스(Modeless) 대화상자
4.5 공용 대화상자
실습 4-2 대화상자 기반 디지털시계 만들기
연습문제
CHAPTER 05 사용자 인터페이스
5.1 메뉴(Menu)
실습 5-1 간단한 메뉴와 단축키 만들기
5.2 툴바(Toolbar)
실습 5-2 간단한 툴바 만들기
5.3 상태 표시줄(Status Bar)
실습 5-3 상태 표시줄에 팬을 만들고 문자열을 출력하기
5.4 도킹 팬(Docking Pane) 윈도우
실습 5-4 문자열 출력 도킹 팬 만들기
연습문제
CHAPTER 06 그래픽 객체의 사용
6.1 GDI와 DC의 개념
6.2 GDI 객체
실습 6-1 직선, 도형 그리기
6.3 GDI+의 개념
실습 6-2 그림판 만들기
연습문제
CHAPTER 07 컨트롤 및 리소스 Ⅰ
7.1 리스트 컨트롤(List Control)
실습 7-2 대화상자에 List Control 사용하기
7.2 트리 컨트롤(Tree Control)
실습 7-2 대화상자에서 Tree Control 사용하기
연습문제
CHAPTER 08 컨트롤 및 리소스 Ⅱ
8.1 탭 컨트롤(Tab Control)
8.2 슬라이더 컨트롤(Slider Control)
8.3 스핀 컨트롤(Spin Control)
실습 8-1 도형의 종류와 색상을 대화상자에 출력하기
8.4 프로그레스 바 컨트롤(Progress Bar Control)
8.5 IP 주소 컨트롤(IP Address Control)
8.6 네트워크 주소 컨트롤(Network Address Control)
8.7 날짜/시간 선택 컨트롤(Date Time Picker)
8.8 애니메이션 컨트롤(Animation Control)
실습 8-2 각종 컨트롤을 이용한 데이터 전송 Simulator 작성하기
연습문제
CHAPTER 09 고급 컨트롤 및 리본
9.1 MFC Feature 컨트롤(MFC Feature Controls)
실습 9-1 간단한 명함제작 프로그램 만들기
9.2 리본(Ribbon)
실습 9-2 리본 메뉴 및 각종 리본 컨트롤 사용하기
연습문제
CHAPTER 10 도큐먼트 파일 입출력 및 다양한 뷰 클래스
10.1 도큐먼트
10.2 파일 입출력
10.3 다양한 뷰 클래스
실습 10-1 FormView를 이용하여 문자 출력 및 파일 입출력하기
10.4 분할 윈도우
실습 10-2 정적 분할 윈도우를 이용한 학생 정보 출력 프로그램 만들기
10.5 다중 뷰
실습 10-3 다중 뷰 만들기
연습문제
CHAPTER 11 동적 연결 라이브러리 DLL
11.1 DLL의 링크
11.2 DLL의 종류
실습 11-1 Implicit 링킹을 통한 정규 DLL 달력 만들기
실습 11-2 Explicit 링킹을 통한 정규 DLL 달력 만들기
실습 11-3 확장 DLL을 통한 2차 방정식 근을 구하는 프로그램 만들기
연습문제
CHAPTER 12 데이터베이스 프로그래밍
12.1 데이터베이스 프로그램의 개요
실습 12-1 OLE DB를 이용한 학생 도서관리 프로그램 만들기
연습문제
CHAPTER 13 그래픽 프로그래밍
13.1 베지어 곡선(Bezier Curve)
실습 13-1 5 알고리즘을 통한 베지어(Bezier) 곡선 그리기
실습 13-2 컨트롤 포인트의 이동 및 베지어 곡선의 해상도 설정하기
연습문제
CHAPTER 14 네트워크 프로그래밍
14.1 네트워크 프로그램의 개요
실습 14-1 채팅 프로그램 제작하기
연습문제
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |