http://www.cnblogs.com/peterzb/archive/2009/08/09/1542451.html

Windows Mobile开发总结

Posted on 2009-08-09 22:01 peterzb 阅读(7932) 评论(21) 编辑 收藏

结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Windows Mobile开发进行总结一下. 说起Windows Mobile开发这事自己几乎是从零开始起步, 原先主要从事J2EE/Asp.Net下的Web应用开发, 从来没有接触过移动应用开发方面; 说零起步, 夸张点了, 好在至少对自己决定采用的开发工具Vs 2005还是有相当了解的, 从大学开始就用它开发Asp.Net/WinForm项目, 那就是说在开发工具上没有什么大问题了, 一个好的工具, 可以极大地提高我们的开发效率; 以及加上去年进入这家主要从事安防监控方面的公司, 虽然安排主要还是做Web开发, 但供Web监控使用的视频监控ActiveX控件也需由我来实现; 毕业之后一直使用的不是C#就是Java, 在大学里学得那点C++, 早就还给老师了. 针对自己这点可怜的C++开发基础, 对即将从事的手机上应用, 明显不足. 后来我花了2周时间去巩固C++, 主要学习Socket网络通信, 多线程处理等跟项目关联密切内容(主要是在C++博客上看别人的博文, 前几天把那段时间收藏的C++开发相关文章整理了一下, 见博文C++开发文章收藏); 如果你打算学习Win32来开发WM应用的话, Programming.Windows与Programming WinCE NET 3rd这2本书不错, 当然入门对照着MSDN看微软SDK带的例子学习更加是一个好途径, 基本上开发常见功能都有介绍, 如菜单,对话框全屏,TreeView控件等, 值得用心去体会. 如果是C#的话也类似, 边看书,边看文章,边看WebCast,基础要尽量打扎实。该项目平台是vs 2005 + WM 5.0 SDK(Pocket PC), 开发语言采用Win32(直接是C++ + SDK API), 因为公司就安排我一个人做手机客户端开发, 提供视频流的服务端由另外人来完成.

希望能够与有跟我有着类似经历或者有志于WM开发的XDJM多多交流, 下面我将从开发环境搭建, 模拟器使用, 具体应用开发等方面来加以总结. 我的弯路大家可以

避免, 我的经验大家可以分享。

手机视频监控系统

先允许我简单介绍一下什么是手机视频监控系统? 手机视频监控作为手机上多媒体/流媒体应用其中一种, 特别是在当前国内3大电信公司大力推行3G网络背景下, 其

在音视频应用方面占了较大比重, 也是3G下的一大亮点. 手机视频监控系统是通过用户的手机随时随地来观看远程监控点的视频。并允许用户进行远程云台控制, 本地

录像存储与回放, 监控场地发生意外情况时,通过活动视频向手机报警或短信, 彩信截图通知.

实际可应用的范围:

  - 商业店铺:商场店铺的监控,收银、货架、出入口监控

  - 居民住宅:室内远程图象报警、小区 / 大楼安全防范、物业的无人监控

  - 教育行业:幼儿园、小学校的教学评估,家长远程监控

  - 旅游行业:宾馆饭店的楼层管理、重点文物及景点的保护

更多内容可以看我前几个月的文章家庭视频监控,手机视频监控系统,手机视频监控系统需求,手机流媒体技术简介,手机视频监控系统小结.

Windows Mobile开发环境搭建

01. 开发环境搭建

开发环境搭建对一个初学者来说是一件很头疼麻烦的事情, 好在在DevDiv论坛上看到了一个讲述环境搭建与快速入门的视频教程与相关介绍帖子,  很值得一看! 另外一

个帖子Windows Mobile开发环境搭建也不错, 后来网友alalmn贡献了一份C++开发Mobile(手机系统)开发系列视频教程.

02. VS2005/VS 2008创建智能设备项目失败的解决方法

当初微软发布IE8的时候, 下载安装看看, 谁知道搞得VS 2005弹出一个窗口提示网页脚本错误, 创建智能设备项目失败. 好像IE7下也有这个问题, 我是立马把IE8干掉

了, 后来在网上发现别人找到了解决方法, 可以看这里. 更多开发过程中会碰到的疑难杂症, 希望我整理的Windows Mobile 开发系列文章收藏 - 疑难杂症对你有帮助.

03.  调试问题

