天天看点

WinCE开发常见问题汇总 (二)常规问题

 问:为什么我应该为Windows CE写软件? 答:PDA(个人数字助理)发展的非常迅速!2001年IDC研究并预测,每年掌上设备的市场增长将超过40%。 掌上设备将成为下一个巨大的企业计算处理平台。IDC还大胆的预言PDA在2001将超越PC出售,到达20千万台。 Windows CE正是为了这个,而快速的生长和发展起来的。微软的Windows CE系统在企业应用和开发方面是一个不错的选择,并且WINCE有很多的的合作伙伴,包括了应用软件和硬件设备。 如果你已具备任何Windows平台开发的经验, 那你可以很容易的进行Windows CE开发。如果是其他的平台,你必须重新学习新的开发工具和适用于这个平台的API,这还没有完,你的程序还将得不到微软和他的合作伙伴的支持。你可以利 用微软的强大市场能力和你的知识开始CE编程。 问:在Windows CE中的CE代表什么? 答:虽然微软宣称CE不代表任何特别的意思,但是对于CE有很多的流行说法,而且都很有趣。它代表消费者电子技术(Consumer Electronics)或者或紧凑的版本(Compact Edition),这显然是比较好的。也有很多的人因为CE的问题把它成做残废的版本(Crippled Edition) 还有一个是我比较喜欢的,货物售出,概不退换(Caveat Emptor)。 问:我想要学习进行Windows CE开发。我应该在哪儿开始? 答:你可以找到许多关于Windows CE开发的资源。 首先,你可以选择Windows CE新闻组: Microsoft.public.win32.programmer.wince Microsoft.public.vb.vbce Microsoft.public.windowsce Microsoft.public.vc.vcce Microsoft.public.ado.wince Microsoft.public.windowsce.developer.betas Microsoft.public.windowsce.embedded 其次,你可以检查www.deja.com(不知道连接是否有效)上的关于Windows CE开发的好的文档,这也是不错的一个Windows CE资源。 我最喜欢的是windows ce的邮件列表。它可能是从最纯粹的技术的角度讨论Windows CE的资源了,并且有很多的CE开发高手已经加入。它包含嵌入式应用开发各个方面。想要加入它,只需发送电子邮件到WindowsCE- [email protected] 你还可以找到一些书籍,也可以访问一些和Windows CE开发有关的网站。 最后,没有什么比实际经验更重要的了。你可以购买微软开发工具,或者NSBasic。试着创建一些应用程序。如果你有Windows开发经验,那么你将发 现为Windows CE开发仅仅有一点点的痛苦;-) 雷神:这个老外唠唠叨叨的说了一大堆,我在补上一条。访问 http://www.vchelp.net那里有关于VC/C++编程的许多优秀资源,当然它也包括了WINDOWS CE。 问:关于Windows CE开发有什么书? 答:下面是作者精心挑选出的几本书,很遗憾除了第一本,其他的国内好象都没有,如果你知道别忘了告诉大家一声。 Inside Windows CE – John Murray Programming Embedded Systems for Microsoft Windows Ce – Jeff McLeman Professional Visual Basic Windows CE Programming – Larry Roof Programming Windows CE – Douglas Boling Windows CE 2 Programming for Dummies – Nick Gratten Essential Windows CE Application Programming – Robert Burdick Windows CE Developers Handbook – Terence Goggin Windows CE from the Ground Up - Jean Louis Gareau (annabooks web site). Sams Teach Yourself Windows CE Programming in 24 Hours – Bsquare Windows Ce : Application Development – Keven Millsap, Marshall Brain 问:能否在推荐一些关于Windows CE开发的网站? 答:这有一些关于 CE 开发的站点: Microsoft’s Windows CE site – www.microsoft.com/windowsce 可以获得实例、SDK和一些工具。 Visual CE Developer Site - http://www.vcce.com/ 有大量关于Visual C++ for CE的一些信息. Visual Basic Developer Site - http://www.vbce.com/ 有大量关于Visual Basic for CE的一些信息.另外还提供一些Visual Basic for Windows CE开发的控件. 还有一些,我不在这里一一列出了,大家可以用GOOGLE搜出一串...... 问:什么事情是我在设计新的Windows CE应用程序以前需考虑的? 答:(希望没有错误) 1。 在你设计之前请了解一些要求和限制。 2。 为你的用户制造真正有帮助的产品-你应该是第一个使用着。 3. 记住,发布版本要有功能–采用轮询技术,减少串口资源的消耗。 4。 运用WM_HIBERNATE 5。 考虑因特网连通性。 6. 检查是否有GNU或可以移植的源码– 你的应用软件可能已经被写过了。 7. 记得,你最好不让你的应用程序只运行在Palm Size PC上(Windows CE 2.0– 2.11)。 8。 为你的应用程序写一份帮助文件 9. 将程序做成安装程序–使它可以很容易被安装。 10。在实际的设备上的测试。仿真器虽然好但是它不是真实的Windows CE设备。 11。别使用特立独行的方法,除非这样做能帮助它。 12。买一块以太网卡以便建立网络环境-它是物有所值的。 问:我想要使用Visual C++开发。 我需要什么? 答:使用Visual C++开发是非常好的选择,因为在任何CE平台上它都可以工作。 Visual C++ Toolkit for Windows CE 5.0这是Windows CE开发环境的一个旧的版本。它当然没有后出的VC6.0好,并且没有支持PSPC 1.2 SDK,以太网调试等等。但如果你想开发Windows CE1.0应用,那只好使用它。因为6.0并不支持WinCE1.0。 使用Visual C++ 5.0开发你需要下列工具: Visual C++ 5.0, Professional or Enterprise edition Visual C++ Toolkit for Windows CE 5.0 HPC or PSPC SDK,可免费从微软站点下载。 当前使用C/C++为Windows CE开发应用的开发环境是Visual C++ Toolkit for Windows CE 6.0。 使用Visual C++ 6.0开发你需要下列工具: Visual C++ 6.0, Professional or Enterprise edition Visual C++ Toolkit for Windows CE 6.0 Any of the CE SDK's, 可免费从微软网站下载。 问:还有那些Windows CE开发工具是可以选择的? 答:(雷神:有很多,现在有更多的选择) NSBasic – http://www.nsbasic.com/ BasicCE – www.cemonster.com/development.htm PocketC - http://www.orbworks.com/wince/index.html Python – http://www.python.org/ for general information, and http://starship.python.net/crew/mhammond/ce for the product. Waba – http://www.wabasoft.com/ Jeode - http://www.insignia.com/ Pocket Scheme - http://www.angrygraycat.com/scheme/pscheme.htm JSoftware - http://www.jsoftware.com/download/download.htm Dialect - http://www.aristar.com/DeveloperTools.html Transvirtual - http://www.transvirtual.com/ CrEme - http://www.nsicom.com/products/creme.htm Visual CE - http://www.syware.com/ River Run Software AppsBuilder - http://www.riverrun.com/appsbuilder/index.html 问:我怎样报告Windows CE开发工具的BUG或提出新的需求? 答:微软有一些有用的电子邮件地址: Windows CE开发工具需求建议: [email protected] Windows CE开发工具错误报告: [email protected] 问:哪里有SH3的指令集和反汇编程序? 答: http://www.datarescue.com/idawindowsce.htm 有Windows CE代码的反汇编程序。另一个反汇编程序地址: http://www.delosoft.com/ 问:在Windows CE应用程序中可以使用DCOM吗? 答:Windows CE 2.11以及更早的版本不包含DCOM实现- 那时候只有进程内服务被允许。然而,DCOM FOR CE的测试版(在9/99)出现,微软计划CE3.0将包括DCOM的实现。Intrinsyc公司实现了CE2的DCOM。虽然和微软的桌面DCOM不 太一样,但是它提供相似的功能。更多的信息访问: http://www.intrinsyc.com./ 问:Windows CE支持COM吗? 答:Windows CE仅仅支持进程内COM对象。有在Windows CE的下一个版本将扩充COM功能的说法。下面是关于CE的COM开发的一些参考: "How to Write and Use ActiveX Controls for Microsoft Windows CE" from the MSDN "The Tools You'll Need to Build Embedded Apps: Windows CE Toolkit for Visual C++ 6.0" from MSJ July 1999. There's a section called "Desktop ActiveX Controls". 上一个问题。 在CE平台上我已经使用ATL有一段时间了,除了在connection points上有一些小问题外,其他都工作的很好。在CEGadgets.com主页上可得到所有的CE下使用ATL写的控件。 问:如何把自己的图标加到task bar上面 ? 答:经常看到一些程序可以把自己的图标放到task bar上面,和那些系统图标并排是不是很cool呢? 其实做到一点很容易的,只要加入下面的代码: CString strClass = ::AfxRegisterWndClass(0); HWND hTaskBar = ::FindWindow(_T("HHTaskBar"), NULL); CWnd::CreateEx( 0, strClass, _T("MyIcon"), WS_CHILD|WS_VISIBLE, r.left, r.top, r.Width(), r.Height(), hTaskBar, 0, 0); 其原理是找到taskbar 窗口,然后以taskbar窗口为父窗口建一个你自己的图标窗口。 不过要注意,一些程序例如WisBar or Dashboard会覆盖taskbar,这样你的图标也不见了,如果你想让你的图标继续显示,就需要取得这些程序的窗口句柄,然后在上面建立自己的窗 口,原理是一样的。 问:如何取得当前window的hWnd? 答:这是一个很烦人的问题,不少函数都需要这个变量,结论其实简单: AfxGetApp()->GetMainWnd()->m_hWnd 问:在程序中打开和关闭PPC软键盘 ? 答:看到有不少人在问如何在程序中控制打开和关闭SIP(Soft Input Panel),其实这是一个简单问题, MSDN的解决方案是用: SHSipPreference(hWnd, SIP_UP); SHSipPreference(hWnd, SIP_DOWN); 但这需要一个hWnd参数,在Dialog base的程序中不好找. 其实还有一个更好的方法: 先 #include "SIPAPI.H" 然后就可以调用 SIPShowIM(SIPF_ON) SIPShowIM(SIPF_OFF) 来打开/关闭SIP了. 不过奇怪的是MSDN从未提到这个最简单的办法. 问:如何去掉PPC2002上的"智能最小化"按钮 ? 答:PPC2002在外观上的一个显著改进就是加了个"智能最小化"按钮,就是那个包着圈的X,一开始阿猫还以为它是关闭按钮:) (可为什么不设一个关闭按钮呢?) 如果因为某种原因你不想要它.可以加这么一句: ModifyStyle(0, WS_NONAVDONEBUTTON, SWP_NOSIZE); 问:如何建立一个非全屏的Dialog窗口? 答:不知什么原因,M$的PPC SDK中默认的Dialog是全屏的. 就是说 CNfsDlg dlg; dlg.DoModal(); 打开的Dialog是全屏的.我猜这是Microsoft想在狭窄的PPC屏幕上给大家提供一个更"广阔的"空间.但用惯了的Windows还颇有些不习 惯.如何变成非全屏窗口呢? 最简单的方法是在DoMoal前设置m_bFullScreen参数. CNfsDlg dlg; dlg.m_bFullScreen = FALSE; dlg.DoModal(); [em17]