목차
Chapter 1 시작을 위한 준비 ... 11
   1-1 Win32 API 프로그래밍 ... 13
      윈도우즈 어플리케이션은 어디에서 시작하는가? ... 13
      진짜 main과 WinMain이 시작 함수일까? ... 19
      CRT main 함수 지정 ... 22
   1-2 Win32 GUI 프로그래밍 ... 25
      WinMain 함수 원형 ... 25
      WinMain 함수의 기본 골격 ... 27
      윈도우 프로시저 ... 33
      메시지 루프를 종료하기 위해 WM_DESTROY를 처리해야 한다 ... 35
      화면에 내용을 출력하기 위해 WM_PAINT를 처리해야 한다 ... 37
      GetMessage를 다시 한 번 ... 38
   1-3 핸들 ... 42
      핸들이 뭐지? ... 42
      유저 객체 핸들 ... 43
      GDI 객체 핸들 ... 45
      커널 객체 핸들 ... 46
   1-4 유니코드 ... 47
      유니코드란? ... 47
      그럼 어떻게 유니코드를 사용하지? ... 48
      Win32 API의 유니코드 지원 ... 53
   1-5 함수 호출 규약 ... 55
      _ _cdecl ... 55
_ _stdcall ... 58
      _ _fastcall ... 60
   1-6 가상함수 ... 62
      가상함수 ... 62
      클래스 단위로 컴파일러가 생성하는 가상함수 테이블 ... 67
   1-7 pragma와 , ... 70
pragma ... 70
      과 ... 71
   핵심 포인트 ... 72
Chapter 2 MFC 어플리케이션의 시작과 끝 ... 73
   2-1 가장 간단한 MFC 프로그램 ... 75
      프로젝트 생성과 기본 코드 ... 75
      WinMain은 어디에? ... 78
      어플리케이션과 MFC의 만남 ... 83
      다시 WinMain과 AfxWinMain ... 86
   2-2 실전 프로젝트 ... 89
      실전 프로젝트 생성 ... 89
      InitInstance ... 92
      InitInstance의 나머지는 간단하게 ... 107
   2-3 메시지 구조 ... 110
      메시지 큐 ... 110
      MFC의 메시지 루프 ... 111
      MFC의 윈도우 프로시저 ... 117
   2-4 어플리케이션 종료 ... 123
      프레임/뷰/도큐먼트 파괴 ... 123
      ExitInstance ... 127
   핵심 포인트 ... 129
Chapter 3 RTTI와 CRuntimeClass ... 131
   3-1 RTTI ... 133
      RTTI ... 133
   3-2 CRuntimeClass ... 142
      CRuntimeClass는 어디에 쓰는 물건인가? ... 142
      CRuntimeClass 매크로 ... 147
      일반화된 객체 생성 ... 151
      실행 시 객체 자료형 검사 ... 153
      실행 시 객체 유효성 검사 ... 156
      직렬화 ... 158
      CRuntimeClass 리스트 ... 160
   핵심 포인트 ... 163
Chapter 4 MFC 메시지 ... 165
   4-1 윈도우즈 메시지 ... 167
      메시지란? ... 167
      메시지 큐를 통과하지 않는 메시지 ... 168
   4-2 MFC 메시지 핸들러 ... 170
   4-3 MFC 메시지 루프 다음으로의 여행 ... 176
   4-4 CWnd::OnWndMsg와 메시지 맵 ... 184
   4-5 메시지 종류 ... 205
      윈도우 메시지 ... 205
      명령 메시지 ... 205
      통지 메시지 ... 208
      사용자 정의 메시지 ... 210
   4-6 명령 메시지와 통지 메시지는 어떤 것이 특별한가? ... 211
   4-7 메시지 리플렉션 ... 218
   핵심 포인트 ... 224
Chapter 5 MFC와 스레드 ... 227
   5-1 스레드 ... 229
      프로세스와 스레드 ... 229
      스레드 생성 ... 230
   5-2 워커 스레드와 UI 스레드 ... 235
      워커 스레드 ... 235
      UI 스레드 ... 240
   5-3 MFC 스레드 ... 245
      MFC 워커 스레드 ... 245
      MFC UI 스레드 ... 246
      MFC 스레드 구조 ... 250
   5-4 TLS(Thread Local Storage) ... 263
      Win32 TLS ... 264
      컴파일러 지원 TLS ... 268
      MFC TLS ... 270
      PROCESS_LOCAL ... 283
   5-5 _AFX_THREAD_STATE, AFX_MODULE_STATE, AFX_MODULE_THREAD_STATE ... 286
      _AFX_THREAD_STATE ... 288
      AFX_MODULE_STATE ... 289
      AFX_MODULE_THREAD_STATE ... 291
   핵심 포인트 ... 302
