Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333038
  • 博文数量: 97
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 636
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-12 22:41
文章分类

全部博文(97)

文章存档

2017年(8)

2015年(87)

2014年(2)

我的朋友

分类: 嵌入式

2015-06-13 12:01:42

本文转载自: http://blog.csdn.net/zmembeded/article/details/8059751

问题描述
----------------------------------------
WINCE在进入桌面后,我们的系统可以看到“Windows Embedded CE v6.00 (Build 3122 on Sept 22 2012 )”这些WINCE版本及编译时间的信息,
怎么去掉这些信息呢?我们先来看这部分信息是哪部分代码输出的,在WINCE600\PUBLIC\SHELL\OAK\HPC\CESHELL\UI\ desktopview.cpp文件的PaintBackground函数中有源码:

方法1:
----------------------------------------
去文件WINCE600\PUBLIC\SHELL\OAK\HPC\CESHELL\UI\desktopview.cpp中
在函数
void CDesktopView::PaintBackground(HDC hdc) const
里,注释掉下面这两行:
::wsprintf(wszVersion, L"Microsoft Windows CE v%d.%02d (Build %d on %s) ",
              VerInfo.dwMajorVersion, VerInfo.dwMinorVersion, VerInfo.dwBuildNumber, TEXT(__DATE__));
------------------------------------------------------------------------------------------------------------------------
方法2:
函数void CDesktopView::PaintBackground(HDC hdc) const 中有如下片段:
#ifndef SHIP_BUILD
   WCHAR wszVersion[ 256];
   OSVERSIONINFO VerInfo;
   VerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
   ::GetVersionEx(&VerInfo);
   ::wsprintf(wszVersion, L "Windows Embedded CE v%d.%02d (Build %d on %s) ",
              VerInfo.dwMajorVersion, VerInfo.dwMinorVersion, VerInfo.dwBuildNumber, TEXT(__DATE__));
   if (m_hbmpDesktop && !fTileBackgroundImage)   {
     rc.top = rcBlt.bottom + 5;
   }else{
     rc.top = rc.top + (rc.bottom - rc.top) / 2 - 8 ;
   }
   ::DrawText(hdc, wszVersion, - 1, &rc, DT_SINGLELINE | DT_CENTER | DT_TOP);
#endif


上面的代码就是如果没有定义SHIP_BUILD这个环境变量,就不会编译这部分代码,自然就不会再桌面上显示这些信息了,下面总结如何去除这些信息的办法:
1. 定义环境变量SHIP_BUILD
定义环境变量SHIP_BUILD,需要在WINCE6.0系统工程“property page -> build options”下面对“Enble build ship”打钩,如附件图所示:
这样就定义了环境变量SHIP_BUILD,从而就不编译上面的代码,也不会显示这些信息了。
需要注意的是: 使能SHIP_BUILD后,再进行sysgen操作,系统启动过程中将没有任何串口信息输出。 当然也可以选择使能 SHIP_BUILD后部分编译。


2.  改变编译上面代码的条件
因为我们需要系统可以输出调试信息,所以第1种办法就不太合适(不过倒是适合于编译发布的系统),我把上面代码的编译条件由#ifndef SHIP_BUILD改为#ifdef SHIP_BUILD,
然后到\WINCE600\PUBLIC\SHELL\OAK\HPC\CESHELL\UI目录下rebuild,然后选择clean sysgen,这样就可以保证串口调试信息的输出,也可以不再显示上面的信息。
编译public目录前请做好备份
3.       屏蔽掉上面的代码
当然,如果我们不需要在桌面上显示那些信息,可以把上面的代码注释掉。
阅读(1262) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~