저자 서문 ... 4 추천사 ... 6 이 책의 학습 로드맵 ... 7 CHAPTER 1 Windows CE 운영체제 01 Windows CE 5.0 소개 ... 18 마이크로소프트의 임베디드 시스템 ... 18 Windows CE ... 18 Windows Mobile ... 19 Windows CE 5.0 그리고 Windows Mobile 6 ... 20 Windows CE와 Windows Mobile의 차이점 ... 20 그렇다면 이 책에서는? ... 22 02 Windows CE 5.0의 특징 ... 23 Windows CE 5.0 구조 ... 23 OAL ... 23 커널 모듈 ... 24 디바이스 매니저 ... 24 GWES 모듈 ... 24 파일 시스템 ... 25 Windows CE 5.0 메모리 구조 ... 25 애플리케이션 메모리 맵 ... 26 03 Windows Mobile 6 ... 27 Windows Mobile 개요 ... 27 Windows Mobile 플랫폼 3가지 종류 ... 27 Windows Mobile 6의 특징 ... 28 실습 : Cellular Emulator를 사용하여 에뮬레이터와 SMS 문자를 전송하는 방법 ... 30 CHAPTER 2 Windows Mobile 개발환경 01 Windows Mobile 개발환경 구축 ... 34 Visual Studio 2005 ... 36 실습 : VS 2005 설치 ... 37 Active Sync ... 41 실습 : ActiveSync 설치 ... 42 Windows Mobile Device Center(Windows Vista 환경) ... 45 실습 : Windows Mobile Device Center 설치 ... 45 Windows Mobile SDK ... 47 Windows Mobile 6 Professional SDK ... 47 실습 : Windows Mobile 6 Professional SDK 설치 ... 48 Windows Mobile 6 Standard SDK ... 52 실습 : Windows Mobile 6 Standard SDK 설치 ... 52 02 Windows Mobile 개발환경 둘러보기 ... 53 Native Code와 Managed Code ... 53 Native Code 프로젝트 생성 ... 53 Managed Code 프로젝트 생성 ... 54 Windows Mobile 디바이스 플랫폼 선택 ... 55 Windows Mobile 단말기에서 애플리케이션 실행 ... 56 프로그램을 실행시킬 디바이스 선택 ... 56 프로젝트를 빌드하고 모바일 디바이스로 Deploy ... 57 Windows Mobile에서 제공하는 Remote Tools ... 60 Remote File Viewer ... 60 Remote Heap Walker ... 62 Remote Process Viewer ... 63 Remote Registry Editor ... 63 Remote Spy ... 64 Remote Zoom In ... 65 CAB 파일 제작 및 배포 ... 65 CAB 파일 프로젝트 생성 ... 66 CAB 프로젝트 사용자 지정 ... 66 프로젝트 애플리케이션을 CAB 프로젝트에 추가 ... 67 CAB 파일에 포함될 파일 추가 ... 69 추가한 DLL 파일을 Windows 폴더로 이동시키려면 ... 69 레지스트리 항목을 추가하려면 ... 70 CAB 파일 빌드 ... 70 CAB 파일을 장치에 배포 ... 70 CHAPTER 3 Windows Mobile 애플리케이션 개발의 시작 01 Hello World 프로그램 ... 72 실습 : Windows Mobile 프로젝트 생성 ... 72 02 Windows 기반 애플리케이션의 구조 ... 86 이벤트와 메시지 ... 87 메시지 큐 ... 88 메시지 루프 ... 88 윈도우 프로시저 ... 89 CHAPTER 4 그래픽 01 그림 그리기 위해 필요한 DC ... 96 디바이스 컨텍스트 ... 96 화면 DC ... 96 메모리 DC ... 97 DC 핸들 얻는 방법 ... 97 첫 번째 : GetDC() 함수를 이용하는 방법 ... 97 실습 : GetDC() 함수를 이용한 DC 핸들 알아내기 ... 98 두 번째 : WM_PAINT 메시지를 이용하는 방법 ... 100 실습 : WM_PAINT 메시지를 이용한 DC 핸들 알아내기 ... 100 무효영역 ... 101 WM_PAINT 메시지 ... 102 02 GDI ... 103 GDI 오브젝트 ... 103 GDI 오브젝트의 의미 ... 103 스톡 오브젝트 ... 104 선, 도형 그리기 ... 105 직선 그리기 ... 105 실습 : 직선 그리기 ... 105 실습 : 삼각형 그리기 ... 107 도형 그리기 ... 108 실습 사각형 그리기 ... 110 펜 오브젝트 ... 111 실습 : 펜 오브젝트 설정방법 ... 112 브러시 오브젝트 ... 113 LOGBRUSH ... 113 실습 : 여러 가지 펜과 브러시로 그리기 ... 114 폰트 ... 116 스톡 폰트 ... 116 논리 폰트 ... 117 실습 : 외곽선 문자열 그리기 ... 120 비트맵 ... 125 비트맵의 의미 ... 125 장치 의존적 비트맵 ... 126 장치 독립적 비트맵 ... 126 BitBlt() 함수 ... 130 리소스를 이용한 비트맵 그리는 방법 ... 130 비트맵 파일을 불러서 비트맵 그리는 방법 ... 131 실습 : BitBlt, StretchBlt, TransparentImage() 함수를 사용해서 비트맵 이미지를 나타내는 방법 ... 132 DIB 출력 ... 138 DIB 섹션 ... 138 실습 : DIB 섹션으로 그리는 비트맵 ... 139 더블 버퍼링 ... 142 CHAPTER 5 사용자 입력 도구 01 키보드 ... 144 가상키 코드 ... 144 키보드 메시지 ... 145 키보드 함수 ... 148 02 터치 스크린, 스타일러스 ... 151 터치 스크린 애플리케이션 ... 151 스타일러스 메시지 이벤트 ... 151 스타일러스 입력 캡처 ... 152 실습 : 스타일러스를 이용한 도형 그리기 ... 154 03 Windows Mobile Ink ... 157 Windows Mobile Ink 개요 ... 157 Windows Mobile Ink 응용 프로그래밍 ... 157 Automation 라이브러리 ... 157 Windows Mobile Ink가 제공하는 API ... 158 Windows Mobile Ink에서 사용하는 인터페이스 ... 158 실습 : 잉크를 텍스트로 변환하기 ... 160 InkCanvas Control ... 165 실습 : 여러 가지 잉크 데이터 나타내기 ... 166 04 SIP ... 178 SIP 정의 ... 178 SIP의 적용 사례 ... 178 SIP란? ... 179 SIP 애플리케이션 ... 179 SIP의 구성 ... 179 입력 메서드 정보 얻기 ... 180 입력 메서드 보이기, 숨기기 ... 180 SIP 상태 알기 ... 181 CHAPTER 6 표준 컨트롤, 메뉴, 대화상자 01 표준 컨트롤 ... 184 표준 컨트롤 ... 184 표준 컨트롤 생성하는 방법 ... 184 버튼 컨트롤 ... 186 버튼 컨트롤의 종류 ... 186 푸시 버튼 컨트롤 생성 ... 186 체크 박스 컨트롤 생성 ... 188 라디오 버튼 컨트롤 생성 ... 191 그룹 박스 컨트롤 ... 192 실습 : 버튼 컨트롤 생성 및 사용 방법 ... 192 에디트 컨트롤 ... 197 실습 : 에디트 컨트롤 생성 및 사용 방법 ... 199 스태틱 컨트롤 ... 204 리스트 박스 컨트롤 ... 206 실습 : 리스트 박스 컨트롤 생성과 사용 방법 ... 207 콤보 박스 컨트롤 ... 212 실습 : 콤보 박스 컨트롤의 생성과 사용 방법 ... 213 02 메뉴 ... 215 메뉴 생성 방법 ... 215 메뉴 생성 ... 216 실습 : 메뉴 생성 ... 219 메뉴 명령 처리 ... 221 메뉴 추가, 삭제 ... 221 팝업 메뉴 ... 223 실습 : 팝업 메뉴 생성 ... 226 03 대화상자 ... 230 대화상자 생성 방법 ... 230 대화상자 템플릿 ... 230 모달 대화상자 ... 232 실습 : 모담 대화상자 생성 ... 235 모드리스 대화상자 ... 239 CHAPTER 7 공통 컨트롤 01 윈도우 공통 컨트롤 ... 242 윈도우 공통 컨트롤의 정의 ... 242 공통 컨트롤과 표준 컨트롤 비교 ... 244 공통 컨트롤 사용 ... 245 리스트 뷰 컨트롤 ... 245 리스트 뷰 생성 ... 246 리스트 뷰 스타일 ... 246 리스트 뷰 메시지 ... 249 통지 메시지 ... 249 선택된 항목 알아내기 ... 250 리스트 뷰 컬럼 생성 ... 252 리스트 뷰 항목 추가, 삭제 ... 254 이미지 리스트 ... 257 실습 : 리스트 뷰 컨트롤 생성 ... 259 프로그래스 바 컨트롤 ... 262 프로그래스 바 컨트롤 생성 ... 262 프로그래스 바 컨트롤 메시지 ... 262 실습 : 프로그래스 바 생성 방법 ... 263 스핀 컨트롤 ... 265 스핀 컨트롤 스타일 ... 265 스핀 컨트롤 메시지 ... 266 커맨드 바 컨트롤 ... 267 커맨드 바 생성 ... 267 커맨드 바 메뉴 생성 ... 268 커맨드 바 버튼 추가 ... 268 실습 : 커맨드 바 컨트롤 ... 270 CHAPTER 8 Component Object Model(COM) 01 COM 소개 ... 274 COM 개요 ... 274 COM 구조 ... 275 COM 컴포넌트 ... 275 COM 인터페이스 ... 276 IUuknown 인터페이스 ... 276 HRESULT의 모든 것 ... 279 GUID의 모든 것 ... 281 02 COM 개체 사용 ... 284 COM 클라이언트 애플리케이션 ... 284 COM 클라이언트와 서버 애플리케이션 ... 284 COM 컴포넌트 등록 ... 285 COM 클라이언트 애플리케이션 생성 과정 ... 285 COM 라이브러리 초기화와 해제 ... 285 COM 라이브러리 초기화 ... 285 COM 라이브러리 초기화 해제 ... 286 COM 개체 인스턴스 생성 ... 286 COM 개체의 CLSID 구하기 ... 286 CoCreateInstance() 함수 ... 287 COM 개체 사용 ... 288 실습 : 이미지 출력 ... 289 03 COM 개체 ... 292 COM 인터페이스 정의 ... 292 IDL을 사용한 인터페이스 정의 ... 292 COM 개체 구현 ... 295 인터페이스 상속을 통한 COM 개체 클래스 정의 ... 295 IUuknown 인터페이스 메서드 구현 ... 296 COM 개체 서비스 메서드 구현 ... 297 COM 개체 식별자 정의 ... 300 클래스 팩토리 구현 ... 300 COM 개체 생성 과정 ... 300 클래스 팩토리와 IClassFactory 인터페이스 ... 301 인-프로세스 서버 구현 ... 303 Win32에서의 DLL ... 303 인-프로세스 서버 구현의 개요 ... 304 DllGetClassObject() 함수 구현 ... 305 DllCanUnloadNow() 함수 구현 ... 306 CHAPTER 9 실무에 사용하는 컨트롤 01 오너 드로우와 커스텀 드로우 ... 308 오너 드로우 ... 308 오너 드로우 컨트롤의 정의 ... 308 오너 드로우 컨트롤의 동작 원리 ... 309 오너 드로우 스타일 적용 ... 309 WM_DRAWITEM 메시지 ... 309 커스텀 드로우 ... 311 커스텀 컨트롤이란? ... 311 커스텀 컨트롤의 동작 원리 ... 311 커스텀 드로우를 지원하는 컨트롤 ... 312 커스텀 드로우 통지 ... 312 02 오너 드로우 컨트롤 실습 ... 315 오너 드로우 버튼 컨트롤 ... 315 실습 : 버튼 컨트롤 오너 드로우 방법 ... 315 오너 드로우 리스트 뷰 ... 320 실습 : 오너 드로우로 핸드폰 메뉴 만들기 ... 320 사용자 컨트롤 - 토글 버튼 ... 324 실습 : 사용자 정의 토글 버튼 만들기 ... 324 사용자 컨트롤 - TrackBar 컨트롤 ... 333 실습 : 트랙바를 이용한 볼륨 조절기 제작 ... 333 CHAPTER 10 Today 화면과 홈스크린 01 Today 화면 제작 ... 348 Today 화면이란? ... 348 Today 화면 색상 스키마 ... 348 Today 화면 플러그-인 제작 ... 349 DEF 파일 구성 ... 349 플러그-인 윈도우 만들기 ... 351 플러그-인 윈도우 메시지 ... 352 커스텀 플러그-인 등록하기 ... 353 실습 : Today 플러그인 생성 ... 353 02 홈스크린 제작 ... 362 홈스크린이란? ... 362 홈스크린 컴포넌트 ... 363 색 조합 ... 363 Layout ... 364 배경 이미지 ... 365 COM DLL ... 365 Windows Mobile에서 제공하는 Standard 플러그-인 종류 ... 365 All-Day Event ... 366 Calendar ... 367 Carrier/SIM ... 368 Clock ... 369 Icon Bar ... 369 Messaging Counts ... 370 Missed Calls ... 371 MRU ... 371 Owner Info ... 372 Profile ... 372 Text Label ... 373 커스텀 플러그-인 제작 ... 373 홈스크린 인터페이스 ... 374 나만의 홈스크린 제작 ... 375 실습 : 홈스크린 플러그-인 제작 ... 375 홈스크린 설치 파일 제작 ... 391 CAB 파일 만드는 방법 ... 391 스마트폰에 홈스크린 적용 ... 394 실습 : 홈스크린 변경 ... 394 CHAPTER 11 DirectShow 멀티미디어 프로그래밍 01 DirectShow 개요 ... 398 DirectShow는 무엇인가? ... 398 DirectShow 구조 ... 399 DirectShow의 주요 컴포넌트 ... 400 필터 ... 400 핀 ... 400 필터 그래프 ... 401 필터 그래프 매니저 ... 401 기본적인 인터페이스 ... 401 Windows CE에서의 DirectShow ... 402 02 DirectShow 프로그래밍 ... 403 애플리케이션 개발 환경 ... 403 Emulator에서 MP3 플레이어 제작의 한계 ... 406 DirectShow 애플리케이션 프로그래밍 ... 407 필터 그래프 매니저 생성 ... 407 필터 그래프 제어 ... 408 필터 그래프 이벤트 처리 ... 409 이벤트 통지 사용 방법 ... 410 따라해보는 DirectShow 프로그래밍 ... 411 실습 : 멀티미디어 파일 실행 ... 412 비디오 창 설정 ... 418 실습 : 영상 미디어 실행 ... 419 실습 : MP3 플레이어 제작 ... 421 부록 A Windows Embedded CE 6.0의 특징 ... 435 부록 B 플랫폼 빌더 ... 447 찾아보기 ... 478