2010新年的头两周开发小故事

过完元旦到现在,两周了,在线版的导航软件从产品定义到现在,已经进入核心模块的设计了。
回想两周里,还是发生了很多有趣的小情节。下面一一道来吧。

 

1. 授权过期?
过完元旦刚上班,好几个同事都过来说,导航软件不能用了,提示授权过期。我一听,明白了,授权文件的期限到2009年12月31日
为止,更新一下授权文件即可。提交了新的授权文件之后,回想,才发现原来这个授权文件真的用的快一年了,2009年2月发布的。
呵呵,时间过的真的太快了,转眼一年过去了。
回过神来,我不由的想到授权期限的问题,冷不丁的到点了就不让用户使用了,似乎太过于草率。幸好这个版本的导航软件目前
只是发布了测试版,并没有正式提交给用户。需要修改,如何改呢?
首先授权文件必须要有,这是公司要求的,不能更改。授权到期了必须更新授权,这也是必须的。那么只能更改提醒方式了,想了
想,我决定添加两个功能,一是在软件的版本信息页面添加授权日期的显示,让用户可以查看的到。二是在使用的过程中,在距离
最后期限的最后一个月,每次启动导航软件时,会提示授权即将过期。
还有什么可以做的呢?


2. 框架搭建的一个额外小心得--PC和WM共用一份代码
本地版导航软件的框架是我搭建的,现在又要搭建在线版导航软件的框架,功能划分自是不用说。这次我做的调整是将PC和WM版本
共享一份代码。为什么会这样呢?原来总是习惯于将PC和WM两份代码分开处理(当然,PC版是开发WM版的辅助,为了调试的方便),先调试PC,然后通过比对更新至WM,是不错,但比对的时候难免会遗漏或者偏差,带来了不必要的麻烦。因此这次,我下定决心将PC和WM完全共享一份代码,两者之间的区别仅仅是工程管理文件上的区别。但为了达到这样的效果,在编写代码,需要采用WIN32_WCE的宏进行PC和WM的代码区分,带来了一定的代码量,但相比较而言,就算不了什么了。

 

在进行PC和WM融合的过程中,难免要正对代码进行调整,包括stdafx等文件,当我根据文件夹分门别类处理好时,进行编译,出错了,居然说找不到预编译头文件,这怎么可能呢?而且错误非常的多,显示是某个地方的设置出现了问题。于是先查项目设置,完全正确,这就奇怪了,因为代码肯定没有动过,只是将各自的位置做了调整。极为郁闷的上网查找,最后终于发现了问题所在。
问题出现在 stdafx.cpp 这个文件上,新建工程时,默认的有一个位置,同时也就一个默认的配置。但当你把这个文件移除,然后再加入,或者换了位置之后再加入,问题就出来了。
后来我还是根据网上的一位仁兄的提醒,比对了工程管理文件才发现玄机。

正常情况下,在vcproj文件中,stdafx的配置如下:
<File
 RelativePath="../naviapp/stdafx.cpp"
 >
 <FileConfiguration
  Name="Debug|Win32"
  >
  <Tool
   Name="VCCLCompilerTool"
   UsePrecompiledHeader="1"
  />
 </FileConfiguration>
 <FileConfiguration
  Name="Release|Win32"
  >
  <Tool
   Name="VCCLCompilerTool"
   UsePrecompiledHeader="1"
  />
 </FileConfiguration>
</File>

但如果你更新了位置重新添加stdafx.cpp之后,就会变为如下:
<File
 RelativePath="../naviapp/stdafx.cpp"
 >
</File>
缺少了预编译的头配置信息。这样编译就出问题了,只要你修改一下,把这几行添加上去,就完全如初,没有任何问题了。
对于WM版本,也是如此。
<File
 RelativePath="../naviapp/stdafx.cpp"
 >
 <FileConfiguration
  Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
  >
  <Tool
   Name="VCCLCompilerTool"
   UsePrecompiledHeader="1"
  />
 </FileConfiguration>
 <FileConfiguration
  Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
  >
  <Tool
   Name="VCCLCompilerTool"
   UsePrecompiledHeader="1"
  />
 </FileConfiguration>
</File>
真是很怪异的问题,难道是MS的有意为之,或是Bug?

 

 

3. 地图缩放的鼠标滚动支持
在PC版上通过鼠标的滚动实现地图的缩放,呵呵,效果很棒哦。
添加鼠标滚动消息的处理,代码如下:
    // PC版添加鼠标滚轮进行缩放操作
#ifndef _WIN32_WCE
    if ( m_FuncType == eFUNC_GUIDANCE_REAL || m_FuncType == eFUNC_GUIDANCE_SIMULATE )
    {
        return CATCHMSG;
    }
    short nzDelta = (short) HIWORD (wParam);
    if ( nzDelta == 120 )
    {
        m_lpMainMgr->MapZoomIn();
    }
    else if ( nzDelta == -120 )
    {
        m_lpMainMgr->MapZoomOut();
    }
#endif

 

 

4. 飞Q的网络绑定
原来用飞鸽,后来发现飞Q更好,于是换了,开始用着挺好,但后来不知道什么原因,经常出现找不到联系人,或者一刷新就都消失了。实在诡异。
后来才发现是网络捣鬼,每次只要我把WM手机机上电脑,就出问题,就是因为WM的ActiveSync会虚拟一个网卡,这样飞Q就无法判定你要绑定那个网卡了,
于是问题就出来了。后来发现,原来飞Q的设置里就专门有针对多网卡的机器需要手工指定IP或者MAC地址,哈哈,看来当初的设计者早就想到了这个问题,
只是我等所用不精,惭愧惭愧。

 


5. 开发学习Linux了
为了ACE的开发,我开始了Linux的学习,额外申请了一台电脑,专门安装的centOS的Linux的服务器版本,用于学习,这台机器通过我的主工作电脑代理上网,
当然,我的主工作电脑需要安装两块网卡。同时为了传输数据的方便,在Linux上安装了Samba,这样windows很方便的就能访问Linux,这工具太棒了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值