在启动模拟器调试时候提示DLL无法加载,找不到指定的模块,以及遇调试中"系统找不到指定的路径"的问题, 应该怎么解决呢? 这类问题一般是由程序所需的DLL没有跟应用程序一起部署到手机上. 可以看看这2个帖子,求助,各位高人,DLL无法加载,找不到指定的模块,怎么解决啊!快崩溃了~ ,再遇调试中"系统找不到指定的路径"的问题(再解决) .

模拟器

04. 模拟器部署程序不成功, 无法启动程序

模拟器部署程序不成功,不外乎3个原因, 1跟问题3类似缺少dll, 2上次运行程序没有正常退出, 还在运行, 可以从开始-->设置-->系统-->内存下检查有没有相关进程在运行, 3共享冲突且文件无法删除. 开发时候, 不时模拟器上出一些怪异现象, 我几次发现调试socket时候, 程序死活连不上服务器, 程序出现错误异常报告, 不知道何原因. 发现模拟器问题。可以采用如下步骤:
软重启,如果启动后无效进入下一步(选择模拟器菜单Soft Reset一般情况下上述问题都可以在这里得到解决, 平时保存模拟器状态前先把手机上的网络链接断开)
硬重启,如果还是无效进入下一步
卸载images,再次安装。

05. 模拟器上网
最简单方式是通过ActiveSync来上网, 另外一种比较复杂需要安装一个Microsoft Virtual PC通过PC网卡上网, 具体可以看[原创]模拟器上网的两种方法, 有一步步操作截图说明, 很直观清晰, 堪称经典之著.

06. 模拟器上中文显示

Vs 2005默认安装是英文版的模拟器, 在其上面, 中文不是显示成□或者就是?, 甚至就是空白, 在界面上啥都没有显示出来; 这个问题你可以安装中文版的模拟器来解决, WM5安装Windows Mobile 5.0 Emulator Images for Pocket PC - CHS.msi, 如果你是采用WM6开发的话安装Windows Mobile 6 Professional Images (CHS).msi, 至于相关模拟器下载可以参考文章Windows Mobile 开发系列文章收藏 - Device Emulator.

UI等具体实现

07. 全屏窗体实现

在实现全屏窗体时候经常会碰到如何隐藏mobile默认最下方的bar条, 输入法又突然冒出来; 实际上要实现全屏, 一般情况下采用SHFullScreen + MoveWindow +

WM_SETTINGCHANGE, 如果你要考虑一些更加多的细节, 下面这个帖子有可能对你有帮助, 关于Mobile的全屏实现的一点心得. 值得一提的是在网上同时看到1篇

文章, 可以说是讲述相反问题, 八股文的”实现真正的非全屏窗口和自定义消息对话框”很不错.

08. 如何去掉窗体上的关闭按钮?

SHDoneButton(hWnd,SHDB_HIDE);
SetWindowLong(hWnd,GWL_STYLE,WS_NONAVDONEBUTTON );
同时进行一下基础知识扫盲, PPC上窗体的关闭与最小化, 图来自黎波老师的博客文章. 在默认情况下,我们新建的窗体运行时屏幕右上角显示一个×按钮,
按照我们使用 Windows 的习惯,应该是用来关闭窗体。其实不是,它只是最小化窗体,并没有关闭。如果这个窗体是一个应用程序的主窗体,那么该程序并
没有退出,而是隐藏了。可以通过重新运行该程序的 exe 文件来恢复显示程序的运行界面或者到运行程序列表中进行激活显示。

09. 关于SIP开关后对话框的显示问题

也就是怎样实现软键盘打开, 对话框自动适应? 我们在开发过程中也会碰到, 如果对窗体中控件位置计算不正确, 会出现当输入法打开时把窗体上的编辑框给档住了,怎样实现输入法打开对话框自动上移? 可以响应WM_SETTINGCHANGE消息,通过SHSipInfo函数去得到输入法面板参数和桌面可视区域参数,然后配置你的对话框。

SIPINFO si  =  {0};  
si.cbSize   =  sizeof(si);
SHSipInfo(SPI_GETSIPINFO, 0, &si, 0);
BOOL bShow = si.fdwFlags&SIPF_ON;  // 如果bShow为TRUE,则软键盘显示,否则隐藏;使用si.rcSipRect和si.rcVisibleDesktop来实现你的需求。

10. WM手机默认中文编码是什么?

默认编码是Unicode, 所有的WM手机都是UNICODE的,  且SP平台和PPC都一样! 很多跟我一样刚接触WM开发的人都会碰到一个问题, 为什么同样的代码在VC6开发

的应用程序中没有问题, 但把相关代码复制到Windows Mobile上运行就出现如此多的编译错误, 如error C2664: 'CWnd::MessageBoxW' : cannot convert

