<?xml version="1.0" encoding="GB2312"?>  
<rss version="2.0" 
xmlns:dc="http://purl.org/dc/elements/1.1/" 
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
xmlns:admin="http://webns.net/mvcb/" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
  
<channel> 
<title><![CDATA[^_^漂泊浪子^_^]]></title> 
<link>http://cww0403.bokee.com/index.html</link> 
<description><![CDATA[<meta name="verify-v1" content="/F4mJI3RW7SX6uUcSMMKkHmXEwBsTgEo3q5eZ0TPuUM=" /> 您好！来自<script src="http://www.cz88.net/ip/ipcheck.aspx"></script>的朋友<br><marquee scrollamount="1" direction="up" height="80">等---因为过程而美丽<br/>待---因为期望而永恒<br/>——漂泊浪子<br/>本站网络实名 漂泊浪子</marquee>]]></description> 
<dc:language>zh-cn</dc:language> 
<dc:creator>cww0403@163.com</dc:creator> 
<dc:date>2008-08-15T23:41:33Z</dc:date> 
<admin:generatorAgent rdf:resource="http://blog.bokee.com.com" /> 

<item> 
<title><![CDATA[C++字符串完全指引之一 —— Win32 字符编码]]></title> 
<link>http://cww0403.bokee.com/6783323.html</link> 
<description><![CDATA[<table cellspacing="0" cellpadding="0" width="100%" border="0"><tbody><tr><td><p align="center"><b>C++字符串完全指引之一 —— Win32 字符编码<br /><br /></b><br />原著：Michael Dunn<br /><br />翻译：<a href="mailto:cjsun@insun.hit.edu.cn">Chengjie Sun</a></p><p><br /><br />原文出处：<font color="#000000" size="2"><a href="http://www.codeproject.com/string/cppstringguide1.asp" target="_blank">CodeProject：The Complete Guide to C++ Strings, Part I</a></font><br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /> <b>引言</b><br /><br />　　毫无疑问，我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型，还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的，展示一些简单的用法，并告诉您在必要时，如何实现各种字符串类型之间的转换。<br />　　在第一部分，我们将介绍3种字符编码类型。了解各种编码模式的工作方式是很重要的事情。即使你已经知道一个字符串是一个字符数组，你也应该阅读本部分。一旦你了解了这些，你将对各种字符串类型之间的关系有一个清楚地了解。<br />　　在第二部分，我们将单独讲述string类，怎样使用它及实现他们相互之间的转换。<br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /> <b>字符基础 -- ASCII, DBCS, Unicode</b><br /><br />　　所有的 string 类都是以C-style字符串为基础的。C-style 字符串是字符数组。所以我们先介绍字符类型。这里有3种编码模式对应3种字符类型。第一种编码类型是单子节字符集（single-byte character set or SBCS）。在这种编码模式下，所有的字符都只用一个字节表示。ASCII是SBCS。一个字节表示的0用来标志SBCS字符串的结束。<br />　　第二种编码模式是多字节字符集（multi-byte character set or MBCS）。一个MBCS编码包含一些一个字节长的字符，而另一些字符大于一个字节的长度。用在Windows里的MBCS包含两种字符类型，单字节字符（single-byte characters）和双字节字符（double-byte characters）。由于Windows里使用的多字节字符绝大部分是两个字节长，所以MBCS常被用DBCS代替。<br />　　在DBCS编码模式中，一些特定的值被保留用来表明他们是双字节字符的一部分。例如，在Shift-JIS编码中（一个常用的日文编码模式），0x81-0x9f之间和 0xe0-oxfc之间的值表示&amp;quot;这是一个双字节字符，下一个子节是这个字符的一部分。&amp;quot;这样的值被称作&amp;quot;leading bytes&amp;quot;,他们都大于0x7f。跟随在一个leading byte子节后面的字节被称作&amp;quot;trail byte&amp;quot;。在DBCS中，trail byte可以是任意非0值。像SBCS一样，DBCS字符串的结束标志也是一个单字节表示的0。<br />　　第三种编码模式是Unicode。Unicode是一种所有的字符都使用两个字节编码的编码模式。Unicode字符有时也被称作宽字符，因为它比单子节字符宽（使用了更多的存储空间）。注意，Unicode不能被看作MBCS。MBCS的独特之处在于它的字符使用不同长度的字节编码。Unicode字符串使用两个字节表示的0作为它的结束标志。<br />　　单字节字符包含拉丁文字母表，accented characters及ASCII标准和DOS操作系统定义的图形字符。双字节字符被用来表示东亚及中东的语言。Unicode被用在COM及Windows NT操作系统内部。<br />　　你一定已经很熟悉单字节字符。当你使用char时，你处理的是单字节字符。双字节字符也用char类型来进行操作（这是我们将会看到的关于双子节字符的很多奇怪的地方之一）。Unicode字符用wchar_t来表示。Unicode字符和字符串常量用前缀L来表示。例如：</p><pre>wchar_t wch = L''1''; // 2 bytes, 0x0031
wchar_t* wsz = L&amp;quot;Hello&amp;quot;; // 12 bytes, 6 wide characters</pre><p><img src="http://www.vckbase.com/document/image/paragraph.gif" /> <b>字符在内存中是怎样存储的</b><br /><br />　　单字节字符串：每个字符占一个字节按顺序依次存储，最后以单字节表示的0结束。例如。&amp;quot;Bob&amp;quot;的存贮形式如下：</p><table id="AutoNumber1" style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="26%" border="1"><tbody><tr><td align="center" width="25%">42</td><td align="center" width="25%"><font color="#990000">6F</font></td><td align="center" width="25%">62</td><td align="center" width="25%">00</td></tr><tr><td align="center" width="25%"><font color="#990000">B</font></td><td align="center" width="25%"><font color="#990000">o</font></td><td align="center" width="25%"><font color="#990000">b</font></td><td align="center" width="25%"><font color="#990000">BOS</font></td></tr></tbody></table><p>Unicode的存储形式，L&amp;quot;Bob&amp;quot;</p><table id="AutoNumber2" style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="42%" border="1"><tbody><tr><td align="center" width="25%">42 00 </td><td align="center" width="25%"><font color="#990000">6F</font> 00</td><td align="center" width="25%">62 00</td><td align="center" width="25%">00 00</td></tr><tr><td align="center" width="25%"><font color="#990000">B</font></td><td align="center" width="25%"><font color="#990000">o</font></td><td align="center" width="25%"><font color="#990000">b</font></td><td align="center" width="25%"><font color="#990000">BOS</font></td></tr></tbody></table><p>使用两个字节表示的0来做结束标志。<br /><br />　　一眼看上去，DBCS 字符串很像 SBCS 字符串，但是我们一会儿将看到 DBCS 字符串的微妙之处，它使得使用字符串操作函数和永字符指针遍历一个字符串时会产生预料之外的结果。字符串&amp;quot; &amp;quot; (&amp;quot;nihongo&amp;quot;)在内存中的存储形式如下（LB和TB分别用来表示 leading byte 和 trail byte）</p><table id="AutoNumber3" style="BORDER-COLLAPSE: collapse" bordercolor="#111111" height="52" cellspacing="0" cellpadding="0" width="62%" border="1"><tbody><tr><td align="center" width="25%" height="20">93 <font color="#990000">FA</font></td><td align="center" width="25%" height="20">96 <font color="#990000">7B</font></td><td align="center" width="25%" height="20"><font color="#990000">8C EA</font></td><td align="center" width="25%" height="20">00</td></tr><tr><td align="center" width="25%" height="20"><font color="#990000">LB TB</font></td><td align="center" width="25%" height="20"><font color="#990000">LB TB</font></td><td align="center" width="25%" height="20"><font color="#990000">LB TB</font></td><td align="center" width="25%" height="20"><font color="#990000">EOS</font></td></tr><tr><td align="center" width="25%" height="20"><img height="13" src="http://www.vckbase.com/document/journal/vckbase30/images/ri.gif" width="10" border="0" /></td><td align="center" width="25%" height="20"><img height="13" src="http://www.vckbase.com/document/journal/vckbase30/images/ben.gif" width="13" border="0" /></td><td align="center" width="25%" height="20"><img height="13" src="http://www.vckbase.com/document/journal/vckbase30/images/yu.gif" width="13" border="0" /></td><td align="center" width="25%" height="20"><font color="#990000">EOS</font></td></tr></tbody></table><p>值得注意的是，&amp;quot;ni&amp;quot;的值不能被解释成WORD型值0xfa93，而应该看作两个值93和fa以这种顺序被作为&amp;quot;ni&amp;quot;的编码。<br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /> <b>使用字符串处理函数</b><br /><br />　　我们都已经见过C语言中的字符串函数，strcpy(), sprintf(), atoll()等。这些字符串只应该用来处理单字节字符字符串。标准库也提供了仅适用于Unicode类型字符串的函数，比如wcscpy(), swprintf(), wtol()等。<br />　　微软还在它的CRT(C runtime library)中增加了操作DBCS字符串的版本。Str***()函数都有对应名字的DBCS版本_mbs***()。如果你料到可能会遇到DBCS字符串（如果你的软件会被安装在使用DBCS编码的国家，如中国，日本等，你就可能会），你应该使用_mbs***()函数，因为他们也可以处理SBCS字符串。（一个DBCS字符串也可能含有单字节字符，这就是为什么_mbs***()函数也能处理SBCS字符串的原因）<br />　　让我们来看一个典型的字符串来阐明为什么需要不同版本的字符串处理函数。我们还是使用前面的Unicode字符串 L&amp;quot;Bob&amp;quot;：</p><table id="AutoNumber4" style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="42%" border="1"><tbody><tr><td align="center" width="25%">42 00 </td><td align="center" width="25%"><font color="#990000">6F</font> 00</td><td align="center" width="25%">62 00</td><td align="center" width="25%">00 00</td></tr><tr><td align="center" width="25%"><font color="#990000">B</font></td><td align="center" width="25%"><font color="#990000">o</font></td><td align="center" width="25%"><font color="#990000">b</font></td><td align="center" width="25%"><font color="#990000">BOS</font></td></tr></tbody></table><p>　　因为x86CPU是little-endian，值0x0042在内存中的存储形式是42 00。你能看出如果这个字符串被传给strlen()函数会出现什么问题吗？它将先看到第一个字节42，然后是00，而00是字符串结束的标志，于是strlen()将会返回1。如果把&amp;quot;Bob&amp;quot;传给wcslen()，将会得出更坏的结果。wcslen()将会先看到0x6f42，然后是0x0062，然后一直读到你的缓冲区的末尾，直到发现00 00结束标志或者引起了GPF。<br />　　到目前为止，我们已经讨论了str***()和wcs***()的用法及它们之间的区别。Str***()和_mbs**()之间的有区别区别呢？明白他们之间的区别，对于采用正确的方法来遍历DBCS字符串是很重要的。下面，我们将先介绍字符串的遍历，然后回到str***()与_mbs***()之间的区别这个问题上来。<br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /> <b>正确的遍历和索引字符串</b><br /><br />　　因为我们中大多数人都是用着SBCS字符串成长的，所以我们在遍历字符串时，常常使用指针的++-和-操作。我们也使用数组下标的表示形式来操作字符串中的字符。这两种方式是用于SBCS和Unicode字符串，因为它们中的字符有着相同的宽度，编译器能正确的返回我们需要的字符。<br />　　然而，当碰到DBCS字符串时，我们必须抛弃这些习惯。这里有使用指针遍历DBCS字符串时的两条规则。违背了这两条规则，你的程序就会存在DBCS有关的bugs。</p><dir><li>1．在前向遍历时，不要使用++操作，除非你每次都检查lead byte； </li><li>2．永远不要使用-操作进行后向遍历。 </li></dir><p>　　我们先来阐述规则2，因为找到一个违背它的真实的实例代码是很容易的。假设你有一个程序在你自己的目录里保存了一个设置文件，你把安装目录保存在注册表中。在运行时，你从注册表中读取安装目录，然后合成配置文件名，接着读取该文件。假设，你的安装目录是C:\Program Files\MyCoolApp，那么你合成的文件名应该是C:\Program Files\MyCoolApp\config.bin。当你进行测试时，你发现程序运行正常。<br />　　现在，想象你合成文件名的代码可能是这样的：</p><pre>bool GetConfigFileName ( char* pszName, size_t nBuffSize )
{
    char szConfigFilename[MAX_PATH];
 
    // Read install dir from registry... we''ll assume it succeeds.
 
    // Add on a backslash if it wasn''t present in the registry value.
    // First, get a pointer to the terminating zero.
    char* pLastChar = strchr ( szConfigFilename, ''\0'' );
 
    // Now move it back one character.
    pLastChar--;  
 
    if ( *pLastChar != ''\\'' )
        strcat ( szConfigFilename, &amp;quot;\\&amp;quot; );
 
    // Add on the name of the config file.
    strcat ( szConfigFilename, &amp;quot;config.bin&amp;quot; );
 
    // If the caller''s buffer is big enough, return the filename.
    if ( strlen ( szConfigFilename ) &amp;gt;= nBuffSize )
        return false;
    else
        {
        strcpy ( pszName, szConfigFilename );
        return true;
        }
}      </pre>　　这是一段很健壮的代码，然而在遇到 DBCS 字符时它将会出错。让我们来看看为什么。假设一个日本用户使用了你的程序，把它安装在 C:\<img height="13" src="http://www.vckbase.com/document/journal/vckbase30/images/youkoso.gif" width="35" border="0" />。下面是这个名字在内存中的存储形式：<br />　 <table id="AutoNumber5" style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="55%" border="1"><tbody><tr><td align="center" width="12%">43</td><td align="center" width="12%"><font color="#990000">3A</font></td><td align="center" width="12%"><font color="#0000ff">5C</font></td><td align="center" width="12%">83 88</td><td align="center" width="13%">83 45</td><td align="center" width="13%">83 52</td><td align="center" width="13%">83 <font color="#0000ff">5C</font></td><td align="center" width="13%">00</td></tr><tr><td align="center" width="12%">　</td><td align="center" width="12%">　</td><td align="center" width="12%">　</td><td align="center" width="12%"><font color="#990000">LB TB </font></td><td align="center" width="13%"><font color="#990000">LB TB </font></td><td align="center" width="13%"><font color="#990000">LB TB </font></td><td align="center" width="13%"><font color="#990000">LB TB </font></td><td align="center" width="13%">　</td></tr><tr><td align="center" width="12%">C</td><td align="center" width="12%">:</td><td align="center" width="12%">\</td><td align="center" width="12%"><img height="11" src="http://www.vckbase.com/document/journal/vckbase30/images/yo.gif" width="9" border="0" /></td><td align="center" width="13%"><img height="13" src="http://www.vckbase.com/document/journal/vckbase30/images/u.gif" width="10" border="0" /></td><td align="center" width="13%"><img height="11" src="http://www.vckbase.com/document/journal/vckbase30/images/ko.gif" width="9" border="0" /></td><td align="center" width="13%"><img height="12" src="http://www.vckbase.com/document/journal/vckbase30/images/so.gif" width="10" border="0" /></td><td align="center" width="13%"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: #990000; FONT-FAMILY: Courier New">EOS</span></td></tr></tbody></table><p>　　当使用 GetConfigFileName() 检查尾部的''\\''时，它寻找安装目录名中最后的非0字节，看它是等于''\\''的，所以没有重新增加一个''\\''。结果是代码返回了错误的文件名。<br />　　哪里出错了呢？看看上面两个被用蓝色高量显示的字节。斜杠''\\''的值是0x5c。'' ''的值是83 5c。上面的代码错误的读取了一个 trail byte，把它当作了一个字符。<br />　　正确的后向遍历方法是使用能够识别DBCS字符的函数，使指针移动正确的字节数。下面是正确的代码。（指针移动的地方用红色标明） </p><pre>bool FixedGetConfigFileName ( char* pszName, size_t nBuffSize )
{
    char szConfigFilename[MAX_PATH];
 
    // Read install dir from registry... we''ll assume it succeeds.
 
    // Add on a backslash if it wasn''t present in the registry value.
    // First, get a pointer to the terminating zero.
    char* pLastChar = _mbschr ( szConfigFilename, ''\0'' );
 
    // Now move it back one double-byte character.
  <font color="#ff0000">  pLastChar = CharPrev ( szConfigFilename, pLastChar );</font>
 
    if ( *pLastChar != ''\\'' )
        _mbscat ( szConfigFilename, &amp;quot;\\&amp;quot; );
 
    // Add on the name of the config file.
    _mbscat ( szConfigFilename, &amp;quot;config.bin&amp;quot; );

     // If the caller''s buffer is big enough, return the filename.
    if ( _mbslen ( szInstallDir ) &amp;gt;= nBuffSize )
        return false;
    else
        {
        _mbscpy ( pszName, szConfigFilename );
        return true;
        }
}
</pre>　　上面的函数使用CharPrev() API使pLastChar向后移动一个字符，这个字符可能是两个字节长。在这个版本里，if条件正常工作，因为lead byte永远不会等于0x5c。<br />　　让我们来想象一个违背规则1的场合。例如，你可能要检测一个用户输入的文件名是否多次出现了'':''。如果，你使用++操作来遍历字符串，而不是使用CharNext()，你可能会发出不正确的错误警告如果恰巧有一个trail byte它的值的等于'':''的值。<br />与规则2相关的关于字符串索引的规则：<pre>2a. 永远不要使用减法去得到一个字符串的索引。</pre><p>违背这条规则的代码和违背规则2的代码很相似。例如，</p><pre>char* pLastChar = &amp;amp;szConfigFilename [strlen(szConfigFilename) - 1];</pre><p>这和向后移动一个指针是同样的效果。<br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /><b> 回到关于str***()和_mbs***()的区别</b><br /><br />　　现在，我们应该很清楚为什么_mbs***()函数是必需的。Str***()函数根本不考虑DBCS字符，而_mbs***()考虑。如果，你调用strrchr(&amp;quot;C:\\ &amp;quot;, ''\\'')，返回结果可能是错误的，然而_mbsrchr()将会认出最后的双字节字符，返回一个指向真的''\\''的指针。<br />　　关于字符串函数的最后一点：str***()和_mbs***()函数认为字符串的长度都是以char来计算的。所以，如果一个字符串包含3个双字节字符，_mbslen()将会返回6。Unicode函数返回的长度是按wchar_t来计算的。例如，wcslen(L&amp;quot;Bob&amp;quot;)返回3。<br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /><b> Win32 API中的MBCS和Unicode</b><br /><br />两组 APIs： <br />　　尽管你也许从来没有注意过，Win32中的每个与字符串相关的API和message都有两个版本。一个版本接受MBCS字符串，另一个接受Unicode字符串。例如，根本没有SetWindowText()这个API，相反，有SetWindowTextA()和SetWindowTextW()。后缀A表明这是MBCS函数，后缀W表示这是Unicode版本的函数。<br />　　当你 build 一个 Windows 程序，你可以选择是用 MBCS 或者 Unicode APIs。如果，你曾经用过VC向导并且没有改过预处理的设置，那表明你用的是MBCS版本。那么，既然没有 SetWindowText() API，我们为什么可以使用它呢？winuser.h头文件包含了一些宏，例如： </p><pre>BOOL WINAPI SetWindowTextA ( HWND hWnd, LPCSTR lpString );
BOOL WINAPI SetWindowTextW ( HWND hWnd, LPCWSTR lpString );
 
#ifdef UNICODE
#define SetWindowText  SetWindowTextW
#else
#define SetWindowText  SetWindowTextA
#endif      </pre>当使用MBCS APIs来build程序时，UNICODE没有被定义，所以预处理器看到：<pre>#define SetWindowText SetWindowTextA</pre><p>　　这个宏定义把所有对SetWindowText的调用都转换成真正的API函数SetWindowTextA。（当然，你可以直接调用SetWindowTextA() 或者 SetWindowTextW()，虽然你不必那么做。）<br />　　所以，如果你想把默认使用的API函数变成Unicode版的，你可以在预处理器设置中，把_MBCS从预定义的宏列表中删除，然后添加UNICODE和_UNICODE。(你需要两个都定义，因为不同的头文件可能使用不同的宏。) 然而，如果你用char来定义你的字符串，你将会陷入一个尴尬的境地。考虑下面的代码：</p><pre>HWND hwnd = GetSomeWindowHandle();
char szNewText[] = &amp;quot;we love Bob!&amp;quot;;
SetWindowText ( hwnd, szNewText );</pre><p>在预处理器把SetWindowText用SetWindowTextW来替换后，代码变成：</p><pre>HWND hwnd = GetSomeWindowHandle();
char szNewText[] = &amp;quot;we love Bob!&amp;quot;;
SetWindowTextW ( hwnd, szNewText );</pre><p>　　看到问题了吗？我们把单字节字符串传给了一个以Unicode字符串做参数的函数。解决这个问题的第一个方案是使用 #ifdef 来包含字符串变量的定义：</p><pre>HWND hwnd = GetSomeWindowHandle();
#ifdef UNICODE
wchar_t szNewText[] = L&amp;quot;we love Bob!&amp;quot;;
#else
char szNewText[] = &amp;quot;we love Bob!&amp;quot;;
#endif
SetWindowText ( hwnd, szNewText );</pre><p>你可能已经感受到了这样做将会使你多么的头疼。完美的解决方案是使用TCHAR.<br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /><b> 使用TCHAR</b><br /><br />　　TCHAR是一种字符串类型，它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码，不需要使用繁琐的宏定义来包含你的代码。TCHAR的定义如下：</p><pre>#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif</pre><p>所以用MBCS来build时，TCHAR是char，使用UNICODE时，TCHAR是wchar_t。还有一个宏来处理定义Unicode字符串常量时所需的L前缀。</p><pre>#ifdef UNICODE
#define _T(x) L##x
#else
#define _T(x) x
#endif</pre><p>　　##是一个预处理操作符，它可以把两个参数连在一起。如果你的代码中需要字符串常量，在它前面加上_T宏。如果你使用Unicode来build，它会在字符串常量前加上L前缀。</p><pre>TCHAR szNewText[] = _T(&amp;quot;we love Bob!&amp;quot;);</pre><p>　　像是用宏来隐藏SetWindowTextA/W的细节一样，还有很多可以供你使用的宏来实现str***()和_mbs***()等字符串函数。例如，你可以使用_tcsrchr宏来替换strrchr()、_mbsrchr()和wcsrchr()。_tcsrchr根据你预定义的宏是_MBCS还是UNICODE来扩展成正确的函数，就像SetWindowText所作的一样。<br />　　不仅str***()函数有TCHAR宏。其他的函数如， _stprintf（代替sprinft()和swprintf()）,_tfopen（代替fopen()和_wfopen()）。 MSDN中&amp;quot;Generic-Text Routine Mappings.&amp;quot;标题下有完整的宏列表。<br /><br /><img src="http://www.vckbase.com/document/image/paragraph.gif" /><b> 字符串和TCHAR typedefs</b><br /><br />　　由于Win32 API文档的函数列表使用函数的常用名字（例如，&amp;quot;SetWindowText&amp;quot;），所有的字符串都是用TCHAR来定义的。（除了XP中引入的只适用于Unicode的API）。下面列出一些常用的typedefs，你可以在msdn中看到他们。</p><table id="AutoNumber6" style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="4" cellpadding="4" width="98%" border="1"><tbody><tr><td align="center" width="16%"><b>type </b></td><td align="center" width="42%"><b>Meaning in MBCS builds </b></td><td align="center" width="42%"><b>Meaning in Unicode builds</b></td></tr><tr><td width="16%">WCHAR</td><td width="42%">wchar_t</td><td width="42%">wchar_t</td></tr><tr><td width="16%">LPSTR </td><td width="42%">zero-terminated string of char (char*)</td><td width="42%">zero-terminated string of char (char*)</td></tr><tr><td width="16%">LPCSTR </td><td width="42%">constant zero-terminated string of char (const char*)</td><td width="42%">constant zero-terminated string of char (const char*)</td></tr><tr><td width="16%">LPWSTR</td><td width="42%">zero-terminated Unicode string (wchar_t*) </td><td width="42%">zero-terminated Unicode string (wchar_t*)</td></tr><tr><td width="16%">LPCWSTR</td><td width="42%">constant zero-terminated Unicode string (const wchar_t*)</td><td width="42%">constant zero-terminated Unicode string (const wchar_t*) </td></tr><tr><td width="16%"><xxxxime xime="7" />TCHAR</xxxxime /></td><td width="42%"><xxxxime xime="7" />char</xxxxime /></td><td width="42%"><xxxxime xime="7" />wchar_t</xxxxime /></td></tr><tr><td width="16%">LPTSTR</td><td width="42%">zero-terminated string of TCHAR (TCHAR*) </td><td width="42%">zero-terminated string of TCHAR (TCHAR*)</td></tr><tr><td width="16%">LPCTSTR </td><td width="42%">constant zero-terminated string of TCHAR (const TCHAR*)</td><td width="42%">constant zero-terminated string of TCHAR (const TCHAR*)</td></tr></tbody></table><p><img src="http://www.vckbase.com/document/image/paragraph.gif" /><b> 何时使用 TCHAR 和 Unicode</b><br /><br />　　到现在，你可能会问，我们为什么要使用Unicode。我已经用了很多年的char。下列3种情况下，使用Unicode将会使你受益：</p><dir><li>1．你的程序只运行在Windows NT系统中。 </li><li>2． 你的程序需要处理超过MAX_PATH个字符长的文件名。 </li><li>3． 你的程序需要使用XP中引入的只有Unicode版本的API. </li></dir><p>　　Windows 9x 中大多数的 API 没有实现 Unicode 版本。所以，如果你的程序要在windows 9x中运行，你必须使用MBCS APIs。然而，由于NT系统内部都使用Unicode，所以使用Unicode APIs将会加快你的程序的运行速度。每次，你传递一个字符串调用MBCS API，操作系统会把这个字符串转换成Unicode字符串，然后调用对应的Unicode API。如果一个字符串被返回，操作系统还要把它转变回去。尽管这个转换过程被高度优化了，但它对速度造成的损失是无法避免的。<br />　　只要你使用Unicode API，NT系统允许使用非常长的文件名（突破了MAX_PATH的限制，MAX_PATH=260）。使用Unicode API的另一个优点是你的程序会自动处理用户输入的各种语言。所以一个用户可以输入英文，中文或者日文，而你不需要额外编写代码去处理它们。<br />　　最后，随着windows 9x产品的淡出，微软似乎正在抛弃MBCS APIs。例如，包含两个字符串参数的SetWindowTheme() API只有Unicode版本的。使用Unicode来build你的程序将会简化字符串的处理，你不必在MBCS和Unicdoe之间相互转换。<br />　　即使你现在不使用Unicode来build你的程序，你也应该使用TCHAR及其相关的宏。这样做不仅可以的代码可以很好地处理DBCS，而且如果将来你想用Unicode来build你的程序，你只需要改变一下预处理器中的设置就可以实现了。<br /><br /></p><p /><p /><p /></td></tr><tr><td><img src="http://www.vckbase.com/document/image/paragraph.gif" /><b> 作者简介</b><br />　　Michael Dunn：居住在阳光城市洛杉矶。他是如此的喜欢这里的天气以致于想一生都住在这里。他在4年级时开始编程，那时用的电脑是Apple //e。1995年，在 UCLA 获得数学学士学位，随后在Symantec 公司做 QA 工程师，在 Norton AntiVirus 组工作。他自学了 Windows 和 MFC 编程。1999-2000年，他设计并实现了 Norton AntiVirus 的新界面。　<br />　　Michael 现在在 Napster（一个提供在线订阅音乐服务的公司）做开发工作，他还开发了UltraBar，一个IE工具栏插件，它可以使网络搜索更加容易，给了 googlebar 以沉重打击；他还开发了 CodeProject SearchBar；与人共同创建了 Zabersoft 公司，该公司在洛杉矶和丹麦的 Odense 都设有办事处。<br />　　他喜欢玩游戏。爱玩的游戏有 pinball, bike riding，偶尔还玩 PS, Dreamcasth 和 MAME 游戏。他因忘了自己曾经学过的语言：法语、汉语、日语而感到悲哀。<br /></td></tr></tbody></table>]]></description> 
<guid isPermaLink="false">6783323@http://cww0403.bokee.com/</guid> 
<dc:subject>编程知识</dc:subject> 
<dc:date>2008-08-18T13:43:13Z</dc:date> 
</item> 
<item> 
<title><![CDATA[在鼠标右键菜单添加“复制到”“移动到”功能]]></title> 
<link>http://cww0403.bokee.com/6782088.html</link> 
<description><![CDATA[<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2316&amp;b=1003&amp;p=2015&amp;nt=&amp;w=200&amp;h=15&amp;m=173844"> </script></P>							   
<p>复制以下内容，保存为copy.reg，双击运行即可在鼠标右键菜单添加“复制到”“移动到”功能。</p><p /><p>Windows Registry Editor Version 5.00</p><p><br />[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Copy To]</p><p>@=&amp;quot;{C2FBB630-2971-11D1-A18C-00C04FD75D13}&amp;quot;</p><p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Move To]</p><p>@=&amp;quot;{C2FBB631-2971-11D1-A18C-00C04FD75D13}&amp;quot;</p><p /><p>复制以下内容，保存为delcopy.reg，双击运行即可删除鼠标右键菜单添加的“复制到”“移动到”功能。</p><p>Windows Registry Editor Version 5.00</p><p><br />[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Copy To]</p><p>@=&amp;quot;{C2FBB630-2971-11D1-A18C-00C04FD75D13}&amp;quot;</p><p>[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Move To]</p><p>@=&amp;quot;{C2FBB631-2971-11D1-A18C-00C04FD75D13}&amp;quot;</p>

<p><script type="text/javascript"><!--
google_ad_client = "pub-4270446573400206";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = ["336699","B4D0DC","DFF2FD","B0E0E6"];
google_color_bg = ["FFFFFF","ECF8FF","DFF2FD","FFFFFF"];
google_color_link = ["0000FF","0000CC","0000CC","000000"];
google_color_url = ["008000","008000","008000","336699"];
google_color_text = ["000000","6F6F6F","000000","333333"];
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2252&amp;b=1003&amp;p=2001&amp;nt=&amp;w=760&amp;h=147&amp;m=173844"> </script></p>

<script language="javascript" type="text/javascript" src="http://js.users.51.la/1728335.js"></script>
]]></description> 
<guid isPermaLink="false">6782088@http://cww0403.bokee.com/</guid> 
<dc:subject>电脑网络</dc:subject> 
<dc:date>2008-08-15T23:40:30Z</dc:date> 
</item> 
<item> 
<title><![CDATA[关闭OUTLOOK提示压缩邮件]]></title> 
<link>http://cww0403.bokee.com/6765835.html</link> 
<description><![CDATA[<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2316&amp;b=1003&amp;p=2015&amp;nt=&amp;w=200&amp;h=15&amp;m=173844"> </script></P>	<p>最近用outlook收发邮件时总是出现一个问题，就是在每次关闭outlook express时，都会提示：“要释放磁盘空间，outlook express可以压缩邮件。这可能需要几分钟”，然后会让你选择确定或者是取消，如果你点击确定的话，压缩过程比较慢(如果本身邮件数量很多的话会更慢)，会出现机器假死的情况，如果你没有耐心而非法关机了，就可能导致部分邮件丢失(甚至全部丢失)。点取消才可以正常关闭！　</p><p><br />点开始 -》运行 -》输入regedit，确定，打开注册表，找到HKEY_CURRENT_USER\IDENTITIES\{C010EA75-8A22-4DC2-BC9F-37BDFDC60112}\SOFTWARE\MICROSOFT\OUTLOOK EXPRESS\5.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 找到其中的compact check count项，把值改成1问题就可以解决啦!</p><p>{C010EA75-8A22-4DC2-BC9F-37BDFDC60112}这个GUID每台电脑可能会不一样，需要自己找一下。 当compact check count项的值超过100（十进制）或者64（十六进制），outlook就会出现上面的提示，每开关一次outlook，compact check count项的值就会加1.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4270446573400206";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = ["336699","B4D0DC","DFF2FD","B0E0E6"];
google_color_bg = ["FFFFFF","ECF8FF","DFF2FD","FFFFFF"];
google_color_link = ["0000FF","0000CC","0000CC","000000"];
google_color_url = ["008000","008000","008000","336699"];
google_color_text = ["000000","6F6F6F","000000","333333"];
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2252&amp;b=1003&amp;p=2001&amp;nt=&amp;w=760&amp;h=147&amp;m=173844"> </script></p>

<script language="javascript" type="text/javascript" src="http://js.users.51.la/1728335.js"></script>]]></description> 
<guid isPermaLink="false">6765835@http://cww0403.bokee.com/</guid> 
<dc:subject>电脑网络</dc:subject> 
<dc:date>2008-07-22T20:06:00Z</dc:date> 
</item> 
<item> 
<title><![CDATA[制作符合微软标准的CAB文件[转]]]></title> 
<link>http://cww0403.bokee.com/6764903.html</link> 
<description><![CDATA[<span id="ArticleContent1_ArticleContent1_lblContent">&amp;nbsp;<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">对于</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">WindowMobile </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">上面的程序，微软有一个很详细的要求文件“</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">Designed for WindowsMobile&amp;#8482; Software Application Handbook for Smartphone</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">”。</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这份文件大体来说还是很清楚的，里面把程序的方方面面都说得很清楚，但是有关参数</span><span lang="EN-US" style="FONT-SIZE: 12pt">NoUninstall</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地方是非常费解的。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">首先根据：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><b><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">Required: Packages Must Have Setup XML (Smartphone WAP Provisioning)<p /></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">The Setup XML is generated automatically by CABWizSP. If you wish to create your CAB<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">manually, you will also have to create this Setup XML manually.<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们可以通过</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">CABWizSP</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">和自己写的一个</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">inf</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件生成一个</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">cab</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件。</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">命令如：</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">cabwizsp d:\gbcab\fordopod.inf /dest d:\gbcab /cpu ARM4<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">inf</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件的格式可以参照：</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">http://msdn.microsoft.com/library/en-us/wcesetup/html/_wcesdk_Creating_an_inf_File_for_the_CAB_Wizard.asp?frame=true<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">但是一看第二个要求：</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><b><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">Required: Provisioning XML File Must Include Install CSP XML with NoUninstall<p /></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">The provisioning XML file should include an Install CSP section at the start of the<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">document, just below the &amp;lt;wap-provisioningdoc&amp;gt; element. This Install CSP XML should<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">also include the NoUninstall parm.<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">麻烦了！</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">CABWizSP</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">生成的</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">cab</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件中没有</span><b><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">NoUninstall</span></b><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">参数！</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从微软的资料来看，</span><span lang="EN-US" style="FONT-SIZE: 12pt">NoUninstall</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参数是为了使应用程序在安装的时候不生成任何卸载相关的信息而设置的，如果</span><span lang="EN-US" style="FONT-SIZE: 12pt">cab</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的</span><span lang="EN-US" style="FONT-SIZE: 12pt">_setup.xml</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中如果没有这个参数的话，则默认是生成卸载信息的，如果</span><span lang="EN-US" style="FONT-SIZE: 12pt">_setup.xml</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中有该参数，而且值为</span><span lang="EN-US" style="FONT-SIZE: 12pt">1</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的话，那么安装包安装之后则不回生成任何的卸载信息，那么在设置的“删除程序”里面是找不到你的安装的</span><span lang="EN-US" style="FONT-SIZE: 12pt">cab</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查资料后，你会发现</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">CABWizSP</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">是可以带一个参数</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">/nouninstall, </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">不过使用过这个参数后你会发现，加入这个参数</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">CABWizSP</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">是可以生成一个带</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">NoUninstall</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">参数的</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">_setup.xml</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">，但是实际上，这个参数的值为</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">1</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">，导致你的应用程序不能卸载！</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">不能卸载的程序显然不能通过测试！</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">因为微软有这样的要求：</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><b><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">Required: Application Must Install/Uninstall Correctly</span></b><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">最后只好把</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">CABWizSP</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">生成的</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">cab</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件的内容解出来（</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">windows</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">自己就可以解压，当然你也可以使用</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">winrar</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">）。把里面</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">_setup.xml</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件修改好（在</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">&amp;lt;characteristic type=&amp;quot;Install&amp;quot;&amp;gt;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">后面加入如下：</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">&amp;lt;parm name=&amp;quot;NoUninstall&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">），然后在使用</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">makecab</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">来重新打包文件，当然可能你还需要</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">cabsigner</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">来对你的</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">cab</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件进行签名。</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-font-kerning: 0pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span><span lang="EN-US" style="FONT-SIZE: 12pt">makecab</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之前，你需要生成一个有以下内容的</span><span lang="EN-US" style="FONT-SIZE: 12pt">ddf</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set Cabinet=ON<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set Compress=OFF<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set CabinetFileCountThreshold=0<span style="mso-spacerun: yes">&amp;nbsp;&amp;nbsp;&amp;nbsp; </span>; no files per cabinet threshold<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set FolderFileCountThreshold=0<span style="mso-spacerun: yes">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; </span>; no files per folder threshold<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set FolderSizeThreshold=0<span style="mso-spacerun: yes">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; </span>; no folder size threshold<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set MaxCabinetSize=0<span style="mso-spacerun: yes">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; </span>; no max size for the cabinet<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set MaxDiskFileCount=0<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set MaxDiskSize=0<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set ReservePerCabinetSize=6144<span style="mso-spacerun: yes">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; </span>; for web signing<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set ReservePerDataBlockSize=0<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set ReservePerFolderSize=0<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set UniqueFiles=OFF<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set DiskDirectory1=<span style="COLOR: #ff6600">d:\gbcab</span><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set DiskLabel1=Setup<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">; to be filled out by the CABWIZ.exe program<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;.Set InfFileName=<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;.Set RptFileName=<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;.Set CabinetName1=<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">; followed by the list of files<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set InfFileName=<span style="COLOR: red">C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\wiz4EC.tmp</span><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set RptFileName=<span style="COLOR: red">C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\wiz4ED.tmp</span><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set CabinetName1=<span style="COLOR: #ff6600">yourtarget.cab</span><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set ReservePerFolderSize=32<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.Set Compress=on<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这下面是</span><span lang="EN-US" style="FONT-SIZE: 12pt">_setup.xml</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的路径和</span><span lang="EN-US" style="FONT-SIZE: 12pt">setup</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的路径</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">格式为：</span><span style="FONT-SIZE: 12pt"> </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源文件全路径</span><span lang="EN-US" style="FONT-SIZE: 12pt"> _setup.xml</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里面对应的文件名</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: #ff6600">d:\gbcab\_setup.xml _setup.xml<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: #ff6600">D:\gbcab\Setup.dll 000Setup.999<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">.New Folder<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这下面是你的文件的列表</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">格式为：</span><span style="FONT-SIZE: 12pt"> </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源文件全路径</span><span lang="EN-US" style="FONT-SIZE: 12pt"> _setup.xml</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里面对应的文件名</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: #ff6600">D:\gbcab\eb_en.ebd 000eb_en.004<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: #ff6600">D:\gbcab\eb_sc.ebd 000eb_sc.003<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后使用命令：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">makecab /F d:\gbcab\your.ddf<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你就可以生成</span><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: #ff6600">yourtarget.cab</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；然后就可以使用</span><span lang="EN-US" style="FONT-SIZE: 12pt">cabsigner</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对你自己的</span><span lang="EN-US" style="FONT-SIZE: 12pt">cab</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行签名。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">Designed for WindowsMobile&amp;#8482; Software Application Handbook for Smartphone </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">还对其他的方面提出了要求，我感觉我们还需要注意的是：</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">1．<span style="FONT: 7pt 'Times New Roman'">&amp;nbsp; </span></span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">Dll</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">文件只能放入到</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">\storage\windows</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">目录或者程序本身的目录下（当然我只是针对非</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">rom</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">程序）。</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt"><p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US">2．<span style="FONT: 7pt 'Times New Roman'">&amp;nbsp; </span></span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">\storage\windows</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">和</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">\windows</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">目录只能放置</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">dll</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US">3．<span style="FONT: 7pt 'Times New Roman'">&amp;nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">程序的目录必须在</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">\storage\program file</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">下面。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US">4．<span style="FONT: 7pt 'Times New Roman'">&amp;nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序必须能够正常安装卸载，请注意：如果你的程序总是保持一个或者多个你通过</span><span lang="EN-US">cab</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件安装上去的文件的可写句柄或者</span><span lang="EN-US">FILE *</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，你的程序是不能够正常卸载的，但是只读的没有问题。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US">5．<span style="FONT: 7pt 'Times New Roman'">&amp;nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序卸载之后应该能够自动清除所有文件（包括程序安装之后才产生的文件）和注册表项。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US">6．<span style="FONT: 7pt 'Times New Roman'">&amp;nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">界面上必须遵循</span><span lang="EN-US">Smartphone</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的风格，如右键菜单，</span><span lang="EN-US">spinner</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控件等等。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US">7．<span style="FONT: 7pt 'Times New Roman'">&amp;nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">任何程序都不能阻止用户接电话。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">&amp;nbsp;<p /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其它部分就不多说了，大家仔细对照</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-bidi-font-size: 20.0pt; mso-font-kerning: 0pt">Designed for WindowsMobile&amp;#8482; Software Application Handbook for Smartphone</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 20.0pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">就是了。</span></p></span><br /><div style="FONT-SIZE: 14px; LINE-HEIGHT: 25px"><strong>作者Blog：</strong><a id="ArticleContent1_ArticleContent1_AuthorBlogLink" href="http://blog.csdn.net/chenbinghui/" target="_blank">http://blog.csdn.net/chenbinghui/</a></div>]]></description> 
<guid isPermaLink="false">6764903@http://cww0403.bokee.com/</guid> 
<dc:subject>手机</dc:subject> 
<dc:date>2008-07-21T11:53:54Z</dc:date> 
</item> 
<item> 
<title><![CDATA[如何制作CAB安装包]]></title> 
<link>http://cww0403.bokee.com/6764873.html</link> 
<description><![CDATA[制作cab安装包是一件挺简单的事情，如果大家写的主题或者程序涉及到注册表的修改，建议使用cab安装包来进行安装。首先你需要如下几个文件，CabwizSP.exe，cabwiz.ddf。<br />好了，下面进入正文，要制作.cab安装包，你只写一个.inf文件，CabwizSP.exe会根据你的这个INF文件来生成_setup.xml,那么文件要如何写呢？其实很简单，我会提供一个范本，大家只要修改[SourceDisksFiles]之后的字段即可。下面我就来解释一下主要字段的含义。<br />第一个字段[Version]中Provider大家可以随便改，其他两个参数就不要去碰了。第二个字段[CEStings]的AppName=&amp;quot;&amp;quot;就是你为要安装的程序所起的名字。完整的名字将会是Provider参数的字符串加上AppName参数的字符串，例如范本，最后出现在删除程序中的名字就是“MGCN iMac”。第三个字段[CEDevice.ARM720],CEDevice字段是程序所对应的设备平台，这个大家就不用去管它了，写smartphone的inf文件时候加上这个字段就行了。下面的[SourceDisksNames]是指定源文件所在的磁盘和路径，这里我也搞不太清楚，sdk中的例子也看不懂，我用绝对路径也不行，索性就直接用.代替，反正大家copy就是了（看补充1），这样，大家只要把要打包的文件要和inf放在一起就可以了。下面一个字段[SourceDisksFiles]就是大家要打包的文件清单，后面的＝1就表示文件的路径，也就是[SourceDisksNames]中的1。再下一个字段[DefaultInstall]就是安装步骤，范本中CopyFiles参数和AddReg参数表示安装不仅仅是解压拷贝文件，还要修改注册表。CopyFiles=后面着是字段名字，即你所要做的拷贝工作到底有哪些。AddReg＝作用一样。例如在范本中，CopyFiles＝CopyToHomeDir，CopyToiMacDir就是告诉CabwizSP.exe要做两个拷贝文件工作，第一个是把一些文件拷贝到Home文件夹下，要拷贝的文件在[CopyToHomeDir]字段中，第二个是把一些文件拷贝到iMac文件夹下，要拷贝的文件在[CopyToiMacDir]而AddReg＝RegData表示安装程序还要修改注册表，修改的东西在[RegData]字段中。下一个字段就是目标文件夹的具体位置。两个参数CopyToHomeDir和CopyToiMacDir要和上个字段的CopyFiles等号右边的两个字符串值分别相同。这里0我也不清楚是什么意思，sdk中找不到，%CE19%就表示\Storage\Application Data（看最后注释），<br />再下一个字段[CopyToHomeDir]就是具体的任务分配了，引号里面表示解压后的文件名，必须和你压缩前的文件名相同，即必须在[SourceDisksFiles]中能找到相应的文件，后面表示拷贝到相应目录后的文件名，如果没特殊要求就不要改名了。后面一个字段作用和这个相同，我就不多说了，最后是修改注册表段，第一个“，”之前表示注册表中的四大块的名字，直接用缩写就可以了，如范本中HKLM就代表HKEY_LOCAL_MACHINE,其他三个分别为HKCR，HKCU和HKU。第二个“，”之前表示你要修改的键的具体路径(如果没会自动建立），即完整的项（key）名称，第三个“，”之前就表示你要具体修改的键(就是我们经常在修改注册表的文章中看到的Value Name），如果没有的话程序就会自动建立，第四个“，”之前表示值类型，目前我只懂得整数是0x00010001（见补充2），字符型数据这里你就不要填了，留着个“，”就可以了。最后就是你要填入的Value。例如在范例中HKLM,SOFTWARE\Microsoft\Shell\Rai\:CallAlert,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\call1.jpg&amp;quot; 表示修改（建立）名为BKBitmapFile的键的值，它在HKLM\SOFTWARE\Microsoft\Shell\Rai\:CallAlert下，值内容为\Storage\Application Data\Home\iMac\call1.jpg，很明显，这是一个值为String类型的键。整数的我就不说了，范本中有，我相信大家看得懂。<br />好了，inf文件写好了，copy你要打包的文件和inf文件到含有CabwizSP.exe，cabwiz.ddf的目录中，在命令行模式下输入CabwizSP xx.inf，xx代表你为inf文件起的名字，那么一个带_setup.xml的.cab包就生成完毕了，安装一下，看看自己的成果吧。<br /><br />注释：%A%表示引用A参数的值，如CopyToHomeDir = 1,%CE1%\%AppName%的话就代表\storage\program files\MGCN iMac。（在范例中AppName=Provider+AppName=&amp;quot;MGCN&amp;quot;+&amp;quot;iMac&amp;quot;），而对于%CEX%，系统在安装程序时候会自动翻译，如%CE19%译结果是\Application Data,又如CE1表示\program files，CE2表示\windows,最后的翻译结果系统会在前面已翻译的结果上再加上默认的storage卷标名（前提是存在默认的storage卷标名），如Smartphone的默认磁盘卷标是Storage，那么%CE19%最终就变成了\Storage\Application Data。有兴趣的可以去翻翻SDK看看到底有多少的%CEX%。<br />补充1：从modaco的那篇英文文知道，[SourceDisksNames]包含有四个域，域与域之间用逗号隔开，第一个域是disk_id，磁盘的id（我什么都试过了，这个实在不懂啥意思...大家就表管它意义了。），第二个域是注释，要用&amp;quot;&amp;quot;把注释内容包含起来，第三个不知道，第四个是文件路径，“.”就表示当前目录，“..”表示当前目录的上一级目录。<br />补充2：第四个&amp;quot;，&amp;quot;之前0x00010001称之为Flag，应该说是对后面value具体类型的表明。几个flag说明如下：<br />0x00000002 如果注册的键（值）存在，则不修改它，不存在的话值就等于最后一个域的内容了（废话...）这个flag可以和下面的任何flag混用（具体怎么混用我也不懂，如果你用这个Flag的话，后面所跟的内容就是string类型了，按理说可以指定后面内容的类型的，不过我试不出来，sdk中也找不到相关说明，估计要去msdn中去找才行...） <br />0x00000000 表明是String类型，对应注册表中的REG_SZ数据类型。 <br />0x00010000 表明是Multi-String类型，对应REG_MULTI_SZ数据类型。就是说包含有很多个字符串，每个字符串用“,”隔开。 HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSClog,BKFlags,0x00010000,&amp;quot;xxx&amp;quot;,&amp;quot;yyy&amp;quot;,&amp;quot;zzz&amp;quot;<br />0x00000001 二进制类型，对应注册表中的REG_BINARY数据类型，你可以写好几个不同的的二制，每个二进制数就代表一个域，域与域之间用&amp;quot;,&amp;quot;隔开，注意不能用0x打头（16进制的头标志）。 格式如下：HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSClog,BKFlags,0x00000001,00,01,11,10,11,10<br />0x00010001 表示是整数，对应注册表中的REG_DWORD数据类型。如果数字前面加0x表示十六进制数字，写入注册表时会自动翻译成十进制。 如：HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSClog,BKFlags,0x00010001,0x26那么生成_setup.xml时候0x26就变成了38，datatype还是integer。<br />补充3：[String]字段。这个字段是用来定义你要重复使用的字符串的缩写的，比如你&amp;quot;Software\Microsoft\My Test App&amp;quot;这个字符串用得很多，你可以用r来代表，只要你在这个字段中写入r = &amp;quot;Software\Microsoft\My Test App&amp;quot; 那么再后面字段中你就可以用%r%来表示Software\Microsoft\My Test App了，例如在注册表字段中你可以这样写HKLM,%r%,test,0x00010001,3，就等同于HKLM,Software\Microsoft\My Test App,test,0x00010001,3 &amp;nbsp; &amp;nbsp; <br />补充4：关于建立快捷键。形式如下，主要是要在[DefaultInstall]，[DestinationDirs]加入相应的项目，并且要建立一个字段，字段名字可以随便取，不过注意三个字段中这个名字都要一样。如：<br />[DefaultInstall] <br />CEShortcuts = Shortcuts <br />[DestinationDirs] <br />Shortcuts = 0,%CE14% &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; <br />[Shortcuts] <br />Sample App,0,sample.exe &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; <br />Sample App,0,sample.exe,%InstallDir% <br />这里主要是最后一个字段的语法要说明一下，四个域，域之间用逗号隔开，前三个域的内容必须填写。第一个域是快捷键名称，第二个域中0表示是文件，其他任何非零数表示为目录，第三个域就是快捷键的目标程序（目录），第四个域是可选域，是安放快捷键的目录，默认目录就是[DestinationDirs]中Shortcuts = &amp;quot;&amp;quot;，你可以指定其他目录，如你想在开始菜单中加入自己的快捷键的话就在这里写上storage\windows\startmenu\。<br /><br />最后需要说明的是文中的为了方便大家能看清楚，逗号都用全角表示，INF文件涉及系统的东西是不能使用全角符号的，字符串我还没有试过，不过我建议大家能使用英文尽量使用英文....<br /><br /><br />范本1,我自己写的主题iMac的inf文件<br />[Version]<br />Signature &amp;nbsp;= &amp;quot;$Windows NT$&amp;quot; &amp;nbsp; &amp;nbsp;<br />Provider &amp;nbsp;= &amp;quot;MGCN&amp;quot; &amp;nbsp; &amp;nbsp;<br />CESignature = &amp;quot;$Windows CE$&amp;quot; &amp;nbsp; &amp;nbsp;<br />[CEStrings]<br />AppName &amp;nbsp; = &amp;quot;iMac&amp;quot; &amp;nbsp; &amp;nbsp;<br /><br />[CEDevice.ARM720]<br />ProcessorType = 0<br />[SourceDisksNames] &amp;nbsp; &amp;nbsp;<br />1 =. <br />[SourceDisksFiles]<br />imac.home.xml &amp;nbsp; &amp;nbsp;= 1<br />alert.jpg &amp;nbsp; &amp;nbsp;= 1<br />app.jpg &amp;nbsp; &amp;nbsp;= 1<br />batterieoff.bmp &amp;nbsp; &amp;nbsp;= 1<br />batterieon.bmp &amp;nbsp; &amp;nbsp;= 1<br />BatteryMask.gif &amp;nbsp; &amp;nbsp;= 1<br />calendar.jpg &amp;nbsp; &amp;nbsp;= 1<br />call1.jpg &amp;nbsp; &amp;nbsp;= 1<br />call.jpg &amp;nbsp; &amp;nbsp;= 1<br />confirm.jpg &amp;nbsp; &amp;nbsp;= 1 <br />contacts.jpg &amp;nbsp; &amp;nbsp;= 1<br />dial.jpg &amp;nbsp; &amp;nbsp;= 1<br />dialback.jpg &amp;nbsp; &amp;nbsp;= 1<br />error.jpg &amp;nbsp; &amp;nbsp;= 1<br />i1.gif &amp;nbsp; &amp;nbsp;= 1<br />i2.gif &amp;nbsp; &amp;nbsp;= 1<br />i3.gif &amp;nbsp; &amp;nbsp;= 1<br />i4.gif &amp;nbsp; &amp;nbsp;= 1<br />incall.jpg &amp;nbsp; &amp;nbsp;= 1<br />info.jpg &amp;nbsp; &amp;nbsp;= 1<br />kbat.ini &amp;nbsp; &amp;nbsp;= 1<br />kdh2.jpg &amp;nbsp; &amp;nbsp;= 1<br />newhome.jpg &amp;nbsp; &amp;nbsp;= 1<br />pro.jpg &amp;nbsp; &amp;nbsp;= 1<br />programs.jpg &amp;nbsp; &amp;nbsp;= 1<br />sm.jpg &amp;nbsp; &amp;nbsp;= 1<br />volume.jpg &amp;nbsp; &amp;nbsp;= 1<br /><br />[DefaultInstall]<br />CopyFiles &amp;nbsp;= CopyToHomeDir, CopyToiMacDir<br />AddReg &amp;nbsp; &amp;nbsp;&amp;nbsp; = RegData<br />[DestinationDirs]<br />CopyToHomeDir = 0,%CE19%\Home<br />CopyToiMacDir = 0,%CE19%\Home\iMac<br />[CopyToHomeDir]<br />&amp;quot;iMac.home.xml&amp;quot;,iMac.home.xml<br />[CopyToiMacDir]<br />&amp;quot;alert.jpg&amp;quot;, alert.jpg<br />&amp;quot;app.jpg&amp;quot;, app.jpg<br />&amp;quot;batterieoff.bmp&amp;quot;, batterieoff.bmp<br />&amp;quot;batterieon.bmp&amp;quot;, batterieon.bmp<br />&amp;quot;BatteryMask.gif&amp;quot;, BatteryMask.gif<br />&amp;quot;calendar.jpg&amp;quot;, calendar.jpg<br />&amp;quot;call1.jpg&amp;quot;, call1.jpg<br />&amp;quot;call.jpg&amp;quot;, call.jpg<br />&amp;quot;confirm.jpg&amp;quot;, confirm.jpg<br />&amp;quot;contacts.jpg&amp;quot;, contacts.jpg<br />&amp;quot;dial.jpg&amp;quot;, dial.jpg<br />&amp;quot;dialback.jpg&amp;quot;, dialback.jpg<br />&amp;quot;error.jpg&amp;quot;, error.jpg<br />&amp;quot;i1.gif&amp;quot;, i1.gif<br />&amp;quot;i2.gif&amp;quot;, i2.gif<br />&amp;quot;i3.gif&amp;quot;, i3.gif<br />&amp;quot;i4.gif&amp;quot;, i4.gif<br />&amp;quot;incall.jpg&amp;quot;, incall.jpg<br />&amp;quot;info.jpg&amp;quot;, info.jpg<br />&amp;quot;kbat.ini&amp;quot;, kbat.ini<br />&amp;quot;kdh2.jpg&amp;quot;, kdh2.jpg<br />&amp;quot;newhome.jpg&amp;quot;, newhome.jpg<br />&amp;quot;pro.jpg&amp;quot;, pro.jpg<br />&amp;quot;programs.jpg&amp;quot;, programs.jpg<br />&amp;quot;sm.jpg&amp;quot;, sm.jpg<br />&amp;quot;volume.jpg&amp;quot;, volume.jpg<br /><br />[RegData] &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; <br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:CallAlert,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\call1.jpg&amp;quot; <br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:ErrorBox,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\error.jpg&amp;quot; <br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:ExclamationBox,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\alert.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:InformationBox,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\info.jpg&amp;quot;<br />HKLM,Software\Microsoft\Shell\Rai\: QuestionBox,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\confirm.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:VolDlg,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\volume.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSStart,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\programs.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSCPROG,BannerImage,,&amp;quot;\Storage\Application Data\Home\iMac\incall.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSCPROG,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\dialback.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSCdial,BannerImage,,&amp;quot;\Storage\Application Data\Home\iMac\dial.jpg&amp;quot; &amp;nbsp;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSClog,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\programs.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSClog,BKFlags,0x00010001,26<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSCONTACTS,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMac\contacts.jpg&amp;quot;<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSCONTACTS,BKFlags,0x00010001,26<br />HKLM,SOFTWARE\Microsoft\Shell\Rai\:MSSYNCAPP,BKBitmapFile,,&amp;quot;\Storage\Application Data\Home\iMacX\programs.jpg&amp;quot;<br />HKCU,ControlPanel\Home,Scheme,,&amp;quot;\Storage\Application Data\Home\iMac.home.xml&amp;quot;<br />HKCU,ControlPanel\Home,BgImage,,<br />HKCU,ControlPanel\Home,ColorScheme,,<br /><br /><br />范本2,e200插件的inf文件[Version] <br />Signature = &amp;quot;$Windows NT$&amp;quot; <br />Provider = &amp;quot;Orange&amp;quot; <br />CESignature = &amp;quot;$Windows CE$&amp;quot; [CEStrings] <br />AppName = &amp;quot;E200's plugin&amp;quot; <br />[CEDevice.ARM720] <br />ProcessorType = 0[SourceDisksNames] <br />1 =. [SourceDisksFiles] <br />4orangeh.dll = 1 <br />[DefaultInstall] <br />CopyFiles = CopyToHomeDir <br />AddReg = RegData[DestinationDirs] <br />CopyToHomeDir = 1,%CE19%\Home[CopyToHomeDir] <br />&amp;quot;4orangeh.dll&amp;quot;,4orangeh.dll <br />[RegData] <br />HKCR,CLSID\{A2536C54-6AC2-4C31-9542-B144B0E9D077}\InprocServer32,,,&amp;quot;\Storage\Application Data\Home\4orangeh.dll&amp;quot; <br />HKCR,CLSID\{A2536C55-6AC2-4C31-9542-B144B0E9D077}\InprocServer32,,,&amp;quot;\Storage\Application Data\Home\4orangeh.dll&amp;quot; <br />HKCR,CLSID\{A2536C56-6AC2-4C31-9542-B144B0E9D077}\InprocServer32,,,&amp;quot;\Storage\Application Data\Home\4orangeh.dll&amp;quot; <br />HKCR,CLSID\{A2536C57-6AC2-4C31-9542-B144B0E9D077}\InprocServer32,,,&amp;quot;\Storage\Application Data\Home\4orangeh.dll&amp;quot; <br />HKCR,CLSID\{A2536C58-6AC2-4C31-9542-B144B0E9D077}\InprocServer32,,,&amp;quot;\Storage\Application Data\Home\4orangeh.dll&amp;quot; <br />HKCR,CLSID\{A2536C59-6AC2-4C31-9542-B144B0E9D077}\InprocServer32,,,&amp;quot;\Storage\Application Data\Home\4orangeh.dll&amp;quot; <br />HKCR,CLSID\{A2536C5B-6AC2-4C31-9542-B144B0E9D077}\InprocServer32,,,&amp;quot;\Storage\Application Data\Home\4orangeh.dll&amp;quot; <br />]]></description> 
<guid isPermaLink="false">6764873@http://cww0403.bokee.com/</guid> 
<dc:subject>手机</dc:subject> 
<dc:date>2008-07-21T10:45:20Z</dc:date> 
</item> 
<item> 
<title><![CDATA[宽字符串处理函数与窄字符串处理函数对照表]]></title> 
<link>http://cww0403.bokee.com/6763112.html</link> 
<description><![CDATA[<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2316&amp;b=1003&amp;p=2015&amp;nt=&amp;w=200&amp;h=15&amp;m=173844"></script></P>&amp;nbsp;&amp;nbsp; 字符分类：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 宽字符函数普通C函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswalnum（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isalnum（） 测试字符是否为数字或字母 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswalpha（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isalpha（） 测试字符是否是字母 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswcntrl（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iscntrl（） 测试字符是否是控制符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswdigit（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isdigit（） 测试字符是否为数字 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswgraph（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isgraph（） 测试字符是否是可见字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswlower（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; islower（） 测试字符是否是小写字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswprint（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isprint（） 测试字符是否是可打印字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswpunct（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ispunct（） 测试字符是否是标点符号 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswspace（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isspace（） 测试字符是否是空白符号 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswupper（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isupper（） 测试字符是否是大写字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />iswxdigit（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isxdigit（）测试字符是否是十六进制的数字 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />大小写转换：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />宽字符函数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 普通C函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />towlower（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tolower（） 把字符转换为小写 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />towupper（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; toupper（） 把字符转换为大写 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />字符比较：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 宽字符函数普通C函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcscoll（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strcoll（） 比较字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />日期和时间转换： <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />宽字符函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />strftime（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据指定的字符串格式和locale设置格式化日期和时间 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcsftime（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据指定的字符串格式和locale设置格式化日期和时间， 并返回宽字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />strptime（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据指定格式把字符串转换为时间值， 是strftime的反过程 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />打印和扫描字符串： <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />宽字符函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />fprintf（）<span style="COLOR: #000000">/</span><span style="COLOR: #000000">fwprintf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用vararg参量的格式化输出 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />fscanf（）</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">fwscanf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 格式化读入 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />printf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用vararg参量的格式化输出到标准输出 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />scanf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从标准输入的格式化读入 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />sprintf（）</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">swprintf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据vararg参量表格式化成字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />sscanf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 以字符串作格式化读入 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />vfprintf（）</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">vfwprintf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用stdarg参量表格式化输出到文件 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />vprintf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用stdarg参量表格式化输出到标准输出 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />vsprintf（）</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">vswprintf（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 格式化stdarg参量表并写到字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />数字转换： <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />宽字符函数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 普通C函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcstod（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strtod（）&amp;nbsp;&amp;nbsp; 把宽字符的初始部分转换为双精度浮点数 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcstol（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strtol（）&amp;nbsp;&amp;nbsp; 把宽字符的初始部分转换为长整数 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcstoul（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strtoul（） 把宽字符的初始部分转换为无符号长整数 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />多字节字符和宽字符转换及操作： <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />宽字符函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />mblen（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据locale的设置确定字符的字节数 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />mbstowcs（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把多字节字符串转换为宽字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />mbtowc（）</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">btowc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把多字节字符转换为宽字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcstombs（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把宽字符串转换为多字节字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wctomb（）</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">wctob（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把宽字符转换为多字节字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />输入和输出： <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />宽字符函数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 普通C函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />fgetwc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fgetc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从流中读入一个字符并转换为宽字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />fgetws（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fgets（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从流中读入一个字符串并转换为宽字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />fputwc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fputc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把宽字符转换为多字节字符并且输出到标准输出 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />fputws（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fputs（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把宽字符串转换为多字节字符并且输出到标准输出串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />getwc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从标准输入中读取字符， 并且转换为宽字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />getwchar（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getchar（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从标准输入中读取字符， 并且转换为宽字符 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />None&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gets（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用fgetws（） <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />putwc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; putc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把宽字符转换成多字节字符并且写到标准输出 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />putwchar（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; putchar（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把宽字符转换成多字节字符并且写到标准输出 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />None&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用fputws（） <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />ungetwc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ungetc（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把一个宽字符放回到输入流中 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />字符串操作： <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />宽字符函数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 普通C函数描述 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcscat（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strcat（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把一个字符串接到另一个字符串的尾部 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcsncat（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strncat（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 类似于wcscat（）， 而且指定粘接字符串的粘接长度. <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcschr（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strchr（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查找子字符串的第一个位置 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcsrchr（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strrchr（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从尾部开始查找子字符串出现的第一个位置 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcspbrk（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strpbrk（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从一字符字符串中查找另一字符串中任何一个字符第一次出现的位置 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcswcs（）</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">wcsstr（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strchr（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在一字符串中查找另一字符串第一次出现的位置 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcscspn（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strcspn（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 返回不包含第二个字符串的的初始数目 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcsspn（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strspn（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 返回包含第二个字符串的初始数目 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcscpy（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strcpy（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 拷贝字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcsncpy（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strncpy（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 类似于wcscpy（）， 同时指定拷贝的数目 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcscmp（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strcmp（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比较两个宽字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcsncmp（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strncmp（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 类似于wcscmp（）， 还要指定比较字符字符串的数目 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcslen（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strlen（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 获得宽字符串的数目 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcstok（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strtok（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据标示符把宽字符串分解成一系列字符串 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcswidth（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 获得宽字符串的宽度 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />wcwidth（）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 获得宽字符的宽度 <br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />另外还有对应于memory操作的 wmemcpy（）， wmemchr（）， wmemcmp（）， wmemmove（）， wmemset（）．<br /></span><p><script type="text/javascript"><!--
google_ad_client = "pub-4270446573400206";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = ["336699","B4D0DC","DFF2FD","B0E0E6"];
google_color_bg = ["FFFFFF","ECF8FF","DFF2FD","FFFFFF"];
google_color_link = ["0000FF","0000CC","0000CC","000000"];
google_color_url = ["008000","008000","008000","336699"];
google_color_text = ["000000","6F6F6F","000000","333333"];
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2252&amp;b=1003&amp;p=2001&amp;nt=&amp;w=760&amp;h=147&amp;m=173844"></script></p>
<p><script language="javascript" type="text/javascript" src="http://js.users.51.la/1728335.js"></script></p>]]></description> 
<guid isPermaLink="false">6763112@http://cww0403.bokee.com/</guid> 
<dc:subject>编程知识</dc:subject> 
<dc:date>2008-07-18T11:00:17Z</dc:date> 
</item> 
<item> 
<title><![CDATA[WinCE制作CAB安装包]]></title> 
<link>http://cww0403.bokee.com/6747537.html</link> 
<description><![CDATA[<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2316&amp;b=1003&amp;p=2015&amp;nt=&amp;w=200&amp;h=15&amp;m=173844"> </script></P>	<p>1、编写inf文件<br />可以参考POCKET PC 2003的AppInst例子，以及Windows Mobile 5.0 SDK帮助文档Deploying Windows Mobile Applications &amp;gt; How to Package and Distribute Windows Mobile Applications</p><p>sample.inf</p><p>[Version]<br />Signature&amp;nbsp;&amp;nbsp; = &amp;quot;$Windows NT$&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; required as-is<br />Provider&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;quot;Microsoft&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; maximum of 30 characters, full app name will be &amp;quot;<provider /> <appname />&amp;quot;<br />CESignature = &amp;quot;$Windows CE$&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; required as-is<br />&amp;nbsp;<br />[CEStrings]<br />AppName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;quot;Mine Sweeper&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; maximum of 40 characters, full app name will be &amp;quot;<provider /> <appname />&amp;quot;<br />InstallDir&amp;nbsp; = %CE1%\%AppName%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Program Files\Mine Sweeper</p><p>; Directory Identifier Pocket PC Directory <br />; %CE1% \Program Files <br />; %CE2% \Windows <br />; %CE4% \Windows\StartUp <br />; %CE5% \My Documents <br />; %CE8% \Program Files\Games <br />; %CE11% \Windows\Start Menu\Programs <br />; %CE14% \Windows\Start Menu\Programs\Games <br />; %CE15% \Windows\Fonts <br />; %CE17% \Windows\Start Menu <br />&amp;nbsp;<br />[SourceDisksNames]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; directory that holds the application's files<br />1 = , &amp;quot;Common Files&amp;quot;,,Common&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; disk_id = ,comment,,path (absolute or relative paths)<br />&amp;nbsp;<br />[SourceDisksFiles]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; list of files to be included in .cab<br />bigexpl.wav = 1<br />miniwin.wav = 1<br />winmine.exe = 1<br />&amp;nbsp;<br />[DefaultInstall]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; operations to be completed during install<br />CopyFiles&amp;nbsp;&amp;nbsp; = CopyToProgramFiles<br />AddReg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = RegData<br />CEShortcuts = Shortcuts&amp;nbsp;&amp;nbsp; <br />&amp;nbsp;<br />[DestinationDirs]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; default destination directories for each operation section<br />CopyToProgramFiles&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0, %InstallDir%<br />Shortcuts&amp;nbsp;&amp;nbsp; = 0, %CE14%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; \Windows\Start Menu\Programs\Games<br />&amp;nbsp;<br />[CopyToProgramFiles]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; copy operation file list<br />&amp;quot;winmine.exe&amp;quot;, winmine.exe<br />&amp;quot;miniwin.wav&amp;quot;, miniwin.wav<br />&amp;quot;bigexpl.wav&amp;quot;, bigexpl.wav<br />&amp;nbsp;<br />[RegData]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; registry key list<br />HKCU,Software\%AppName%,MajorVersion,0x00010001,1<br />HKCU,Software\%AppName%,MinorVersion,0x00010001,0<br />&amp;nbsp;<br />[Shortcuts]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Shortcut created in destination dir, %CE14%<br />%AppName%,0,winmine.exe</p><p>&amp;nbsp;</p><p>2、用cabwiz命令生成cab文件<br />cabwiz sample.inf /compress<br />/compress命令只能用在Windows Mobile以后的版本</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4270446573400206";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = ["336699","B4D0DC","DFF2FD","B0E0E6"];
google_color_bg = ["FFFFFF","ECF8FF","DFF2FD","FFFFFF"];
google_color_link = ["0000FF","0000CC","0000CC","000000"];
google_color_url = ["008000","008000","008000","336699"];
google_color_text = ["000000","6F6F6F","000000","333333"];
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2252&amp;b=1003&amp;p=2001&amp;nt=&amp;w=760&amp;h=147&amp;m=173844"> </script></p>

<script language="javascript" type="text/javascript" src="http://js.users.51.la/1728335.js"></script>]]></description> 
<guid isPermaLink="false">6747537@http://cww0403.bokee.com/</guid> 
<dc:subject>手机</dc:subject> 
<dc:date>2008-06-26T20:46:28Z</dc:date> 
</item> 
<item> 
<title><![CDATA[vcproj文件格式(转载)]]></title> 
<link>http://cww0403.bokee.com/6740288.html</link> 
<description><![CDATA[<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2316&amp;b=1003&amp;p=2015&amp;nt=&amp;w=200&amp;h=15&amp;m=173844"></script></P><table style="TABLE-LAYOUT: fixed"><tbody><tr><td><div class="cnt" id="blog_text"><table style="TABLE-LAYOUT: fixed"><tbody><tr><td><div class="cnt"><h4 class="TextColor1" style="MARGIN-BOTTOM: 0px"><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">上回说到了</span></font><span>sln</span><font face="宋体"><span>文件格式，每个</span></font><span>sln</span><font face="宋体"><span>都包含了一个到多个工程文件，</span></font><span>c++</span><font face="宋体"><span>工程文件的文件扩展名为</span></font><span>vcproj</span><font face="宋体"><span>，这回说一下</span></font><span>vcproj</span><font face="宋体"><span>的格式。</span></font></h4><div class="bvMsg"><div><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">vcproj</span></font><font face="宋体"><span>是一个标准的</span></font><span>xml</span><font face="宋体"><span>文件。因此以下就以节点顺序描述。</span></font></p><p style="TEXT-INDENT: 21pt"><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">根节点是</span></font><span>VisualStudioProject</span><font face="宋体"><span>，属性中包含了工程的全局信息，常见的信息有：</span></font> <table cellspacing="0" cellpadding="0" bgcolor="#e6e6e6" border="0"><tbody><tr><td width="168"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">属性</span></font></strong></p></td><td width="144"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">含义</span></font></strong></p></td><td width="249"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">说明</span></font></strong></p></td></tr><tr><td valign="top" width="168"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">ProjectType</span></font></p></td><td valign="top" width="144"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">工程类型</span></font></p></td><td valign="top" width="249"><p><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">默认值是</span></font></strong><span>Visual C++</span></p></td></tr><tr><td valign="top" width="168"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Version</span></font></p></td><td valign="top" width="144"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">版本</span></font></p></td><td valign="top" width="249"><p><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">默认值是</span></font></strong><span>7.10</span></p></td></tr><tr><td valign="top" width="168"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Name</span></font></p></td><td valign="top" width="144"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">工程名称</span></font></p></td><td valign="top" width="249"><p /></td></tr><tr><td valign="top" width="168"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">ProjectGUID</span></font></p></td><td valign="top" width="144"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">工程的</span></font><span>GUID</span></p></td><td valign="top" width="249"><p /></td></tr><tr><td valign="top" width="168"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Keyword</span></font></p></td><td valign="top" width="144"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">工程关键字</span></font></p></td><td valign="top" width="249"><p><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">默认值是</span></font></strong><span>Win32Proj</span></p></td></tr><tr><td valign="top" width="168"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SccProjectName</span></font></p><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SccAuxPath</span></font></p><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SccLocalPath</span></font></p><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SccProvider</span></font></p></td><td valign="top" width="144"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SourceSafe</span></font><font face="宋体"><span>信息</span></font></p></td><td valign="top" width="249"><p><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">默认值是</span></font></strong><span>SAK</span></p></td></tr></tbody></table></p><p style="TEXT-INDENT: 21pt"><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">后面的</span></font><span>Scc**</span><font face="宋体"><span>属性，标志了此工程在</span></font><span>SourceSafe</span><font face="宋体"><span>中。手动将一个工程从</span></font><span>SourceSafe</span><font face="宋体"><span>中删除时，只要删除这四个属性就行。当它们的默认值是</span></font><span>SAK</span><font face="宋体"><span>时，可以在工程文件的同一个目录下找到一个文件</span></font><span>mssccprj.scc</span><font face="宋体"><span>，这里面包含了工程在</span></font><span>SourceSafe</span><font face="宋体"><span>中的信息，比如：</span></font> <table style="BACKGROUND: #e6e6e6; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" bgcolor="#e6e6e6" border="0"><tbody><tr><td valign="top" width="568"><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SCC = This is a Source Code Control file</span></font></p><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">[PS.vcproj]</span></font></p><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SCC_Aux_Path = &amp;quot;\\code-server\code$\&amp;quot;</span></font></p><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SCC_Project_Name = &amp;quot;$/project/PS&amp;quot;, IQIBAAAA</span></font></p></td></tr></tbody></table></p><p style="TEXT-INDENT: 21pt" /><p style="TEXT-INDENT: 21pt"><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">根节点下有三个子节点比较重要。</span></font><span>Platforms</span><font face="宋体"><span>很简单，表示平台内容，通常就是“</span></font><span>Win32</span><font face="宋体"><span>”；</span></font><span>Configurations</span><font face="宋体"><span>是编译和链接的配置信息；</span></font><span>Files</span><font face="宋体"><span>下包括的是工程中的文件信息。以下主要谈谈</span></font><span>Configurations</span><font face="宋体"><span>和</span></font><span>Files</span><font face="宋体"><span>。</span></font></p><p style="TEXT-INDENT: 21pt" /><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Configurations</span></font><font face="宋体"><span>包含了工程编译和链接等配置信息，其子节点是</span></font><span>Configuration</span><font face="宋体"><span>，由用户设定的编译类型决定，默认有</span></font><span>Debug</span><font face="宋体"><span>和</span></font><span>Release</span><font face="宋体"><span>两个子节点。</span></font><span>Configuration</span><font face="宋体"><span>的属性如下：</span></font> <table cellspacing="0" cellpadding="0" bgcolor="#e6e6e6" border="0"><tbody><tr><td width="144"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">属性</span></font></strong></p></td><td width="132"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">含义</span></font></strong></p></td><td width="285"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">说明</span></font></strong></p></td></tr><tr><td valign="top" width="144"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Name</span></font></p></td><td valign="top" width="132"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">编译选项名称</span></font></p></td><td valign="top" width="285"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Debug</span></font><font face="宋体"><span>下通常为</span></font><span>Debug|Win32</span></p></td></tr><tr><td valign="top" width="144"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">OutputDirectory</span></font></p></td><td valign="top" width="132"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">目标文件输出路径</span></font></p></td><td valign="top" width="285"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">默认为</span></font><span>Debug</span></p></td></tr><tr><td valign="top" width="144"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">IntermediateDirectory</span></font></p></td><td valign="top" width="132"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">编译信息输出路径</span></font></p></td><td valign="top" width="285"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">默认为</span></font><span>Debug</span></p></td></tr><tr><td valign="top" width="144"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">ConfigurationType</span></font></p></td><td valign="top" width="132"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">工程类型</span></font></p></td><td valign="top" width="285"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">1</span></font><font face="宋体"><span>表示</span></font><span>exe</span><font face="宋体"><span>程序文件，</span></font><span>2</span><font face="宋体"><span>表示</span></font><span>dll</span><font face="宋体"><span>动态库文件，</span></font><span>3</span><font face="宋体"><span>表示</span></font><span>lib</span><font face="宋体"><span>静态库文件</span></font></p></td></tr><tr><td valign="top" width="144"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">UseOfMFC</span></font></p></td><td valign="top" width="132"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">表示是否使用</span></font><span>MFC</span></p></td><td valign="top" width="285"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">0</span></font><font face="宋体"><span>表示不使用</span></font><span>MFC</span><font face="宋体"><span>，</span></font><span>1</span><font face="宋体"><span>表示静态链接</span></font><span>MFC</span><font face="宋体"><span>，</span></font><span>2</span><font face="宋体"><span>表示动态链接</span></font><span>MFC</span></p></td></tr><tr><td valign="top" width="144"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">CharacterSet</span></font></p></td><td valign="top" width="132"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">表示编码类型</span></font></p></td><td valign="top" width="285"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">1</span></font><font face="宋体"><span>表示</span></font><span>Unicode</span><font face="宋体"><span>，</span></font><span>2</span><font face="宋体"><span>表示</span></font><span>Ansi</span></p></td></tr></tbody></table></p><p style="TEXT-INDENT: 21pt" /><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Configuration</span></font><font face="宋体"><span>的子节点全是</span></font><span>Tool</span><font face="宋体"><span>，每个子节点都有一个属性</span></font><span>Name</span><font face="宋体"><span>表示节点含义。这里面有两个子节点比较有用，一个是</span></font><span>VCCLCompilerTool</span><font face="宋体"><span>，表示编译信息，一个是</span></font><span>VCLinkerTool</span><font face="宋体"><span>，表示链接信息，其它的子节点用的不多。</span></font></p><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">VCCLCompilerTool</span></font><font face="宋体"><span>的常用属性如下：</span></font> <table cellspacing="0" cellpadding="0" width="573" bgcolor="#e6e6e6" border="0"><tbody><tr><td width="180"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">属性</span></font></strong></p></td><td width="180"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">含义</span></font></strong></p></td><td width="213"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">说明</span></font></strong></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Optimization</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">优化选项</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">可以为</span></font><span>0</span><font face="宋体"><span>、</span></font><span>1</span><font face="宋体"><span>、</span></font><span>2</span><font face="宋体"><span>、</span></font><span>3</span><font face="宋体"><span>、</span></font><span>4</span></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">PreprocessorDefinitions</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">预定义标记</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">通常都是</span></font><span>WIN32 _WINDOWS _DEBUG</span></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">MinimalRebuild</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">是否使用最小编译</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">设置为</span></font><span>TRUE</span><font face="宋体"><span>能节约编译时间</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">BasicRuntimeChecks</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">运行时检测，包括栈和未初始化变量等</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">默认为</span></font><span>3</span></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">RuntimeLibrary</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">程序运行时</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">选择多（单）线程，（非）调试，</span></font><span>DLL</span><font face="宋体"><span>（</span></font><span>EXE</span><font face="宋体"><span>）类型</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">TreatWChar_tAsBuiltInType</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">是否将</span></font><span>wchar_t</span><font face="宋体"><span>当作内置类型</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">如果为</span></font><span>FALSE</span><font face="宋体"><span>，</span></font><span>wchar_t</span><font face="宋体"><span>被认为是</span></font><span>unsigned short</span><font face="宋体"><span>类型</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">ForceConformanceInForLoopScope</span></font></p></td><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">if</span></font><font face="宋体"><span>和</span></font><span>for</span><font face="宋体"><span>循环中声明的变量的作用范围是否在循环内</span></font></p></td><td valign="top" width="213"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">7.1</span></font><font face="宋体"><span>默认为</span></font><span>FALSE</span><font face="宋体"><span>，</span></font><span>8.0</span><font face="宋体"><span>默认为</span></font><span>TRUE</span></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">UsePrecompiledHeader</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">预定义头文件设置</span></font></p></td><td valign="top" width="213"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">0</span></font><font face="宋体"><span>表示不使用，</span></font><span>1</span><font face="宋体"><span>表示创建预定义头文件，</span></font><span>2</span><font face="宋体"><span>表示自动创建，</span></font><span>3</span><font face="宋体"><span>表示使用预定义头文件</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">PrecompiledHeaderThrough</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">预定义头文件名</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">通常都是</span></font><span>stdafx.h</span><font face="宋体"><span>，可以随意指定</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">PrecompiledHeaderFile</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">预编译信息文件名</span></font></p></td><td valign="top" width="213"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">默认为</span></font><span>$(IntDir)/$(TargetName).pch</span></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">WarningLevel</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">警告级别</span></font></p></td><td valign="top" width="213"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">4</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Detect64BitPortabilityProblems</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">检测是否兼容</span></font><span>64</span><font face="宋体"><span>位程序</span></font></p></td><td valign="top" width="213"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">FALSE</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">DebugInformationFormat</span></font></p></td><td valign="top" width="180"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">调试信息格式</span></font></p></td><td valign="top" width="213"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Debug</span></font><font face="宋体"><span>下通常设置为</span></font><span>4</span><font face="宋体"><span>，</span></font><span>Release</span><font face="宋体"><span>下可以设置为</span></font><span>3</span></p></td></tr></tbody></table></p><p style="TEXT-INDENT: 21pt" /><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">VCLinkerTool</span></font><font face="宋体"><span>的常用属性如下：</span></font> <table cellspacing="0" cellpadding="0" width="576" bgcolor="#e6e6e6" border="0"><tbody><tr><td width="180"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">属性</span></font></strong></p></td><td width="178"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">含义</span></font></strong></p></td><td width="218"><p style="TEXT-ALIGN: center" align="center"><strong><font face="宋体" size="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 10.5pt">说明</span></font></strong></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">AdditionalDependencies</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">依赖</span></font><span>lib</span><font face="宋体"><span>文件</span></font></p></td><td valign="top" width="218"><p /></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">OutputFile</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">输出的目标文件</span></font></p></td><td valign="top" width="218"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">默认</span></font><span>$(OutDir)/$(ProjectName).exe</span></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">LinkIncremental</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">增量编译</span></font></p></td><td valign="top" width="218"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">2</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">AdditionalLibraryDirectories</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">依赖</span></font><span>lib</span><font face="宋体"><span>的位置</span></font></p></td><td valign="top" width="218"><p /></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">GenerateDebugInformation</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">是否生成调试信息</span></font></p></td><td valign="top" width="218"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">通常都为</span></font><span>TRUE</span></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">ProgramDatabaseFile</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">调试信息文件名称</span></font></p></td><td valign="top" width="218"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">$(IntDir)/$(ProjectName).pdb</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">SubSystem</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">子系统</span></font></p></td><td valign="top" width="218"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">1</span></font><font face="宋体"><span>为控制台，</span></font><span>2</span><font face="宋体"><span>为</span></font><span>Windows</span><font face="宋体"><span>程序</span></font></p></td></tr><tr><td valign="top" width="180"><p><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">ImportLibrary</span></font></p></td><td valign="top" width="178"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">导入的</span></font><span>lib</span><font face="宋体"><span>文件</span></font></p></td><td valign="top" width="218"><p><font face="宋体" size="2"><span style="FONT-SIZE: 10.5pt">默认</span></font><span>$(IntDir)/$(ProjectName).lib</span></p></td></tr></tbody></table></p><p style="TEXT-INDENT: 21pt" /><p style="TEXT-INDENT: 21pt" /><p style="TEXT-INDENT: 21pt"><font face="Times New Roman" size="2"><span style="FONT-SIZE: 10.5pt">Files</span></font><font face="宋体"><span>下包括的是工程中的文件信息，由</span></font><span>Filter</span><font face="宋体"><span>和</span></font><span>File</span><font face="宋体"><span>组成，</span></font><span>Filter</span><font face="宋体"><span>表示目录，</span></font><span>File</span><font face="宋体"><span>表示文件。每个</span></font><span>cpp</span><font face="宋体"><span>还可以包含一个子节点</span></font><span>FileConfiguration</span><font face="宋体"><span>，这个子节点表示此</span></font><span>cpp</span><font face="宋体"><span>文件编译时与全局编译选项不一致的内容，通常情况下除了预编译头文件外这不是必须的，预编译头则必须指定它的</span></font><span>UsePrecompiledHeader</span><font face="宋体"><span>信息为</span></font><span>1</span><font face="宋体"><span>，也就是由它来创建预定义头文件。</span></font></p></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table><p><script type="text/javascript"><!--
google_ad_client = "pub-4270446573400206";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = ["336699","B4D0DC","DFF2FD","B0E0E6"];
google_color_bg = ["FFFFFF","ECF8FF","DFF2FD","FFFFFF"];
google_color_link = ["0000FF","0000CC","0000CC","000000"];
google_color_url = ["008000","008000","008000","336699"];
google_color_text = ["000000","6F6F6F","000000","333333"];
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><script language="JavaScript" type="text/JavaScript" src="http://code.qihoo.com/ad_bcast/html_show.js?a=2252&amp;b=1003&amp;p=2001&amp;nt=&amp;w=760&amp;h=147&amp;m=173844"></script></p>
<p><script language="ja