##############################################################################
WinCE-01wince概述:
(1)
WINCE是什么:
统一解释没有,普遍认为是Consume Electronics(消费电子)。
微软解释为:CE不具有任何意义,只是暗示C代表了Compact,connectable等意义。
Windows CE是一个运用于嵌入式设备、娱乐设备和移动通用设备平台的组件式操作系统。
(2)
Windows Embedded CE诞生于1996年
目前最新的版本是WindowsCE7.0
应用最为深远的是WindowsCE4.2
应用当中最新的版本是WindowsCE6.0
(3)
(WinCE的再定制版)
一种是微软内部的团队,制造了如:
Windows Mobile、Windows POSReady、Windows XPE等在一定范围内通用的操作系统。
(4)
针对于可裁剪WindowsCE平台的硬件驱动开发。
针对于裁剪好的WindowsCE平台的应用开发。
(5)
Windows CE的开发流程
导入BSP包
-》定制Windows CE平台(修改添加功能组件,修改配置文件)
-》导出SDK
-》在PC端用VS.NET进行开发
-》将编译好的内核下载到Windows CE平台上
(6)
windows CE应用开发工具
VS 2005
Wince SDK
ActiveSync 4.2
##############################################################################
WinCE-02wince开发准备:
(1)
模拟器和开发板的区别
(2)
开发windows CE应用程序的方法:
Windows SDK
使用MFC类库开发(微软对MFC已经放弃了)
.NET compact Framework开发(使用.NET Framework类库)
优点:可以快速开发应用
缺点:需要安装.NET类库
版本之间兼容性差
(3)
Windows SDK API 流程要求很严格,开发速度不是很高。
使用时可以使用微软的类库,MFC使用起来比较困难,并且MFC在设备上也需要占用一定的空间。
.NET移植性不是太好
(4)
应用程序开发辅导工具
Remote File Viewer文件查看器
Remote Process Viewer进程查看器
Remote Zoomln 屏幕抓取器
Remote Registry Editor注册表编辑器
Remote HEap Walker远程堆查看器
##############################################################################
WinCE-03wince上的HelloWorld:
(1)
##############################################################################
WinCE-04wince开发基本概念:
(1)匈牙利命名法:
在变量前都加上数据类型的前缀
如: integer - i or n
Word - w or s
Double - dw
Long - l
Chae - c
String - sz
Pointer - p
Long Pointer - lp
Handle - h
Window Handle- hwnd
Struct size - cb
(2)
LPTSTR
LP -- Long Pointer
T -- Wide character
STR -- String
(3)窗口:
窗口就是屏幕上的一个矩形区域
作用:
应用程序通过它和用户信息的交互
所以说窗口时Windows 应用程序的基本操作单元
它是应用程序与用户之间交互的接口环境
也是系统管理应用的基本单位
(4)
Windows 消息机制
硬件事件,如按键被按下,鼠标被点击等事件。
将事件转化为消息,并将消息进入系统消息队列,然后系统消息队列经过系统调度器进入到你的应用程序里面,然后在你的应用程序里面通过消息循环将消息获得,发送给消息处理函数,在消息处理函数中进行消息处理。(系统消息循环不一定每时每刻的将消息发送过去)
消息处理函数只能处理很少一部分消息,大部分消息经DefWindowProc函数将消息返回给操作系统,系统进行默认处理。
##############################################################################
WinCE-05对Hello World程序进行优化:
(1)
参照MFC的消息映射机制;
将消息映射到对应的函数上;
Struct DecodeUnit {
UINT message;
LONG (*fun)(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
}
#define dim(x) (sizeof(x)/sizeof(x[0]))
LONG OnDestroy(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
LONG OnPaint(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
Struct DecodeUnit MainMessageProc[] = {
WM_DESTROY, OnDestroy,
WM_PAINT , OnPaint,
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message, WPARAM wParam, LPARAMlParam)
{
for(int i = 0; i < dim(MainMessageProc); i++)
{
if(MainMessageProc[i].message == message)
{
(*MainMessageProc[i].fun)(hwnd,message,wParam,lParam);
}
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
(2)
消息机制Windows 的消息系统是由3个部分组成的:
a)消息队列。Windows能够为所有的应用程序维护一个消息队列。应用程序必须从消息队列中获取消息,然后分派给某个窗口。
b)消息循环。通过这个循环机制应用程序从消息队列中检索消息,再把它分派给适当的窗口,然后继续从消息队列中检索下一条消息,再分派给适当的窗口,依次进行。
c)窗口过程。每个窗口都有一个窗口过程来接收传递给窗口的消息,它的任务就是获取消息然后响应它。窗口过程是一个回调函数;处理了一个消息后,它通常要返回一个值给Windows。
注意回调函数是程序中的一种函数,它是由 Windows 或外部模块调用的。
一个消息从产生到被一个窗口响应,其中有5个步骤:
a) 系统中发生了某个事件。
b) Windows 把这个事件翻译为消息,然后把它放到消息队列中。
c) 应用程序从消息队列中接收到这个消息,把它存放在 TMsg 记录中。
d) 应用程序把消息传递给一个适当的窗口的窗口过程。
e) 窗口过程响应这个消息并进行处理。
步骤c和d构成了应用程序的消息循环。
消息循环往往是Windows 应用程序的核心,因为消息循环使一个应用程序能够响应外部的事件。消息循环的任务就是从消息队列中检索消息,然后把消息传递给适当的窗口。
Windows 操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的。如果不理解 Windows 消息处理机制,肯定无法深入的理解 Windows 编程.