목차 일부
Chapter 1 시작을 위한 준비 ... 11
1-1 Win32 API 프로그래밍 ... 13
윈도우즈 어플리케이션은 어디에서 시작하는가? ... 13
진짜 main과 WinMain이 시작 함수일까? ... 19
CRT main 함수 지정 ... 22
1-2 Win32 GUI 프로그래밍 ... 25
W...
더보기
목차 전체
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
더보기 닫기