parameter 1 from 'char [100]' to 'LPCTSTR'. 都是没有考虑到这一点(编码问题), 需要使用提供的字符串相关的API与函数加以处理. 字符串处理函数可以看这篇

文章WinCE下非常有用的字符串操作函数.

下面简单介绍Unicode C-Runtime 转换函数

Windows Mobile开发总结 01相关推荐

  1. 30 Days of .NET [Windows Mobile Applications] - Day 01: Minutes to Midnight Countdown(午夜倒数器)...

    得到原作者 Chris Craft 的同意,本人可以翻译他的系列文章 30 Days of .NET [Windows Mobile Applications]并在博客园里发表.这是一个十分趣味性很高 ...

  2. 学习Windows Mobile开发系列笔记(win32基本程序框架)

    一直对Windows Mobile开发很有兴趣.去年已经做过一个这方面的项目了,虽然自己看了很多资料,但是没有系统的学习过.现在应该还只是个入门者吧. 现在想系统的学习一番,我决定把Windows M ...

  3. Windows Mobile开发总结

    结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Windows Mobile开发进行总结一下. 说起Windows Mobile开发这事自己几乎是从零开始起步, 原先主要从事J2EE/As ...

  4. Windows Mobile 开发总结

     转载自:http://www.cnblogs.com/peterzb/archive/2009/08/09/1542451.html 结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Wi ...

  5. Windows Mobile开发总结 (转帖)

    结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Windows Mobile开发进行总结一下. 说起Windows Mobile开发这事自己几乎是从零开始起步, 原先主要从事J2EE/As ...

  6. Windows Mobile 开发系列文章收藏 - 讨论篇

    关注Windows Mobile 应用开发, 探讨移动应用未来发展方向, 未来的手机又会是一个什么样子呢?  Windows Mobile 未来会发展成何种高度? 这些方面都值得我们去思考关注, 想了 ...

  7. Windows Mobile 开发工具和资源

    经常有朋友想学习 Windows Mobile 开发,体验移动开发的乐趣,但不知道从哪里下载各种开发工具和学习资料.于是我整理了一个列表,里面包含了各个版本的 Windows Mobile SDK, ...

  8. windows mobile开发循序渐进(4)移动应用程序的数据存储之本地数据存储第二篇

    之所以分解来写,是因为在写的过程中会有些穿插的工作,希望能够尽量写的更细节一些. 上篇说的是本地存储的XML和DataSet之间的交互,现在我们来看看windows mobile 是如何与数据库进行交 ...

  9. 转 Windows Mobile 开发工具和资源 黎波

    经常有朋友想学习 Windows Mobile 开发,体验移动开发的乐趣,但不知道从哪里下载各种开发工具和学习资料.于是我整理了一个列表,里面包含了各个版本的 Windows Mobile SDK, ...

最新文章

  1. Swift 中的内存管理详解
  2. 各计算机语言之父,四大编程语言之父
  3. SerfJ REST
  4. 使用Python自己实现简单的数据可视化
  5. 听说你想去大厂看妹子,带你看看美团后端开发实习岗详细面经
  6. 一个Lex/Yacc完整的示例(可使用C++)
  7. 从 0 搭建一个工业级推荐系统
  8. postgresql数据库的 to_date 和 to_timestamp 将 字符串转换为时间格式
  9. 几个常用的Oracle函数及实例运用
  10. linux中pstree命令的含义,pstree命令--Linux命令应用大词典729个命令解读
  11. Ubuntu下安装 Mysql
  12. 好好学习努力工作,要工作也要生活—2016总结,2017规划
  13. 无监督特征选择算法综述
  14. Ant Design学习——TimePicker
  15. 韩国服务器性能排行榜,2019韩国云服务器排名
  16. java mac转unix_管理Java类路径(UNIX和Mac OS X)
  17. 城市大脑与超级智能城市建设规范研究
  18. 字节跳动-后端开发岗最新春招面经分享,四面拿下,有惊无险
  19. asp和asp.net有什么区别?
  20. TCP/IP协议分析实验

热门文章

  1. php直销二叉树,PHP二叉树自动排位算法
  2. 量化交易平台有什么限制吗?
  3. mysql .frm 损坏_mysql innodb数据库损坏导致无法启动
  4. uthash使用示例
  5. 移动机器人里程计校准的方法
  6. YOLOv5(v6.1)解析(四)超参数进化
  7. C++中的构造和解析
  8. ffmpeg 直播流截图
  9. 机器学习与数据挖掘--编程实现BP算法
  10. 基于2D SDF的体积字实现