第1章 开篇基础1
——初学者容易忽略的那点事
1.1概述1
——高手勿看的基础
1.1.1什么是Windows CE1
1.1.2在哪里下载Windows CE2
1.1.3什么是SDK2
1.1.4 Platform Builder是什么2
1.1.5用什么IDE来开发应用程序3
1.2程序执行流程3
——初学者真的明白流程了吗
1.2.1入口还是WinMain3
1.2.2消息循环4
1.3第一个窗口程序4
——一切从窗口开始
1.3.1注册窗口4
1.3.2创建窗口6
1.3.3程序退出8
1.4线程创建窗口8
——为什么消息循环和创建窗口必须在同一线程
1.5封装窗口创建过程13
——static的注册函数如何和对象对应
1.5.1注册信息和成员函数的矛盾13
1.5.2 CWndBase封装简化13
1.6注册表23
——注册表的读/写不再繁琐
1.6.1查看注册表23
1.6.2读/写24
1.6.3 CReg封装简化24
1.7 vector好处多多38
——vector完全可以取代数组
1.7.1内存动态分配38
1.7.2存储字符串39
1.7.3存储内存数据39
1.7.4应用实例40
1.8 String也可以很精彩41
——没有CString,还有std:String
1.8.1宏定义41
1.8.2初始化42
1.8.3赋值42
1.8.4追加42
1.8.5与API函数打交道43
第2章 绘图44
——漂亮的界面都以绘图为起点
2.1HDC概述44
——绘图的基础
2.2绘制BMP45
——系统API足以胜任
2.2.1读取位图45
2.2.2绘制位图47
2.2.3释放资源49
2.3用缓存消除贴图闪烁49
——解决绘制多张图片会闪烁的问题
2.3.1使用缓存49
2.3.2.CMemDC封装简化50
2.4模拟iPhone左边滑动特效56
——iPhone滑动效果不是梦
2.4.1原理56
2.4.2实现56
2.5模拟iPhone手势滑动特效57
——随手舞动
2.5.1原理57
2.5.2实现60
2.6绘制JPEG67
——最简单的DirectShow示例
2.6.1函数调用流程67
2.6.2显示源文件特定区域70
2.6.3 CImager封装简化72
2.7绘制GIF83
——难点在于如何连续显示
2.8将HDC保存为BMP84
——调试界面的利器
2.8.1 BMP文件头信息84
2.8.2将HDC保存到内存86
2.8.3保存文件87
2.8.4 WriteBmp完整源码90
2.9截屏93
2.10半透明效果94
——通过截屏和AlphaBlend混合
第3章 多媒体97
——跨入有声有色的时代
3.1播放WAV97
——利用API播放最简单的WAV
3.2录音97
——只要有麦克风,就能录音
3.2.1WAV格式97
3.2.2前期准备100
3.2.3消息处理102
3.2.4保存文件103
3.2.5 CRecord封装简化103
3.2.6 CRecord实现细节116
3.3 DirectShow116
——播放视频不再是个难事
3.3.1播放音频文件117
3.3.2播放视频文件120
3.3.3 CMedia封装简化121
3.3.4 CMedia与播放格式138
3.4同步显示歌词原理139
——诀窍只在于时间的获取
3.5文字滚动原理141
——歌词的滚动无非如此
3.6 DirectShow声音的渐变143
——WAV和MP3的播放声道不同衍生出的应用
第4章 输入法开发145
——COM技术的应用
4.1输入法结构145
——COM的基础接口
4.2 COM接口函数实现146
——还是注册表
4.3 CClassFactory的实现149
4.4 CInputMethod的实现151
4.5 CIMWnd的实现154
——CWndBase类实例
4.6完整源码156
4.7输入法加载170
——无加载,不使用
4.7.1系统定制170
4.7.2手工加载171
4.8微软繁体手写识别库176
——简单易用的笔划识别
4.8.1调用流程176
4.8.2 CRecognizer封装调用流程179
4.8.3在Platform Builder中添加识别库186
第5章 事件和控制面板189
——拨开控制面板的面纱
5.1事件概述189
——方便好用的交流利器
5.1.1创建事件189
5.1.2发送事件191
5.1.3接收事件192
5.2不同进程数据信息传递194
——数据传递是一切的基础
5.2.1注册表195
5.2.2内存映射196
5.2.3事件数据198
5.3控制面板和驱动通信199
——控制面板和驱动的无缝链接
5.3.1控制面板结构199
5.3.2简单的控制面板程序200
5.3.3控制面板和驱动程序通信206
5.3.4如何调用控制面板207
第6章 驱动开发210
——驱动其实并不难
6.1驱动概述210
——先看看基础
6.2获取已加载驱动信息210
——折腾注册表,获取驱动信息
6.2.1结构体信息211
6.2.2获取注册表信息211
6.2.3提取主要信息213
6.2.4提取其他信息215
6.2.5细节: UNICODE的转换216
6.3一个最简单的驱动217
——麻雀虽小,五脏俱全
6.3.1驱动结构217
6.3.2注册表218
6.3.3最简单的驱动代码219
6.4驱动的动态加载和卸载221
——免去系统编译之苦
6.4.1加载221
6.4.2卸载任意驱动224
6.5 DeviceIoControl和结构体内嵌指针226
——DeviceIoControl是应用层和驱动沟通的桥梁
6.5.1内嵌指针错误226
6.5.2修正地址228
6.5.3原因深究229
6.6虚拟串口驱动231
——多个进程都能使用一个串口
6.6.1源起231
6.6.2驱动约束231
6.6.3 VSP_Open232
6.6.4 VSP_Close234
6.6.5 VSP_Write235
6.6.6 WaitCommEvent235
6.6.7 VSP_Read238
6.6.8完整源代码241
6.6.9注册表数值249
6.6.10驱动调用250
6.7狸猫换太子,用赝版替代原装驱动250
——类似黑客的手法
第7章 电源管理259
——手持设备不可或缺的组成部分
7.1 SC811电源管理芯片259
——简单的芯片示例
7.2搭建硬件电路259
——检测电路图
7.3检测电池电量驱动代码260
——根据ADC数据采获取电量
7.4应用程序获取电源信息265
——驱动完毕,只剩运用
7.4.1创建消息队列265
7.4.2等待状态变化268
7.4.3数据分析269
7.4.4 CPowerThread封装简化流程272
7.5绘制电源变化279
——混搭图片实现动态效果
第8章CPU寄存器读/写281
——最接近硬件的操作
8.1内存映射281
8.2操作STMP37xx GPIO 寄存器283
8.3操作TCC7901 GPIO寄存器286
8.3.1 TCC7901 寄存器读/写286
8.3.2自己动手写TCC7901驱动291
8.3.3驱动调用300
第9章 硬件调试303
——不和硬件打交道,就无法了解Windows CE嵌入式系统
9.1触摸屏303
——PND不可或缺的输入设备
9.1.1校准后无法正确使用303
9.1.2点击时无规律飘忽不定305
9.1.3点击时有规律的漂移305
9.1.4同一型号触摸屏不灵便307
9.2软开关308
——软硬结合的经典范例
9.2.1硬件篇308
9.2.2软件篇310
9.3 LCD调试311
——告别无界面的时代
9.3.1 LCD寄存器初始化311
9.3.2判断数据线是否接反314
9.3.3杂碎经验315
9.4 SDRAM和CPU316
——器件选型的依据
9.4.1 SDRAM和CPU的连接316
9.4.2如何判断SDRAM的大小318
第10章 系统分析320
——对Windows CE系统做一些客制化的更改
10.1音量设置320
——音量也有小后门
10.2系统界面修改329
——非正统的修改
10.3Windows CE圆圈消息330
——揪出隐藏很深的WM_NOTIFY
10.4桌面修改331
——Explorer的各种修改
10.4.1禁止拖拽桌面图标331
10.4.2初始化桌面图标顺序331
10.4.3删除菜单选项332
10.5快捷方式333
——不同于桌面Windows的方式
10.5.1快捷方式结构333
10.5.2将快捷方式放入内核333
10.5.3桌面显示快捷菜单334
10.5.4消除快捷方式箭头334
10.5.5微软自带程序的快捷菜单334
10.6注册表335
——类似于桌面Windows的方式
10.6.1不显示“我的电脑”和“回收站”335
10.6.2直接删除文件,不放回“回收站”335
10.6.3修改XP皮肤的颜色335
10.6.4文件夹映射修改337
10.6.5 Explorer注册表归纳338
10.7格式化339
——有趣的深层探索
10.7.1源代码探索339
10.7.2函数的作用340
10.7.3函数的调用341
10.8文件关联342
——不一样的文件关联
第11章 系统烧录344
——对市面上的系统烧录做简单的对比
11.1大话烧录344
11.2 TT4X0BD345
11.3 S3C6410349
11.4 TCC7901352
11.5 AU1200356
11.5.1地址释疑356
11.5.2开始烧录359
第12章Windows XP和Windows CE开发差异性367
——差异性让我们更注重代码的可移植性
12.1大话差异367
——新手所应了解的差异概述
12.2串口工作的差异性369
——最平常的串口也有其特殊的一面
12.2.1 CreateFile参数的差异369
12.2.2单线程比较370
12.2.3多线程比较371
12.2.4 Windows XP异步模式两种判断操作是否成功的方法375
12.3消息循环的差异性376
——消息的差异也许会有出人意料的意外
12.4 Windows XP和Windows CE工程共存于同一文件379
——一切都只是配置参数
12.5用宏定义区分代码382
——让宏使代码思路更明晰
12.6用类简化代码迁移383
——类不一样的用法范例
12.7 Windows CE程序移植到Windows XP的解决方案实例386
12.7.1 RETAILMSG和DEBUGMSG386
12.7.2 ASSERT388
12.7.3 SetEventData和GetEventData391
12.8 Windows XP程序移植到Windows CE的解决方案实例399
12.8.1 GetCurrentDirectory399
12.8.2 SystemTimeToTzSpecificLocalTime400
后记403
参考文献404