Chapter 6 뷰와 도큐먼트 ... 303
   6-1 자료 구조 설계와 구현 ... 305
      자료 구조 설계 ... 305
      자료 구조 구현 - CFigure ... 306
      자료 구조 구현 - CLine ... 309
   6-2 뷰와 도큐먼트 ... 313
      데이터의 생성 ... 313
      데이터의 보관 ... 316
      데이터를 이용한 화면 복원 ... 318
      데이터를 이용한 인쇄 ... 321
      데이터의 파괴 ... 327
      파일 입·출력 ... 331
   6-3 "WBChat" UI 구현 ... 337
      메뉴, 툴바, 단축키 구현 ... 337
      도형 객체 이동 ... 340
   6-4 직렬화 ... 349
      직렬화는 어디에서 시작되나 ... 349
      직렬화의 핵심 Serialize 함수 ... 355
      클래스 버전 관리는 어떻게? ... 365
      직렬화 파일 포맷 ... 368
   핵심 포인트 ... 371
Chapter 7 대화상자와 서브클래싱 ... 373
   7-1 CAttribute 구현 ... 375
      CFigure와 CAttribute ... 375
      속성 설정 사용자 인테페이스 ... 382
   7-2 대화상자 구현 ... 384
      대화상자 리소스 편집 ... 384
      대화상자 클래스 추가 ... 386
      변수 연결 ... 388
   7-3 DoDataExchange ... 394
      DoModal 안으로... ... 394
      대화상자의 90% - DoDataExchange ... 399
      DDX 함수 ... 401
      DDV 함수 ... 403
      값 변수와 컨트롤 변수 초기화 ... 405
      [확인]과 [취소] 버튼 ... 408
   7-4 컨트롤 서브클래싱 ... 410
      확장된 컨트롤 클래스 구현 ... 410
      확장된 컨트롤 변수 연결 ... 412
      확장된 컨트롤 클래스 기능 추가 ... 412
   핵심 포인트 ... 421
Chapter 8 MFC 소켓 통신 ... 423
   8-1 소켓 통신 ... 425
      TCP / IP 모델 ... 425
      소켓이란? ... 427
      클라이언트/서버 모델 ... 429
      서버 함수 ... 431
      클라이언트 함수 ... 444
   8-2 WSAAsyncSelect 통신 모델 ... 449
      모델 이름이 왜 WSAAsyncSelect일까? ... 449
      소켓 메시지 ... 452
   8-3 MFC 소켓 ... 455
      MFC 소켓 클래스 ... 455
      CAsyncSocket ... 457
      CAsyncSocket는 어떻게 이벤트 메시지를 처리하나? ... 463
      CSocket ... 470
   8-4 직렬화 소켓 ... 476
      1대1 통신 방식으로 서버와 클라이언트 구현 ... 476
      직렬화 소켓 ... 485
      직렬화에서 소켓 타임 아웃 처리 ... 490
   8-5 스레드와 MFC 소켓 ... 494
      스레드와 MFC 소켓 ... 494
      직렬화를 이용한 패킷 설계 ... 501
   핵심 포인트 ... 506
Chapter 9 데이터베이스 ... 507
   9-1 데이터베이스 접근 전략 ... 509
      UDA ... 509
      ADO를 MFC에서 어떻게 사용하지? ... 510
   9-2 대화 상대 관리 사용자 인터페이스 구현 ... 514
      분할 윈도우 ... 514
      대화 상대 관리 메뉴 ... 518
      대화상자 구현 ... 519
   9-3 ADO ... 521
      테이블 정의 ... 521
      ADO를 사용한 데이터 소스 접속 ... 522
      ADO를 사용한 검색 ... 528
      ADO를 사용한 수정과 삭제 ... 531
      ADO를 사용한 삽입 ... 535
   9-4 ODBC ... 538
      CDatabase ... 538
      CRecordset ... 542
      CRecordset는 상속해 사용한다 ... 544
      MFC에서 Stored procedure는 어떻게 호출하지? ... 557
   핵심 포인트 ... 562
찾아보기 ... 563
닫기