介绍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()
不支持。