本文转载自: 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. 屏蔽掉上面的代码
当然,如果我们不需要在桌面上显示那些信息,可以把上面的代码注释掉。