목차 일부
PART 01 윈도우 프로그래밍 기본
Chapter 01 윈도우 응용 프로그램의 기본 개념
윈도우 시스템에서의 응용 프로그램을 개발하기 위해서 ... 16
MFC 응용 프로그램의 개요 ... 17
MFC 프로그래밍의 특징 ... 18
비주얼 스튜디오에서 응용 프로그램 작성하기 ... 19
...
더보기
목차 전체
PART 01 윈도우 프로그래밍 기본
Chapter 01 윈도우 응용 프로그램의 기본 개념
윈도우 시스템에서의 응용 프로그램을 개발하기 위해서 ... 16
MFC 응용 프로그램의 개요 ... 17
MFC 프로그래밍의 특징 ... 18
비주얼 스튜디오에서 응용 프로그램 작성하기 ... 19
MFC 응용 프로그램 마법사로 프로그램 뼈대 만들기 ... 21
따라하기 : MFC 응용 프로그램 마법사를 이용한 단일 문서 응용 프로그램 작성 ... 22
MFC 응용 프로그램 마법사로 생성된 프로젝트 살피기 ... 29
프로젝트 빌드 관련 메뉴 살피기 ... 30
따라하기 : MFC 응용 프로그램 컴파일하고 링크하기 ... 30
MFC 응용 프로그램 마법사가 제공해주는 템플릿 ... 33
MFC 응용 프로그램 마법사가 생성한 클래스를 클래스 뷰 창에서 살펴보기 ... 34
따라하기 : 클래스 뷰 살피기 ... 34
MFC 응용 프로그램 마법사가 생성한 클래스의 계층구조 ... 36
MFC의 전반적인 계층도 ... 37
MFC 응용 프로그램 마법사가 생성한 클래스에 계층구조 접목 ... 39
MFC 프레임워크와 AFX 클래스 ... 39
AFX 클래스 ... 40
MFC 응용 프로그램 마법사가 제공해 주는 소스 분석 ... 43
CWinApp으로 부터 파생된 애플리케이션 클래스의 역할 파악 ... 43
CFrameWnd의 파생 클래스인 프레임 윈도우 클래스의 역할 파악 ... 46
CView의 파생 클래스인 뷰 클래스의 역할 파악 ... 47
CDocument의 파생 클래스인 다큐먼트 클래스의 역할 파악 ... 49
종합문제 ... 50
Chapter 02 메시지 처리 방식
Hello World 출력하기 ... 52
WM_PAINT 메시지와 OnDraw() 함수 ... 52
CDC 클래스와 CDC::TextOutW() 함수 ... 53
따라하기 : Hello World 출력하는 단일 문서 응용 프로그램 작성 ... 54
메시지 처리 ... 58
메시지의 종류 ... 58
메시지 핸들러 추가하기 ... 59
따라하기 : 속성 창에서 메시지 핸들러 추가하기 ... 62
윈도우의 크기 알아보기 ... 64
따라하기 : 윈도우 크기를 알아보기 위한 코드 수정 ... 65
메시지 맵의 역할 ... 66
Hello World를 윈도우 가운데 출력하기 ... 67
따라하기 : 멤버변수 추가하기 ... 68
따라하기 : 윈도우 한 가운데 메시지 출력하기 ... 69
문자 정렬 방식 ... 71
디버깅 ... 73
따라하기 : 디버깅을 위한 콘솔 응용 프로그램 작성 ... 74
종합문제 ... 82
Chapter 03 메뉴와 명령 메시지 처리
메뉴란 ... 83
메뉴 디자인 ... 84
색상 메뉴 만들기 ... 84
메뉴를 다룰 수 있도록 하는 리소스 뷰 ... 85
따라하기 : MFC 응용 프로그램 마법사가 생성한 메뉴 리소스 살피기 ... 85
리소스 뷰에서 메뉴 디자인하기 ... 87
따라하기 : 메뉴 항목 추가하기 ... 88
명령 핸들러 추가하기 ... 89
따라하기 : 명령 핸들러 추가하는 방법 ... 90
명령 메시지 전달 경로 ... 92
명령 메시지 처리 ... 92
색상 메뉴에서 선택한 색으로 글자색 변경하기 ... 93
CDC::DrawText() 함수로 문자열 출력하기 ... 93
글자 색상 변경하기 ... 96
색상을 저장하기 위한 멤버변수 선언하기 ... 98
따라하기 : 글자 색상을 저장할 변수 선언 ... 98
OnDraw() 함수와 WM_PAINT 메시지 ... 101
따라하기 : 명령 핸들러에 Invalidate() 함수 호출 추가하기 ... 102
갱신 핸들러와 CCmdUI ... 103
갱신 핸들러 ... 104
따라하기 : 검정색 메뉴에 대해서 갱신 핸들러 작성 ... 104
CCmdUI 클래스 ... 105
따라하기 : 글자색의 서브 메뉴에 대한 갱신 핸들러 작성하기 ... 107
컨텍스트메뉴(ContextMenu)와 CMenu 클래스 ... 108
WM_CONTEXTMENU 윈도우 메시지 ... 108
따라하기 : 컨텍스트 메뉴 작성하기 ... 108
마우스 오른쪽 버튼이 눌리면 팝업 메뉴 띄우기 ... 109
따라하기 : 바로가기 메뉴 만들기 ... 112
종합문제 ... 113
Chapter 04 다큐먼트와 뷰 아키텍처
다큐먼트와 뷰를 분리하는 이유 ... 115
화면 가운데 사각형 출력하기 ... 117
사각형을 그리기 위한 CDC::Rectangle() 함수 ... 117
CRect 클래스의 다양한 멤버함수 ... 119
화면 가운데 클라이언트의 1/4 크기의 사각형 출력하기 ... 121
메뉴를 이용한 다양한 도형 출력하기 ... 123
메뉴 디자인 ... 123
다큐먼트 클래스에 멤버변수 추가하기 ... 124
따라하기 : 도형의 종류를 결정하는 변수 선언 후 초기화 ... 126
다큐먼트의 멤버변수를 뷰에서 사용하기 ... 127
명령 핸들러 추가하기 ... 131
따라하기 : 다큐먼트 클래스에 명령 핸들러 추가하기 ... 132
CDocument::UpdateAIIViews() 함수 ... 134
종합문제 ... 137
PART 02 대화 상자와 컨트롤 다루기
Chapter 05 대화상자와 기본 컨트롤
대화상자 살피기 ... 142
따라하기 : MFC 응용 프로그램 마법사가 대화상자를 출력하기 위한 작업들을 추적해가며 살피기 ... 143
나만의 대화상자 만들기 ... 146
따라하기 : 나만의 대화상자 만들기 ... 146
나만의 대화상자 만들기 ... 148
따라하기 : 나만의 대화상자 출력하기 ... 149
대화상자에 컨트롤 배치하기 ... 151
스테틱 텍스트와 에디트 컨트롤 다루기 ... 151
따라하기 : 이름, 이메일, 핸드폰을 입력받는 대화상자 디자인하기 ... 152
따라하기 : 대화상자 클래스에 에디트 컨트롤에 대한 멤버변수 추가하기 ... 154
라디오 버튼과 체크 박스 다루기 ... 158
따라하기 : 대화상자에 도형과 색상을 선택할 라디오 버튼과 색상을 적용할지를 결정할 체크 박스 배치하기 ... 160
따라하기 : 대화상자 클래스와 멤버변수 선언하기 ... 163
따라하기 : 뷰에 도형의 종류와 색상을 저장할 변수 선언하기 ... 167
따라하기 : 대화상자를 화면에 출력하기 ... 170
종합문제 ... 173
Chapter 06 Value 형 컨트롤 변수와 Control 형 컨트롤 변수
Value 형 컨트롤 변수의 동작 원리 ... 174
따라하기 : ConVarTest란 이름으로 단일 문서 응용 프로그램 작성하기 ... 174
따라하기 : 대화상자 클래스와 멤버변수 선언하기 ... 175
따라하기 : 대화상자를 화면에 출력하기 ... 177
버튼과 BN_CLICKED 메시지 ... 178
따라하기 : [+]연산을 위한 BN_CLICKED에 대한 메시지 처리 ... 179
CDialog::DoDataExchange() 함수 ... 180
CDialog::DoDataExchange() 함수 ... 180
컨트롤과 멤버변수사이에 정보를 교환하는 DDX 함수 ... 181
CWnd::UpdateData() 함수 ... 183
UpdateData() 함수 내부적으로 사용된 예 ... 188
컨트롤제어를 위한 Control 형 멤버변수 ... 190
라디오 버튼에 대한 Control 형 멤버변수 선언하기 ... 193
따라하기 : Control 형 멤버변수 사용하기 ... 193
체크 박스의 상태가 변경될 때마다 라디오 버튼의 상태도 변경하기 ... 196
따라하기 : 체크 박스에 대한 메시지 처리 ... 197
종합문제 ... 198
Chapter 07 대화 상자 기반 응용 프로그램과 다양한 컨트롤 다루기
대화상자 기반 응용 프로그램 살피기 ... 200
따라하기 : 비디오 관리를 위한 대화상자 기반 응용 프로그램 작성하기 ... 201
대화상자 기반 응용 프로그램의 클래스 ... 203
따라하기 : 프로그램이 시작과 함께 대화상자를 출력하기 위한 작업 추적하기 ... 204
스핀 컨트롤 다루기 ... 206
따라하기 : 대화상자에 스테틱 텍스트와 에디트 컨트롤 배치후 멤버변수 선언하기 ... 206
스핀 컨트롤 성격 파악하기 ... 208
스핀 컨트롤 배치하기 ... 208
따라하기 : 대화상자에 스핀 컨트롤 배치하기 ... 209
스핀 컨트롤을 위한 CSpinButtonCtrl 클래스 ... 211
따라하기 : 스핀 컨트롤에 대한 멤버변수 선언하기 ... 212
리스트 박스와 콤보 박스 다루기 ... 213
따라하기 : 리스트 박스와 콤보 박스 배치하기 ... 215
컨트롤 통보 메시지 ... 218
따라하기 : 리스트 박스에서 더블클릭한 항목 값 얻어오기 ... 219
따라하기 : 콤보 박스에서 클릭한 항목 값 얻어오기 ... 221
종합문제 ... 223
PART 03 GDI 오브젝트와 다양한 대화상자
Chapter 08 GDI 오브젝트 기본 다루기
GDI 오브젝트의 개요 ... 226
GDI 오브젝트의 종류 ... 226
CPen ... 227
도형에 선의 스타일과 색상과 굵기를 지정하기 위한 절차 ... 229
CBrush ... 233
도형에 면의 스타일과 색상을 지정하기 위한 절차 ... 234
예제 : CBrush 클래스를 사용하여 도형의 면의 스타일과 색상을 지정 ... 235
내장 GDI 오브젝트 ... 236
CFont ... 237
폰트 만들기 ... 238
CBitmap ... 241
BitBlt() 함수 사용하기 ... 243
따라하기 : 비트맵을 출력하기 ... 244
StretchBlt() 함수 사용하기 ... 247
따라하기 : 비트맵을 출력하기 ... 249
종합문제 ... 252
Chapter 09 다양한 대화상자 다루기
공통 대화상자 ... 255
색상 공통 대화상자 ... 256
따라하기 : 사각형의 선 색 변경하기 ... 256
따라하기 : 사각형의 선 색 변경을 위한 색 공통 대화상자 사용하기 ... 257
글꼴 공통 대화상자 ... 258
따라하기 : 글꼴 변경하기 ... 259
프로퍼티 시트와 프로퍼티 페이지를 이용한 탭 대화상자 ... 262
따라하기 : 도형의 선과 면에 다양한 유형을 적용하도록 프로그래밍하기 ... 263
속성 시트(Property Sheet)와 속성 페이지(Property Page) ... 264
따라하기 : 속성 페이지 만들기 ... 265
따라하기 : 속성 시트 만들기 ... 268
모달리스 대화상자 ... 272
모달리스 대화상자 구현하기 ... 273
따라하기 : 모달리스 대화상자를 출력하기 위해 CUserDlgTestView 클래스 처리하기 ... 275
따라하기 : 모달리스 대화상자로 처리하기 위한 CShapeDlg 정의하기 ... 277
종합문제 ... 280
Chapter 10 공통 컨트롤
슬라이더 컨트롤 ... 281
따라하기 : 스크롤바를 이용한 사각형의 색상 변경하기 ... 282
프로그레스 컨트롤 ... 286
따라하기 : 진행 상태를 알려주는 프로그레스 컨트롤 다루기 ... 287
이미지 리스트 컨트롤 ... 289
따라하기 : 리소스 뷰에서 bmp 파일 가져오기 ... 289
이미지 리스트 컨트롤 ... 290
따라하기 : 이미지를 배열처럼 사용하는 이미지 리스트 다루기 ... 290
트리 컨트롤 ... 292
따라하기 : 계층구조를 나타내는 트리 컨트롤 다루기 ... 293
트리 컨트롤에 이미지 리스트 설정하기 ... 295
트리 컨트롤에 노드 추가하기 ... 295
따라하기 : 트리 컨트롤에 이미지 리스트 설정하고 루트 노드 추가하기 ... 296
트리 컨트롤에서 선택한 노드 얻어오기 ... 297
따라하기 : 트리 컨트롤에서 선택된 항목의 내용 출력하기 ... 298
트리 컨트롤에 노드 추가, 수정, 삭제하기 ... 300
따라하기 : [추가], [수정], [삭제] 버튼 처리하기 ... 300
리스트 컨트롤 ... 303
리스트 컨트롤에 컬럼 추가하기 ... 304
따라하기 : 리스트 컨트롤에 컬럼 제목을 추가하기 ... 305
리스트 컨트롤에 이미지 리스트 설정하고 샘플 데이터 추가하기 ... 307
따라하기 : 리스트 컨트롤에 이미지 리스트 설정하고 샘플 데이터 추가하기 ... 309
따라하기 : 데이터 추가할 때 사용할 입력 대화상자 폼과 클래스 생성하기 ... 311
종합문제 ... 314
PART 04 단일, 다중 문서 응용프로그램
Chapter 11 사용자 인터페이스
키보드 ... 316
WM_CHAR 메시지 ... 316
따라하기 : 눌려진 키 값 출력하기 ... 317
WM_KEYDOWN 메시지 ... 318
따라하기 : 눌려진 방향키(상하좌우) 위치로 글자 이동하기 ... 318
마우스 ... 320
따라하기 : 마우스 왼쪽 버튼이 눌려진 위치에 글자 출력 ... 322
따라하기 : 마우스 드래그 되는 위치에 원을 연속적으로 출력 ... 323
툴바 ... 324
CToolBar 클래스의 주요함수 ... 325
툴바 만들기 ... 327
따라하기 : 원의 면 색상을 변경하는 툴바 작성하기 ... 327
상태바 ... 330
CStatusBar 클래스의 주요함수 ... 332
상태바 변경하기 ... 334
따라하기 : 상태바 변경하기 ... 334
타이머 설정하기 ... 335
따라하기 : 1번 패널에 현재 시간 출력하기 ... 336
MFC 클래스들의 상호 참조 ... 337
따라하기 : 2번 패널에 마우스의 위치 출력하기 ... 339
종합문제 ... 341
Chapter 12 단일 문서 다중 문서
MFC 컬렉션 클래스 ... 342
배열 클래스 ... 342
따라하기 : 배열 객체를 콘솔 응용 프로그램 작성 ... 344
리스트 클래스 ... 350
데이터를 배열 객체에 저장하기 ... 353
따라하기 : DragExam 프로그램에서 윈도우 크기가 변경되더라도 그림이 지워지지 않도록 하기 ... 353
단일 문서에서 파일 입출력 ... 355
따라하기 : DragExam 프로그램에 파일 입출력 기능 추가하기 ... 357
다중 문서 ... 359
따라하기 : MFC 응용 프로그램 마법사를 이용한 다중 문서 응용 프로그램 작성 ... 361
MFC 응용 프로그램 마법사가 생성한 클래스 살펴보기 ... 363
다큐먼트 템플릿 ... 363
따라하기 : 드래그할때 마다 원이 그려지는 다중 문서 응용 프로그램 작성 ... 365
종합문제 ... 367
Chapter 13 다양한 문서
폼 뷰 ... 368
따라하기 : 폼 뷰로 정보 입력 받기 ... 368
분할 윈도우 ... 371
동적 분할 윈도우 ... 371
따라하기 : 동적 분할 윈도우 만들기 ... 372
정적 분할 윈도우 ... 373
따라하기 : 정적 분할 윈도우 만들기 ... 374
정적 분할 윈도우로 좀 더 복잡한 화면 구성 ... 377
따라하기 : 보다 복잡한 분할 윈도우 ... 377
화면 전환하기 ... 379
따라하기 : 화면 전환을 위한 프로그래밍 ... 379
종합문제 ... 386
PART 05 고급 프로그래밍
Chapter 14 데이터베이스 프로그래밍
데이터베이스 ... 388
Access를 이용한 데이터베이스 ... 389
따라하기 : 회원 관리 테이블 생성하기 ... 389
ODBC ... 391
따라하기 : 데이터 소스이름을 만들어 보자 ... 392
CRecordset과 CRecordView ... 394
따라하기 : 데이터베이스를 지원받는 프로젝트 생성하기 ... 394
CODBCExamSet ... 395
CODBCExamView ... 397
따라하기 : 고객 정보를 출력하기 ... 397
레코드 이동 ... 400
따라하기 : 전체 레코드의 수와 현재 레코드 수 저장하기 ... 400
레코드 추가, 수정, 삭제 구현하기 ... 403
따라하기 : 고객 추가, 수정, 삭제하기 ... 404
전체 레코드 내용 출력하기 ... 409
따라하기 : 리스트 컨트롤에 컬럼 제목을 추가하기 ... 409
따라하기 : 리스트 컨트롤에 이미지 리스트 설정하고 테이블에 저장된 전체 데이터 출력하기 ... 410
리스트 컨트롤에 출력되는 내용을 등급별로 나누어서 출력하기 ... 413
따라하기 : 리스트 컨트롤에 출력되는 내용을 등급별로 나누어서 출력하기 ... 413
따라하기 : 리스트 컨트롤에서 선택된 항목의 내용을 에디트 컨트롤에 출력하기 ... 414
종합문제 ... 416
Chapter 15 네트워크 프로그래밍
네트워크 프로그램의 개요 ... 419
소켓 클래스 ... 422
CAsyncSocket ... 422
채팅 서버 만들기 ... 425
채팅 서버를 위한 프로젝트와 화면 디자인하기 ... 426
따라하기 : 채팅 서버를 위한 Windows 소켓 지원받는 프로젝트 생성하기 ... 426
소켓 클래스 설계하기 ... 427
따라하기 : 서버 소켓과 클라이언트 소켓 클래스 설계하기 ... 427
따라하기 : 어플리케이션에 소켓 객체 생성하기 ... 428
어플리케이션에 사용자 정의 함수 만들기 ... 428
따라하기 : 접속과 데이터 송수신을 위한 사용자 정의 함수 만들기 ... 429
서버 소켓과 자식 소켓 클래스에 CAsyncSocket 클래스의 함수 재정의하기 ... 431
따라하기 : 서버 소켓과 자식 소켓에 CAsyncSocket 클래스의 함수 재정의 ... 434
따라하기 : 대화상자 클래스에서 서버 소켓을 초기화하고 데이터 전송하기 ... 435
채팅 클라이언트 만들기 ... 346
채팅 클라이언트를 위한 프로젝트와 화면 설계 ... 436
따라하기 : 채팅 클라이언트를 위한 프로젝트 생성하기 ... 436
소켓 클래스 설계하기 ... 439
따라하기 : 클라이언트 소켓 구현 후 객체 생성 ... 439
어플리케이션에 사용자 정의 함수 만들기 ... 440
따라하기 : 접속과 데이터 송수신을 위한 사용자 정의 함수 만들기 ... 440
클라이언트 소켓 클래스에 CAsyncSocket 클래스의 함수 재정의하기 ... 442
따라하기 : 클라이언트 소켓 클래스에 CAsyncSocket 클래스의 함수 재정의 ... 442
다자간 채팅 프로그램 ... 444
브로드 캐스팅이란 ... 444
따라하기 : 어플리케이션 클래스 수정하기 ... 445
따라하기 : 자소켓 클래스 수정하기 ... 449
종합문제 ... 451
Chapter 1 MFC란 무엇인가 ... 9
1-1 클래스의 구조 ... 11
Chapter 2 비주얼 C++ 컴파일러 사용법 ... 15
2-1 프로젝트 구성 ... 16
2-2 컴파일 ... 21
2-3 컨트롤에 함수 만들기 ... 22
2-4 컨트롤에 변수 만들기 ... 24
2-5 클래스에 멤버변수 등록하기 ... 25
2-6 클래스에 멤버함수 등록하기 ... 27
2-7 메시지에 함수 만들기 ... 29
Chapter 3 컨트롤(Controls) ... 31
3-1 버튼(Button) ... 32
3-1-1 제목 바꾸기 ... 39
3-1-2 숨기기 ... 45
3-1-3 사용 못하게함 ... 47
3-1-4 종료 ... 49
3-2 에디터 상자 ... 50
3-3 체크 상자(Check Box) ... 55
3-4 콤보 상자(Combo Box)와 스태틱 상자(Static Text) ... 58
3-5 Progress 컨트롤 ... 62
3-6 리스트 상자(List Box) ... 65
3-6-1 리스트 상자에 목록을 추가, 삭제하자 ... 66
3-6-2 리스트 상자의 목록을 변수로 저장하자 ... 70
3-7 리스트 컨트롤(List Control) ... 74
3-7-1 칼럼 만들기 ... 74
3-8 그림(Picture) 상자 만들기 ... 84
3-8-1 리소스에 비트맵 파일 등록하기 ... 85
3-8-2 그림 상자에 이미지 표시하기 ... 88
3-9 메뉴(Menu) ... 90
3-9-1 메뉴에 소스코드 연결하기 ... 96
3-10 스크롤바 ... 99
3-11 트리컨트롤 ... 110
3-12 스핀컨트롤 ... 119
3-13 프로퍼티 시트 ... 122
3-14 마법사대화상자 ... 130
3-15 애니메이트 컨트롤 ... 134
Chapter 4 기본적인 MFC프로그래밍 ... 139
4-1 텍스트 출력하기 ... 140
4-2 WM_PAINT메시지 ... 143
4-3 마우스 메시지 ... 145
4-3-1 마우스가 클릭된 곳의 x, y좌표 ... 148
4-4 타이머 ... 150
4-5 점과 선 그리고 도형 ... 153
4-5-1 점을 출력하는 프로그램 ... 153
4-5-2 선을 그리는 프로그램 ... 155
4-5-3 도형을 출력하는 프로그램 ... 159
4-6 파일 입출력 ... 163
4-6-1 파일의 직렬화 ... 167
4-7 커서 ... 171
4-8 분할 윈도우 ... 175
4-8-1 동적 분할 윈도우 ... 175
4-8-2 정적 분할 윈도우 ... 180
4-9 폰트 ... 186
4-10 키보드에 대한 처리 ... 190
4-11 시스템 정보 ... 194
4-11-1 메모리정보 ... 205
4-11-2 프로세스의 환경 설정 값 ... 208
4-11-3 윈도우즈가 설치된 폴더 ... 211
4-11-4 윈도우즈 버전 정보 ... 212
4-12 비트맵 파일 불러오기 ... 216
4-13 MCI를 이용한 Wav파일 플레이 ... 220
4-14 공통 대화상자 ... 229
4-14-1 파일 열기 공통 대화상자 ... 229
4-14-2 색상 선택 공통 대화상자 ... 237
4-14-3 폰트 선택 공통 대화상자 ... 242
Chapter 5 계산기 ... 249
Chapter 6 전원 종료 프로그램 ... 269
Chapter 7 달력 ... 289
Chapter 8 실시간 메모리 정보 출력 프로그램 ... 309
Chapter 9 디스크의 정보를 출력하는 프로그램 ... 329
Chapter 10 게임 만들기 ... 353
10-1 오목 게임 만들기 ... 354
10-2 퍼즐 게임 ... 381
Chapter 11 미로 ... 417
11-1 미로 에디터 프로그램 ... 419
11-2 미로 프로그램 ... 441
더보기 닫기