Pocket PC Development FAQ
下面是对Pocket PC中经常性问题的回答。我认为新闻组中的问题适中,我通过电子邮件接受问题,还可以将问题发送给Microsoft Premier Support team。我每月更新一次列表,所以发送你的问题并且经常核对。
普通问题
我从那里可以下载到eMbedded Visual Tools?
你可以从Microsoft® eMbedded Visual Tools (EVT)找到下载。
如果你是MSDN全球订户,你也可以从MSDN全球下载部分下载这个工具。查找EVT。
使用EVT,我可以在Pocket PC上为Pocket PC开发吗?
使用EVT,你可以为Pocket PC开发,但是不能在Pocket PC上开发。eMbedded Visual Tools允许你在你的桌面PC上为Pocket PC开发。Pocket PC软件开发包(SDK)配套的一个模拟器也在你的PC上运行,因此你可以测试或调试你的程序,而不使用一个真正的Pocket PC.
我可以使用EVT为不是Pocket PC的其他目标平台开发吗?
EVT配套的有H/PC Pro 3.0 和 Palm-size PC 1.2设备的SDK。你也可以安装H/PC2000或者其他第三方OEM的自定义SDK。
当为Pocket PC开发的时候,我应该使用eMbedded Visual Tools还是Platform Builder?
一个简短的回答:eMbedded Visual Tools。Microsoft Windows® CE Platform Builder (PB)是提供给OEM和硬件开发厂商的工具包,用来创建使用Windows CE作为他们操作系统的设备。查看这个WEB服务器将会发现更多details about the difference between EVT and PB。
我从哪里可以找到最近Pocket PC logo需求?
VeriTest有最近的logo compliance技术手册,在its Web site。
我如何通过SafeArrays连接eMbedded Visual Basic 和 eMbedded Visual C++?
在MSDN中有一篇关于这个问题的很好的文章,HOW TO: Pass Arrays Between Visual Basic and C。他写的是Microsoft Visual Basic®和Microsoft Visual C++®的桌面版本,但是它不能很好的应用于嵌入式开发和移动设备开发中。
我如何在Pocket PC设置的连接部分,得到Control Panel程序?
请查看MSDN中的DOC: Selecting the Icon Group for a Control Panel Dialog Box。
我如何读到我Pocket PC的序列号?
你不能,真的。尽管Windows CE不支持唯一的序列号,Pocket PC OEM共同决定不支持这个特征。原因是费用:每个Pocket PC将不得不得到一个单独的Windows CE映像,包括序列号,这将需要额外的制造程序。
如果你需要单独的序列号,我推荐使用SanDisk, Kingston Technology或者IBM的CompactFlash™卡。CompactFlash卡有一个唯一的序列号,并且可以容易地读取。Chris Muench 和 Randolph Kath的《The Windows CE Technology Tutorial》的第11章详细地说明了方法。
eMbedded Visual C++的问题
为什么当我创建一个工程的时候,列表中的CPU比我能用到的Pocket PC目标多?
eMbedded Visual C++过去习惯于为所有的Windows CE设备和包括真正嵌入式设备的平台,开发应用程序。虽然Pocket PC通常只能使用StrongARM, MIPS和SH3处理器,一个工业HMI (human machine interface panel)或者一个气泵也许运行在其他九种被支持的CPU家族上。事实上,你为一个平台安装的SDK决定你应用程序的目标是什么CPU。Pocket PC SDK只能包含MIPS, StrongARM和SH3的库。
ADOCE的问题
有ADOCE 3.0的更新吗?
微软最近发布的版本Microsoft ActiveX® Data Objects for Windows CE (ADOCE) 3.1.
除了对BUG的修补,新版本也有一些速度方面的提高。
当我尝试使用ADOCE时,得到错误“ADOCE Resource DLL ‘\Windows\msdaer<Country>.DLL' is not installed on this device.”,这是什么意思?
这是ADOCE 3.0一个众所周知的问题。有两个方法:
1.在你的Pocket PC中,系统设置Regional Settings程序中,将国家设置为“English (United States)。这里装载的是英语资源DLL。
2.将你的Pocket PC更新为ADOCE 3.1 (看上面的连接)。如果不能发现国家指定版本,新版本将使用英语版本。
我如何在Pocket PC模拟器中得到一个Access database?
PC Access database format (.mdb)和Access format on the Pocket PC (.cdb)是不同的,并且这两者应用于Pocket PC模拟器上的格式是不同的。将一个Access数据库从Pocket PC上移动到开发环境中你必须首先拷贝Access文件到PC桌面上。通过拷贝过程,.cdb文件转换为.mdb文件。
然后,你需要写一个短小的转换程序,将一个.mdb文件拷贝到模拟器中。更多的信息,请看Move an Access Database into the Emulation.
为什么myRecordset.Find()方法不工作?
ADOCE通常支持Recordset.Find()方法,但是是依赖于OLEDB的底层支持。因为Pocket Access files (.cdb files)和对象存储不支持这个方法,对Find()的调用失败。如果你在Microsoft SQL Server 2000 for CE中使用这个方法,Find()方法将工作正常。
ADOCE的附加资源
清除一些共同的ADOCE record set错误:
http://www.microsoft.com/mobile/developer/tips/rsErrors.asp
加速你的ADO应用程序在Windows CE (ADOCE)中:
http://www.microsoft.com/mobile/pocketpc/tips/adoce.asp
介绍Microsoft eMbedded ADOCE V3.1:
http://msdn.microsoft.com/library/default.asp?URL=/library/wcedoc/adoce31/adowlcm.htm
使用Microsoft Windows CE 3.0 with ADOCE开发数据存取应用程序:
http://msdn.microsoft.com/library/default.asp?URL=/library/techart/adoce30.htm
创建移动Windows DNA应用程序,1-4部分:
http://www.microsoft.com/mobile/pocketpc/stepbystep/dnappart1.asp http://www.microsoft.com/mobile/pocketpc/stepbystep/dnappart2.asp http://www.microsoft.com/mobile/pocketpc/stepbystep/dnappart3.asp http://www.microsoft.com/mobile/pocketpc/stepbystep/dnappart4.asp
Microsoft XML Parser的问题
为什么当我使用XMLDocument.Load()函数时,我的设备挂起?XMLDocument对象的Load()函数需要一个Istream对象。下面的文章将告诉你如何使用XMLDocument.Load()方法ways to get XML into the parser.