WindowsCE和一般Win32-API之间的不同之处

来源:互联网 发布:合肥行知学校在哪 编辑:程序博客网 时间:2024/04/23 13:29

介绍WindowsCE和一般Win32-API之间的不同之处的文章很少,本篇文章就这个话题进行一下总结。
但这个文章并没有就所有的不同之处进行总结。

1、API函数

ANSI函数通常不支持,你需要自己实现它

键值传递支持的不好,你需要设置自己的键值表。

Pipe不支持。

没有当前目录概念,所有路径都是绝对路径。

缺少许多GDI函数,比如Arc(), Pie()等,还缺少Bitmap函数。

 

缺少SetTextAlign()

 

FillRect()
句柄(HBRUSH) (COLOR_WINDOW+1) 不能工作。ERROR_INVALID_HANDLE!

 

CreateWindow()
许多属性不支持,在MFC中不支持RichText,Edit控件有限制,一些owner-drawn成员不支持。

 

WaitForSingleObject()
使用interval,而不使用INFINITE

 

GlobalALloc()
在WCE211中不支持。

 

SetViewPortOrg()/SetWindowOrg()
没有实现。

 

CreateProcess()
很多参数不支持。

 

GetModuleHandle()
指向EXE-header的指针不在托管内存中。

 

VirtualQuery()
导致访问冲突。

 

ToUnicode()
不支持。

 

ToAscii()
不支持。

 

VkKeyScan()
不支持。

 

MapVirtualKeyW()
只有map type 2支持,Map-type 0返回0

 

SetCurrentDirectory()/GetCurrentDirectory()
不支持。

 

SetWindowLong()
设置外形功能在WinCE2.11 (tcl/tk)下不能工作。

 

SetParent()
在WinCE2.11 (tcl/tk)下不能工作。

 

SetMenu()
不支持。只有menubar支持。

 

TerminateProcess()
不支持,见exit().

 

GetSystemTime()
毫秒成员返回0.

 

FindFirstFile()/FindNextFile()
不返回"." 和 ".."

 

CreateFile()
PocketPC模拟器上,使用OPEN_EXISTING和不存在的目录却可以创建目录。

ROM文件不能打开。
在ROM中的文件、动态链接库都不能直接打开。

 

2、Winsock

 

getservbyname()
不支持

 

getsockopt()
RCV_BUFSIZE 返回 0 (在某些系统?)

 

3、Windows Messages

 

非客户端消息一般不支持。

 

WM_KEYDOWN
WinCE不能发送这个扫描码。Jornada 720可以发送,但是WinCE 3.0文档中没有说明。

 

WM_ENTERSIZEMOVE/WM_EXITSIZEMOVE
不支持。

 

WM_GETMINMAXINFO
不支持。

 

WM_NCHITTEST
不支持。

 

WM_MOUSEACTIVATE
不支持。

 

4、C运行库

 

C运行库中缺少很多功能。文件描述符I/O(File-descriptor io)和大多数时间(time)函数都缺少。一些字符串(string)函数也缺少。

 

WCE211不支持strdup()。

 

exit()
在WinCE 2.11下,总是不能中断当前程序,还会导致机器宕机。

 

fileno()
返回的是文件HANDLE,不是fd。

 

createthread()
不支持。