목차
감사의 글
소개
제1장 Windows는 어떻게 작동하는가? = 1
Microsoft Windows란 무엇인가? = 2
Windows의 장점 = 3
Windows 프로그램은 어떻게 작동하는가? = 4
동시에 여러 프로그램을 실행 = 6
메시지 = 8
비유 = 11
Windows 프로그램의 구조 = 12
코드와 리소스 = 14
프로그램 사례(instance) = 15
Windows 프로그램의 컴파일 = 16
Windows 메모리 관리 = 18
메모리 옵션 = 19
스택(Stacks)과 히프(Heaps) = 21
모듈 정의 파일 예제 = 26
요약 = 24
익힘 문제 = 25
익힘 문제 해답 = 26
제2장 시스템 셋업 = 27
무엇이 필요한가? = 28
하드웨어 = 28
소프트웨어 = 29
Windows용 Turbo C++설치 = 30
Turbo C++용 옵션의 셋업 = 32
[정보 박스]세그멘트, 오프셋, 그리고 메모리 모델 = 34
Windows용 Microsoft QuickC의 설치 = 36
Microsoft QuickC 셋업 = 37
세상에서 가장 짧은 Windows 프로그램 작성 = 38
[정보박스]오브젝트 파일 = 39
프로젝트 파일 작성 = 41
MINIMAL1의 컴파일과 실행 = 42
컴파일 과정에서의 일반적인 문제와 그 해결책 = 44
C 프로그램에서의 입력 에러 = 44
모듈 정의 파일에서의 입력 에러(오타) = 45
셋업 문제 = 46
그 밖의 에러들 = 47
요약 = 47
익힘 문제 = 48
익힘 문제 해답 = 48
제3장 첫번째 프로그래밍 실험 = 49
WINDOWS.H파일 = 50
WinMain() 함수 = 52
[정보박스]Turbo C++힌트 : 미리 컴파일된 헤더 파일들 = 53
헝가리식 표기 = 55
WinMain()매개변수 = 58
프로그램의 윈도 만들기 = 59
메시지 = 61
메시지 루프의 추가 = 62
[정보 박스]복습 : C언어 구조체 = 65
[정보 박스]메시지 루프의 중요성 = 70
Windows의 새로운 클래스 만들기 = 71
별도의 메시지 처리 = 72
새로운 윈도 클래스 만들기 = 74
WNDCLASS의 스타일 멤버 = 75
Windows를 위한 엑스트라(Extra)메모리 블록 = 75
아이콘,커서,배경 브러시 = 76
메뉴 이름과 클래스 이름 = 76
윈도 클래스의 등록 = 76
WndProc 함수 이름의 전송 = 77
메시지 처리 함수 WndProc() = 78
MINIMAL3의 컴파일 = 80
커스텀 리소스 데이터 추가 = 81
헤더 파일 = 82
프로그램 아이콘 만들기 = 83
메뉴 정의 = 84
리소스 데이터의 컴파일 = 85
[정보 박스]Borland Resource Workshop 대 Microsoft Quick C = 85
MINIMAL4 프로그램 파일의 나머지 부분 = 87
커맨드 라인 인수의 전달 = 90
요약 = 91
익힘 문제 = 93
연습 문제 = 94
익힘 문제 해답 = 94
익힘 문제 해답 = 95
제4장 텍스트와 그래픽 출력 = 99
문자 모드와 그래픽 모드 = 100
디바이스 컨텍스트(Device Context) = 101
Windows GDI = 102
텍스트 출력 = 103
WM_PAINT 메세지 = 108
디바이스 컨텍스트 변경 = 114
[정보 박스]Windows RGB 컬러 모델 = 118
디바이스 컨텍스트 설정값 = 119
그래픽 출력 = 121
[정보 박스]디바이스 컨텍스트의 오브젝트 지우기 = 127
움직이는 그래픽 = 128
PeekMessage()루프 = 130
요약 = 138
익힘 문제 = 140
연습 문제 = 140
익힘 문제 해답 = 141
연습 문제 해답 = 141
제5장 윈도 컨트롤 = 147
윈도란 무엇인가? = 148
윈도 컨트롤의 유형 = 149
CreateWindow()함수 = 151
정적 컨트롤 = 155
컨트롤에 메시지 보내기 = 163
C언어의 형 지정 = 165
버튼 컨트롤 = 166
버튼 컨트롤 메시지의 처리 = 175
버튼 통지 코드(Button Notification Code) = 178
리스트 박스 = 179
콤보 박스(Combo Box) = 188
스크롤 바 = 195
윈도에 붙은 스크롤 바 = 203
편집 컨트롤 = 208
요약 = 215
익힘 문제 = 217
연습 문제 = 217
익힘 문제 해답 = 218
연습 문제 해답 = 218
제6장 마우스 길들이기 = 221
WM_MOUSEMOVE 메시지 = 223
WM_MOUSEMOVE의 통지 코드 = 224
마우스 버튼 메시지 = 226
MOUSE1 프로그램 = 228
입력 표시점 = 233
비 클라이언트 영역 마우스 메시지 = 234
마우스 캡처 = 236
마우스 커서의 모양 바꾸기 = 241
캐릿(caret) = 245
커서 모양과 캐릿에 대한 실험 = 246
요약 = 252
익힘 문제 = 253
연습 문제 = 253
익힘 문제 해답 = 254
연습 문제 해답 = 254
제7장 문자 세트, 폰트, 키보드 = 257
ANSI문자 세트 = 259
문자 함수 실험 = 262
키보드 메시지 처리 = 267
WM_CHAR메시지 = 270
시스템 키 메시지와 데드 캐릭터 = 271
간단한 키보드 인터페이스 = 272
내장 폰트(Stock font) 선택 = 277
논리적 폰트 사용 = 278
텍스트 미터법 = 283
폰트 사용 = 284
키보드 가속기 = 290
FONT2 프로그램 = 293
요약 = 301
익힘 문제 = 303
연습 문제 = 304
익힘 문제 해답 = 304
연습 문제 해답 = 305
제8장 차일드 윈도와 팝업 윈도 = 307
차일드 윈도 만들기 = 308
차일드 윈도로 메시지 보내기 = 314
고정 차일드 윈도 = 323
팝업 윈도 = 331
전체 모습 = 337
요약 = 337
익힘 문제 = 338
연습 문제 = 339
익힘 문제 해답 =339
연습 문제 해답 = 340
제9장 메뉴 = 343
메뉴 만들기 = 345
리소스 데이터로 정의된 메뉴 = 345
메뉴 로드와 메모리 옵션 = 348
메뉴 항목 = 348
팝업 메뉴 = 349
메뉴 항목 옵션 = 351
Borland Resource Workshop을 이용한 메뉴 작성 = 353
복잡한 메뉴를 가진 예 = 357
메뉴 함수 = 361
MENU1을 위한 다른 파일들 = 363
메뉴 항목의 상태 판단 = 364
프로그램 작동중에 메뉴를 작성 = 365
MENU2 프로그램 = 368
비트맵을 포함하는 메뉴 작성 = 369
그 밖의 MENU2 파일들 = 370
시스템 메뉴 = 377
시스템 메뉴를 바꾸는 예제 = 379
타이머 설정 = 379
SYSMENU 프로그램 파일 = 381
요약 = 386
익힘 문제 = 388
연습 문제 = 388
익힘 문제 해답 = 389
연습 문제 해답 = 389
제10장 다이얼로그 박스 = 391
다이얼로그 박스란 무엇인가? = 392
다이어로그 박스는 어떻게 작동하는가? = 394
다이얼로그 기준 단위 = 395
다이얼로그의 박스 컴파일 = 395
다이어로그 박스 설계 = 396
Microsoft 다이얼로그 에디터 사용 = 397
Borland Resource Workshop 다이얼로그 에디터 사용 = 401
다이얼로그 박스 사용 = 405
DIALG1.C = 407
다이얼로그 박스 함수 = 410
다이얼로그 박스와 데이터 교환-전역 변수 방법 = 412
DIALG2 다이얼로그 박스 만들기 = 413
DIALG2.C 프로그램 만들기 = 414
다이얼로그 박스 함수에서 컨트롤 다루기 = 419
DIALG2 프로그램을 위한 다른 파일들 = 420
전역 변수 사용의 문제점 = 422
다이얼로그 박스와의 데이터 교환-포인터 방법 = 423
양식, 비정형, 시스템 양식 다이얼로그 박스 = 432
비정형 다이얼로그 박스 만들기 = 435
비정형 다이얼로그 박스 정의하기 = 435
비정형 다이얼로그 박스 호출 = 438
요약 = 445
익힘 문제 = 447
연습 문제 = 448
익힘 문제 해답 = 448
연습 문제 해답 = 449
제11장 그 밖의 리소스들 = 453
문자열 표 = 454
문자열 표를 정의하려면 = 455
리소스의 조건부 컴파일 = 455
문자열 데이터 사용 = 457
문자열 표 예제 = 458
STRTAB.C 프로그램 = 460
사용자 정의 리소스 = 464
별도의 파일에 있는 리소스 데이터 = 465
커스텀 리소스 넣기와 로드 = 466
RESOR1 프로그램 = 468
DrawText() 함수연습 = 471
RESOR1을 위한 다른 파일들 = 472
RCDATA구문 = 473
RCDATA 예제 프로그램 = 475
요약 = 479
익힘 문제 = 481
연습 문제 = 481
익힘 문제 해답 = 482
연습 문제 해답 = 482
제12장 메로리 관리 = 485
국지 메모리 대 전역 메모리 = 487
[정보 박스]Windows 포인터 규약 = 488
국지 메로리 블록 = 489
잠금 계수 = 492
핸들을 함수에 전달 = 492
다른 형태의 데이터 저장 = 493
고정 메모리 블록의 사용 = 494
국지 메모리 할당 예제 = 495
메모리 블록의 크기 변화 = 500
LocalReAlloc()함수의 사용 예제 = 501
삭제가능 메모리 블록 = 506
삭제가능 블록의 사용 = 507
삭제가능 블록을 사용한 예제 = 508
MEM3 프로그램 = 510
전역 메모리 할당 = 516
전역 메모리 블록 할당 예제 = 519
GMEM1 프로그램 = 521
Windows가 메모리에 숨어서 하는 일 = 526
시스템 메모리와 시스템 리소스 = 527
요약 = 528
익힘 문제 = 530
연습 문제 = 530
익힘 문제 해답 = 531
연습 문제 해답 = 531
제13장 디바이스 컨텍스트 = 535
사설(private)디바이스 컨텍스트 = 536
사설 디바이스 컨텍스트 만들기 = 538
사설 디바이스 컨텍스트 사용 = 539
사설 디바이스 컨텍스트 예제 = 540
OWNDC.C = 541
매핑 모드 = 547
텍스트와 매핑 모드 = 549
원점 이동 = 549
원점과 매핑 모드를 바꾸는 예제 프로그램 = 551
MAPMODE 프로그램 리스트 = 553
가변 매핑 모드 = 558
텍스트와 가변 매핑 모드 = 560
MM_ANISOTROPIC 예제 = 560
요약 = 565
익힘 문제 = 567
연습 문제 = 567
익힘 문제 해답 = 568
연습 문제 해답 = 568
제14장 프린터 작업 = 573
Windows가 프린트를 지원하는 방법 = 574
프린터 디바이스 컨텍스트 = 576
특수한 명령을 프린터로 보내려면 = 578
간단한 프린터 예제 = 579
PRINT1의 문제점들 = 584
프린터 출력의 기준화 = 585
프린터 작업을 중단할 수 있게 하려면 = 592
PRINT3 프로그램 = 595
디바이스에 대한 정보 얻기 = 603
GetDeviceCaps()의 사용 = 603
GetDeviceCaps()를 사용한 예 = 605
프린터 드라이버에 있는 함수를 호출하려면 = 611
프린터 드라이버에 있는 함수의 액세스 = 612
DeviceCpabilities()함수 = 616
프린터 드라이버 액세스 예제 = 619
요약 = 627
익힘 문제 = 628
연습 문제 = 629
익힘 문제 해답 = 629
연습 문제 해답 = 630
제15장 디스크 파일 액세스 = 633
Windows 프로그램의 디스크 파일 액세스 방식 = 634
[정보 박스]windows 파일 함수 이름의 역사 = 635
디스크 파일 열기 = 635
데이터 읽기와 쓰기 = 638
파일 닫기 = 641
[정보 박스]SMARTDRV.SYS프로그램 = 642
파일 액세스 예제 = 642
FILE1의 작동 = 643
FILE1 프로그램 리스팅 = 646
파일 선택 다이얼로그 박스 만들기 = 651
DlgDirList()함수 = 652
DlgDirSelect()함수 = 654
파일 선택 다이얼로그 박스 만들기 = 654
파일 선택 다이얼로그 박스 함수 = 658
텍스트 에디터 만들기 = 664
편집 컨트롤 만들기 = 664
파일 선택 다이얼로그 박스 사용 = 666
[정보 박스]버그 = 675
요약 = 676
익힘 문제 = 677
연습 문제 = 678
익힘 문제 해답 = 678
연습 문제 해답 = 678
제16장 비트맵 = 681
이미지는 어떻게 해서 비트맵에 저장되는가 = 683
비트맵 파일의 로드 = 684
비트맵 표시 = 684
BitBlt()를 사용한 예제 프로그램 = 687
비트맵의 확장과 압축 = 692
StretchBlt()사용 = 693
래스터 연산 코드 = 697
래스터 연산 코드 사용 예제 = 700
BITMAP3 프로그램 = 700
메모리 비트맵에 그리기 = 708
메모리 비트맵과 애니메이션 = 709
BITMAP4 프로그램 코딩 = 710
BITMAP4 프로그램 리스팅 = 712
BITMAP 데이터 포맷 = 718
DIB 포맷 = 719
요약 = 722
익힘 문제 = 724
연습 문제 = 724
익힘 문제 해답 = 725
연습 문제 해답 = 725
제17장 클립보드 = 727
클립보드는 어떻게 작동하는가 = 728
기본 클립보드 함수 = 730
클립보드 포맷 = 732
클립보드의 한계 = 734
간단한 클립보드 예제 = 735
CLIPBRD1 리스팅 = 736
다중 클립보드 포맷 = 741
다중 클립보드 포맷 사용 예제 = 743
클립보드 데이터의 지연식 렌더링 = 751
WM_RENDERALLFORMAT과 WM_DESTROYCLIPBOARD = 753
지연식 렌더링 예제 = 753
DELREND 리스팅 = 756
클립보드를 편집 컨트롤과 함께 사용 = 762
단순한 에디터에 클립보드 기능을 추가 = 763
요약 = 773
익힘 문제 = 775
연습 문제 = 776
익힘 문제 해답 = 776
연습 문제 해답 = 777
제18장 동적 링크 라이브러리 = 781
컴파일러 런타임(runtime)라이러브리 = 782
동적 링크 라이브러리 = 784
DLL의 작동 = 785
DLL의 정적 변수를 다룰 때의 문제점 = 786
DLL 쓰기 = 787
DLL 예제 = 789
DLL을 위한 모듈 정의 파일 = 791
DLL을 위한 헤더 파일 = 792
REVSTR을 컴파일하여 DLL을 만들려면 = 792
Turbo C++를 이용하여 DLL을 작성하려면 = 793
QuickC를 이용하여 DLL을 작성하려면 = 794
DLL 사용 = 795
DLL 함수를 참조하는 또 다른 방법 = 800
도입 라이브러리 = 801
도입 라이브러리 만들기 = 801
도입 라이브러리 사용 = 802
Turbo C++도입 라이브러리 = 803
QuickC 도입 라이브러리 = 803
도입 라이브러리의 개략도 = 803
DLL 프로그래밍에서 고려할 사항 = 804
실패한 DLL예제 = 805
DLL의 메모리 문제를 예방하려면 = 808
보다 완벽한 DLL예제 = 808
FILEDLG를 DLL로 변환하려면 = 809
[정보 박스] TURBO C++버그 = 810
FILESEL.DLL을 위한 다른 파일들 = 815
FILESEL.DLL 사용 = 818
요약 = 823
익힘 문제 = 825
연습 문제 = 826
익힘 문제 해답 = 826
연습 문제 해답 = 826
맺음말 = 828
부록 A 가상 키 코드 = 829
부록 B 커맨드 라인 컴파일러와 MAKE 유틸리티 사용 = 833
부록 C 용어 해설 = 838
부록 D 참고 문헌 = 847
찾아보기 = 849