﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-万水千山只等闲</title><link>http://www.cppblog.com/weining45/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 04:10:02 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 04:10:02 GMT</pubDate><ttl>60</ttl><item><title>VC6.0升级到VS2010</title><link>http://www.cppblog.com/weining45/archive/2014/03/28/206376.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Fri, 28 Mar 2014 07:05:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2014/03/28/206376.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/206376.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2014/03/28/206376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/206376.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/206376.html</trackback:ping><description><![CDATA[1. _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)<br /><br />
<p><span style="font-family: Times New Roman; font-size: 13px">原因：版本问题，VC6中队版本的定义过低<br />解决方案：在StdAfx.h头文件里面加上#include &lt;SDKDDKVer.h&gt;有关于平台的定义<br /><br />2.</span></p><br /><img src ="http://www.cppblog.com/weining45/aggbug/206376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2014-03-28 15:05 <a href="http://www.cppblog.com/weining45/archive/2014/03/28/206376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS2010中字符串相关的安全操作</title><link>http://www.cppblog.com/weining45/archive/2014/03/27/206367.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Thu, 27 Mar 2014 07:15:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2014/03/27/206367.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/206367.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2014/03/27/206367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/206367.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/206367.html</trackback:ping><description><![CDATA[<dl>
<dt><span style="font-family: Verdana">1.strtok和strtok_s<br /></span><span style="font-family: Verdana; color: black">char* strtok(char* strToken, const char* strDelimit );<br /></span>strToken：待处理的字符串<br />strDelimit：分隔符 
<dt>第一次调用该函数时，第一个参数传入需要分解的字符串，之后第一个参数使用NULL表示继续处理之前传入字符串的剩下内容 
<dt><span class="apple-style-span"><span style="color: red" lang="EN-US"><font class="Apple-style-span" face="宋体">NULL</font></span></span><span class="apple-style-span"><span style="color: red"><font class="Apple-style-span" face="宋体">参数表示调用</font><span lang="EN-US"><font class="Apple-style-span" face="宋体">strtok</font></span><font class="Apple-style-span" face="宋体">继续从</font><span lang="EN-US"><font class="Apple-style-span" face="宋体">string</font></span><font class="Apple-style-span" face="宋体">中上次调用</font><span lang="EN-US"><font class="Apple-style-span" face="宋体"> strtok</font></span><font class="Apple-style-span" face="宋体">时保存的位置开始标记化</font></span></span> 
<dt>注：该函数会改变传入的字符串 
<dt>&nbsp; 
<dt>2.fopen和fopen_s 
<dt>FILE * f<a href="http://baike.baidu.com/view/26337.htm" target="_blank">open</a>(const char * path,const char * mode); 
<dt>
<div class="para">errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );</div>
<dt><br />&nbsp;3.sscanf和sscanf_s
<dt>
<div class="para">int sscanf( <a href="http://baike.baidu.com/view/1065598.htm" target="_blank">const</a> <a href="http://baike.baidu.com/view/1006519.htm" target="_blank">char</a> *, const char *, ...);</div>
<div class="para">int sscanf(const char *buffer,const char *format,[argument ]...);</div>
<div class="para">buffer存储的数据</div>
<div class="para">format格式控制字符串</div>
<div class="para">argument 选择性设定字符串</div>
<div class="para">sscanf会从buffer里读进数据，依照format的格式将数据写入到argument里<br /><br />待详述。。。<br /><br /><br /></div></dt></dl><img src ="http://www.cppblog.com/weining45/aggbug/206367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2014-03-27 15:15 <a href="http://www.cppblog.com/weining45/archive/2014/03/27/206367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简易元素和属性</title><link>http://www.cppblog.com/weining45/archive/2012/07/03/181238.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Tue, 03 Jul 2012 03:32:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/07/03/181238.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/181238.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/07/03/181238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/181238.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/181238.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">定义简易元素的语法：</span></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-bidi-font-size: 6.5pt; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:element name="xxx" type="yyy"/&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">此处</span><span lang="EN-US"><font face="Calibri"> xxx </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指元素的名称，</span><span lang="EN-US"><font face="Calibri">yyy </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指元素的数据类型。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">最常用的类型是：</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings" lang="EN-US"><span style="mso-list: Ignore">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri">xs:string</font></span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings" lang="EN-US"><span style="mso-list: Ignore">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri">xs:decimal</font></span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings" lang="EN-US"><span style="mso-list: Ignore">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri">xs:integer</font></span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings" lang="EN-US"><span style="mso-list: Ignore">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri">xs:boolean</font></span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings" lang="EN-US"><span style="mso-list: Ignore">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri">xs:date</font></span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings" lang="EN-US"><span style="mso-list: Ignore">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri">xs:time</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">简易元素可拥有指定的默认值或固定值。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">当没有其他的值被规定时，默认值就会自动分配给元素。</span></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-bidi-font-size: 6.5pt; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:element name="color" type="xs:string" default="red"/&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">固定值同样会自动分配给元素，并且您无法规定另外一个值。</span></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-bidi-font-size: 6.5pt; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:element name="color" type="xs:string" fixed="red"/&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">简易元素无法拥有属性。假如某个元素拥有属性，它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">定义属性的语法是：</span></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-bidi-font-size: 6.5pt; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:attribute name="xxx" type="yyy"/&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">在此处，</span><span lang="EN-US"><font face="Calibri">xxx </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指属性名称，</span><span lang="EN-US"><font face="Calibri">yyy </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">则规定属性的数据类型。常用类型与简易元素相同。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">属性可拥有指定的默认值或固定值。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">当没有其他的值被规定时，默认值就会自动分配给元素。</span></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-bidi-font-size: 6.5pt; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:attribute name="lang" type="xs:string" default="EN"/&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">固定值同样会自动分配给元素，并且您无法规定另外的值。</span></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-bidi-font-size: 6.5pt; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:attribute name="lang" type="xs:string" fixed="EN"/&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">在缺省的情况下，属性是可选的。如需规定属性为必选，请使用</span><span lang="EN-US"><font face="Calibri"> "use" </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">属性：</span></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-bidi-font-size: 6.5pt; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:attribute name="lang" type="xs:string" use="required"/&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p><img src ="http://www.cppblog.com/weining45/aggbug/181238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-07-03 11:32 <a href="http://www.cppblog.com/weining45/archive/2012/07/03/181238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XSD简介</title><link>http://www.cppblog.com/weining45/archive/2012/07/03/181215.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Tue, 03 Jul 2012 01:31:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/07/03/181215.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/181215.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/07/03/181215.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/181215.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/181215.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">XSD</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">：</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">结构定义</span><span lang="EN-US"><font face="Calibri">(XML Schemas Definition ) </font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">描述了</span><span lang="EN-US"><a href="http://baike.baidu.com/view/8428417.htm" target="_blank"><span style="color: windowtext; text-decoration: none; text-underline: none"><font face="Calibri">XML</font></span><span style="font-family: 宋体; color: windowtext; text-decoration: none; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; text-underline: none" lang="EN-US"><span lang="EN-US">文档</span></span></a></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">的结构。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文档设计者可以通过</span><span lang="EN-US"><font face="Calibri">XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指定一个</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文档所允许的结构和内容，并可据此检查一个</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文档是否是有效的。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin"></span><span lang="EN-US"><font face="Calibri">XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">本身是一个</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文档，它符合</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">语法结构。可以用通用的</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">解析器解析它。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">一个</span><span lang="EN-US"><font face="Calibri">XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">会定义：文档中出现的元素、属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。</span><font face="Calibri"> </font></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">&nbsp;</p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">是</span><span lang="EN-US"><font face="Calibri">DTD</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">的替代品。</span></font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">原因：一是据将来的条件可扩展，二是比</span><span lang="EN-US"><font face="Calibri">DTD</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">丰富和有用，三是用</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">书写，四是支持数据类型，五是支持命名空间。</span><font face="Calibri"> </font></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">优点：</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">1) XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">基于</span><span lang="EN-US"><font face="Calibri">XML,</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">没有专门的语法</span><font face="Calibri"> </font></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">2) XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">可以象其他</span><span lang="EN-US"><font face="Calibri">XML</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文件一样解析和处理</span><font face="Calibri"> </font></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">3) XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">支持一系列的数据类型</span><span lang="EN-US"><font face="Calibri">(int</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">、</span><span lang="EN-US"><font face="Calibri">float</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">、</span><span lang="EN-US"><font face="Calibri">Boolean</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">、</span><span lang="EN-US"><font face="Calibri">date</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">等</span><span lang="EN-US"><font face="Calibri">) </font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">4) XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">提供可扩充的数据模型。</span><font face="Calibri"> </font></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">5) XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">支持综合命名空间</span><font face="Calibri"> </font></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">6) XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">支持属性组。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">&nbsp;</p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><strong style="mso-bidi-font-weight: normal"><span lang="EN-US"><font face="Calibri">&lt;schema&gt; </font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">元素是每一个</span><span lang="EN-US"><font face="Calibri"> XML Schema </font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">的根元素</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&lt;?xml version="1.0"?&gt;<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&lt;xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema <o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">targetNamespace="http://www.w3school.com.cn"<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">xmlns="http://www.w3school.com.cn"<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">elementFormDefault="qualified"&gt;<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">...<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&lt;/xs:schema&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">&lt;?xml version="1.0"?&gt;</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">是所有</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文档中都必须有的</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">声明，用途是告诉</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">解析器文档所遵从的</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">规范的版本和使用字符集。目前</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">规范的最高版本就是</span><span lang="EN-US"><font face="Calibri"> 1.0</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">。除了</span><span lang="EN-US"><font face="Calibri"> ISO-8859-1 </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">外（缺省字符集，可以不写），我们做开发时最常用的两个字符集是</span><span lang="EN-US"><font face="Calibri"> GBK </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">和</span><span lang="EN-US"><font face="Calibri"> UTF-8</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">包含在</span><span lang="EN-US"><font face="Calibri"> &lt;? ... ?&gt; </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">中的内容叫做处理指令（</span><span lang="EN-US"><font face="Calibri">Processing Instruction</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">，</span><span lang="EN-US"><font face="Calibri">PI</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">），处理指令不是</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">的一部分，它的作用是为</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">应用程序处理</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">提供一些指示。注意，刚才说的</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">声明虽然与处理指令很像，但并不是处理指令。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">xs:schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">节点中的</span><span lang="EN-US"><font face="Calibri">xmlns:xs</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指出：</span><span lang="EN-US"><font face="Calibri">schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">中用到的元素和数据类型来自命名空间</span><span lang="EN-US"><font face="Calibri"> "http://www.w3.org/2001/XMLSchema"</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">。同时它还规定了来自命名空间</span><span lang="EN-US"><font face="Calibri"> "http://www.w3.org/2001/XMLSchema" </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">的元素和数据类型应该使用前缀</span><span lang="EN-US"><font face="Calibri"> xs</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">targetNamespace</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指出：被此</span><span lang="EN-US"><font face="Calibri"> schema </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">定义的元素来自命名空间：</span><span lang="EN-US"><font face="Calibri"> "http://www.w3school.com.cn</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">xmlns</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指出：默认的命名空间是</span><span lang="EN-US"><font face="Calibri"> "http://www.w3school.com.cn"</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">elementFormDefault</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">指出：任何</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">实例文档所使用的且在此</span><span lang="EN-US"><font face="Calibri"> schema </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">中声明过的元素必须被命名空间限定</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">在</span><span lang="EN-US"><font face="Calibri"> XML </font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文档中引用</span><span lang="EN-US"><font face="Calibri"> Schema<o:p></o:p></font></span></strong></p>
<div style="border-bottom: #778855 1pt dotted; border-left: #778855 1pt dotted; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt;background: whitesmoke; border-top: #778855 1pt dotted; border-right: #778855 1pt dotted; padding-top: 5pt; mso-element: para-border-div; mso-border-alt: dotted #778855 .5pt">
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&lt;?xml version="1.0"?&gt;<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&lt;note xmlns="http://www.w3school.com.cn"<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">xsi:schemaLocation="http://www.w3school.com.cn note.xsd"&gt;<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">...<o:p></o:p></span></p>
<p style="border-bottom: medium none; text-align: left; border-left: medium none; padding-bottom: 0cm; margin: 0cm 0cm 0pt; padding-left: 0cm; padding-right: 0cm;background: whitesmoke; border-top: medium none; border-right: medium none; padding-top: 0cm; mso-pagination: widow-orphan; mso-border-alt: dotted #778855 .5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 5.0pt 5.0pt 5.0pt 5.0pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&lt;/note&gt;<o:p></o:p></span></p></div>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">xmlns</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">：规定了默认命名空间的声明。此声明会告知</span><span lang="EN-US"><font face="Calibri"> schema </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">验证器，在此</span><span lang="EN-US"><font face="Calibri"> XML </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">文档中使用的所有元素都被声明于</span><span lang="EN-US"><font face="Calibri"> "http://www.w3school.com.cn" </font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">这个命名空间</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">xmlns:xsi</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">：声明</span><span lang="EN-US"><font face="Calibri">XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">实例名称空间（</span><span lang="EN-US"><a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank"><span style="color: windowtext; text-decoration: none; text-underline: none"><font face="Calibri">http://www.w3.org/2001/XMLSchema-instance</font></span></a></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">），并将</span><span lang="EN-US"><font face="Calibri">xsi</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">前缀与该名称空间绑定，这样模式处理器就可以识别</span><span lang="EN-US"><font face="Calibri">xsi:schemaLocation</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">属性。</span><span lang="EN-US"><font face="Calibri">XML Schema</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">实例名称空间的前缀通常使用</span><span lang="EN-US"><font face="Calibri">xsi</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">xsi:schemaLocation</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">：使用</span><span lang="EN-US"><font face="Calibri">xsi:schemaLocation</font></span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">属性指定名称空间</span><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">http://www.w3school.com.cn</span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">和模式位置</span><span style="font-family: 'Courier New'; font-size: 9pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">http://www.w3school.com.cn note.xsd</span><span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">相关。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"></span>&nbsp;</p><img src ="http://www.cppblog.com/weining45/aggbug/181215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-07-03 09:31 <a href="http://www.cppblog.com/weining45/archive/2012/07/03/181215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>memcpy,strcpy,strncpy,memcpy_s</title><link>http://www.cppblog.com/weining45/archive/2012/06/20/179511.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Wed, 20 Jun 2012 08:29:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/06/20/179511.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/179511.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/06/20/179511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/179511.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/179511.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">void *memcpy(void *dest, const void *src, int n);</span></p>
<p><span style="font-size: 10pt" class="headline-content">功能：</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 </span></p>
<p><span style="font-size: 10pt" class="headline-content">头文件：</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include &lt;string.h&gt; </span></p>
<p><span style="font-size: 10pt"></span><span style="font-size: 10pt" class="headline-content">返回值：</span></p>
<p><span style="font-size: 10pt" class="headline-content"></span><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向dest的指针。 </span></p>
<p><span style="font-size: 10pt"></span>&nbsp;</p>
<p><span style="font-size: 10pt">char *strcpy(char *dest, char *src); </p>
<div class="spctrl"></div>
<p>功能：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把src所指由'\0'结束的字符串复制到dest所指的数组中。 </p>
<p>头文件：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include "string.h" </p>
<p>返回值：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向dest的指针。</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt">char * strncpy(char *dest, char *src,&nbsp;size_t n); </p>
<div class="spctrl"></div>
<p>功能： </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将字符串src中最多n个字符复制到字符数组dest中</p>
<p>返回值：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向dest的指针。 </p>
<div class="spctrl"></div>
<p>头文件：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include "string.h" </p>
<p></span>&nbsp;</p>
<p><span style="font-size: 10pt" class="headline-content"><font size="2">memcpy</font>说明：</span></p>
<p><span style="font-size: 10pt">　　1.src和dest所指内存区域不能重叠，函数返回指向dest的指针。 </span></p>
<div class="spctrl"></div>
<p><span style="font-size: 10pt">　　2.与strcpy相比，memcpy并不是遇到'\0'就结束，而是一定会拷贝完n个字节。 </span></p>
<div class="spctrl"></div>
<p><span style="font-size: 10pt">　　3.如果目标数组destin本身已有数据，执行memcpy（）后，将覆盖原有数据（最多覆盖n）。如果要追加数据，则每次执行memcpy后，要将目标数组地址增加到你要追加数据的地址。 </span></p>
<div class="spctrl"></div>
<p><span style="font-size: 10pt">　　//注意，src和dest都不一定是数组，任意的可读写的空间均可。</span></p>
<p>&nbsp;</p>
<div class="spctrl"></div>
<p><font size="2">strcpy</font>说明：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。&nbsp;&nbsp;</p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当src串长度&gt;dest串长度时，程序仍会将整个src串复制到dest区域，可是dest数组已发生溢出。因此会导致dest栈空间溢出以致产生崩溃异常。如果不考虑src串的完整性，可以把dest数组最后一元素置为NULL，从dest串长度处插入NULL截取字串。</span></p>
<p><span style="font-size: 10pt"></span>&nbsp;</p><span style="font-size: 10pt">
<div class="spctrl"></div>
<p>strncpy说明： </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它并不像strcpy一样只有遇到NULL才停止复制，而是多了一个条件停止，就是说如果复制到第n个字符还未遇到NULL，也一样停止。</p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果n &gt; dest串长度，dest栈空间溢出产生崩溃异常。 </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;否则： </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1）src串长度&lt;=dest串长度,(这里的串长度包含串尾NULL字符) </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果n=(0, src串长度)，src的前n个字符复制到dest中。但是由于没有NULL字符，所以直接访问dest串会发生栈溢出的异常情况。 </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果n = src串长度，与strcpy一致。 </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果n = dest串长度，[0,src串长度]处存放于desk字串，(src串长度, dest串长度]处存放NULL。 </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2）src串长度&gt;dest串长度 </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果n =dest串长度，则dest串没有NULL字符，会导致输出会有<a href="http://baike.baidu.com/view/47.htm" target="_blank">乱码</a>。如果不考虑src串复制完整性，可以将dest最后一字符置为NULL。 </p>
<div class="spctrl"></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;综上，一般情况下，使用strncpy时，建议将n置为dest串长度（除非你将多个src串都复制到dest数组，并且从dest尾部反向操作)，复制完毕后，为保险起见，将dest串最后一字符置NULL，避免发生在第2)种情况下的输出乱码问题。当然喽，无论是strcpy还是strncpy，保证src串长度&lt;dest串长度才是最重要的。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>strncpy_s:目标空间长度不够时，会弹出assert，使copy不能正常完成，使用时需要指定源缓冲区大小。</p>
<div id="article_content" class="article_content">
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_s函数只是windows提供的特有函数，功能比较强大，但是在有跨平台需求的软件中，不建议使用。</p>
<p>strncpy:拷贝你指定的个数或者碰到'\0'，不验证源缓冲区长度，可能造成越界。<br /></p>
<p>memcpy:不理'\0'，只拷贝你指定的个数，故strcpy可以不指定字符串长度，实现整串copy，而memcpy必定要指定长度。</p></div>
<p></span>&nbsp;</p><img src ="http://www.cppblog.com/weining45/aggbug/179511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-06-20 16:29 <a href="http://www.cppblog.com/weining45/archive/2012/06/20/179511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>route add 命令讲解</title><link>http://www.cppblog.com/weining45/archive/2012/06/14/178782.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Thu, 14 Jun 2012 04:11:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/06/14/178782.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/178782.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/06/14/178782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/178782.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/178782.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">&nbsp;&nbsp;1.具体功能</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该命令用于在本地IP路由表中显示和修改条目。使用不带参数的ROUTE可以显示帮助。</span><br /><span style="font-size: 10pt">&nbsp; 2.语法详解&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route [-f] [-p] [command [destination] [mask netmask] [gateway] [metric&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metric] [if inte***ce]&nbsp; </span><br /><span style="font-size: 10pt">&nbsp; 3.参数说明</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-f&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;清除所有不是主路由(子网掩码为255.255.255.255的路由)、环回网络路由(目标为127.0.0.0，子网掩码为255.255.255.0的路由)或多</span><span style="font-size: 10pt">播路由(目标为224.0.0.0，子网掩码240.0.0.0的路由)的条目的路由表。如果它与命令之一(例如Add、Change或Delete)结合使用，表会在运</span><span style="font-size: 10pt">行命令之前清除。&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-p&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;与Add命令共同使用时，指定路由被添加到注册表并在启动TCP/IP协议的时候初始化IP路由表。默认情况下，启动TCP/IP协议时不会保</span><span style="font-size: 10pt">存添加的路由,与Print命令一起使用时，则显示永久路由列表。所有其他的命令都忽略此参数。永久路由存储在注册表中的位置是：</span><span style="font-size: 10pt">HKEY_LOCAL_MACHSYSTEMCurrentControlSetServicesTcpipParametersPersistentRoutes。&nbsp;</span><br />&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command 指定要运行的命令。下表列出了有效的命令。&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定路由的网络目标地址。目标地址可以是一个IP网络地址(其中网络地址的主机地址位设置为0)，对于主机路由是IP地址，对于默认</span><span style="font-size: 10pt">路由是0.0.0.0。mask&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subnetmask&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定与网络目标地址相关联的网掩码(又称子网掩码)。子网掩码对于IP网络地址可以是一适当的子网掩码，对于主机路由是</span><span style="font-size: 10pt">255.255.255.255</span><span style="font-size: 10pt">，对于默认路由是0.0.0.0。如果忽略，则使用子网掩码255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系</span><span style="font-size: 10pt">，目标地址不能比它对应的子网掩码更为详细。换句话说，如果子网掩码的一位是0，则目标地址中的对应位就不能设置为1。&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gateway&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点IP地址。对于本地连接的子网路由，网关地址是分配给连</span><span style="font-size: 10pt">子网接口的IP地址。对于要经过一个或多个路由器才可用到的远程路由，网关地址是一个分配给相邻路由器的、可直接达到的IP地址。&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metric metric&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为路由指定所需跃点数的整数值(范围是1～9999)，它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选</span><span style="font-size: 10pt">的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if inte***ce 指定目标可以到达的接口的接口索引。使用Route </span><span style="font-size: 10pt">print命令可以显示接口及其对应接口索引的列表。对于接口索引可以</span><span style="font-size: 10pt">使用十进制或十六进制的值。对于十六进制值，要在十六进制数的前面加上0x。忽略if参数时，接口由网关地址确定。&nbsp;&nbsp;</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：路由表中跃点数一列的值较大是由于允许TCP/IP根据每个LAN接口的IP地址、子网掩码和默认网关的配置自动确定路由表中路由的</span><span style="font-size: 10pt">跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度，调整了每个接口的路由跃点数，因此最快接口所创建的路由具有最低</span><span style="font-size: 10pt">的跃点数。要删除大跃点数，请在每个LAN连接的TCP/IP协议的高级属性中禁用自动确定接口跃点数。&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果在systemrootSystem32DriversEtc文件夹的本地网络文件中存在适当的条目，名称可以用于Destination。只要名称可以通过&#8220;域名</span><span style="font-size: 10pt">系统&#8221;(DNS)查询这样的标准主机名解析技术分解为IP地址，就可以将其用于Gateway，DNS查询使用存储在systemrootSystem32DriversEtc </span><br />&nbsp;&nbsp; <br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件夹下的本地主机文件和NetBIOS 名称解析。&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是Print或Delete命令，可以忽略Gateway参数，使用通配符来表示目标和网关。Destination的值可以是由星号(*)指定的通配符。</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果指定目标含有一个星号(*)或问号(?)，它被看作是通配符，只打印或删除匹配的目标路由。星号代表任意一字符序列，问号代表任一字符</span><span style="font-size: 10pt">。例如，10.*.1、192.168.*、127.*和*224*都是星号通配符的有效使用。&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用了无效的目标和子网掩码(网掩码)值的组合，会显示&#8220;Route bad gateway address&nbsp;&nbsp;</span><span style="font-size: 10pt">netmask&#8221;错误消息。目标中有一位或多位设置为1，而其在子网掩码中的对应位设置为0时会发生这个错误。可以通过二进制表示法表示目</span><span style="font-size: 10pt">标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的1和表示目标主机地址部分的一连串的0两个部</span><br /><span style="font-size: 10pt">&nbsp; 分。查看目标以确定目标的主机地址部分(由子网掩码所定义)&nbsp;</span><span style="font-size: 10pt">是否有些位设置成了1。&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows 98 的Route命令不支持-p参数。&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只有当TCP/IP协议在网络连接中安装为网络适配器属性的组件时，该命令才可用。&nbsp; </span><br /><span style="font-size: 10pt">&nbsp; 4.例举说明&nbsp; </span><br /><span style="font-size: 10pt">&nbsp; 例子1：要显示IP路由表的完整内容，执行以下命令：&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; route print&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子2：要显示IP路由表中以10.开始的路由，执行以下命令：&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route print 10.*&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子3：要添加默认网关地址为192.168.12.1的默认路由，执行以下命令：&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route add 0.0.0.0 mask 0.0.0.0 192.168.12.1&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子4：要添加目标为10.41.0.0，子网掩码为255.255.0.0，下一个跃点地址为10.27.0.1的路由，执行以下命令：&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route add 10.41.0.0 mask 255.255.0.0 10.27.0.1&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子5：要添加目标为10.41.0.0，子网掩码为255.255.0.0，下一个跃点地址为10.27.0.1的永久路由，执行以下命令：&nbsp;&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1&nbsp;&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例子6：要添加目标为10.41.0.0，子网掩码为255.255.0.0，下一个跃点地址为10.27.0.1，跃点数为7的路由，执行以下命令：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br />&nbsp;&nbsp;&nbsp;<span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7&nbsp;&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例子7：要添加目标为10.41.0.0，子网掩码为255.255.0.0，下一个跃点地址为10.27.0.1，接口索引为0x3的路由，执行以下命令：&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子8：要删除目标为10.41.0.0，子网掩码为255.255.0.0的路由，执行以下命令： </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route delete 10.41.0.0 mask 255.255.0.0 </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子9：要删除IP路由表中以10.开始的所有路由，执行以下命令： </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route delete 10.*&nbsp;&nbsp;</span></p>
<p><span style="font-size: 10pt"></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例子10：要将目标为10.41.0.0，子网掩码为255.255.0.0的路由的下一个跃点地址由10.27.0.1更改为10.27.0.25，执行以下命令：&nbsp;</span>&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route change 10.41.0.0 mask 255.255.0.0 10.27.0.25</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例子11：要添加静态路由让目标为172.0.0.0网段的都转发到网为为172.25.25.1的路由上</span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route add 172.0.0.0 mask 255.0.0.0 172.25.25.1 metric 2 -p&nbsp; </span></p> <img src ="http://www.cppblog.com/weining45/aggbug/178782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-06-14 12:11 <a href="http://www.cppblog.com/weining45/archive/2012/06/14/178782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第4章	简单绘图</title><link>http://www.cppblog.com/weining45/archive/2012/06/05/177612.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Tue, 05 Jun 2012 01:34:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/06/05/177612.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/177612.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/06/05/177612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/177612.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/177612.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">MFC</span><span style="font-family: 宋体; font-size: 10pt">消息映射机制：</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">在每个能接收和处理消息的类中，定义一个消息和消息函数静态对照表，即消息映射表。在消息映射表中，消息与对应的消息处理函数指针是成对出现的。某个类能处理的所有消息及其对应的消息处理函数的地址都列在这个类所对应的静态表中。当有消息需要处理时，程序只要搜索该消息静态表，查看表中是否含有该消息，就可知道该类能否处理此消息。如果能处理该消息，则同样依照静态表能很容易找到并调用对应的消息处理函数。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">在程序中，当构造一个</span><span style="font-size: 10pt">GDI</span><span style="font-family: 宋体; font-size: 10pt">对象后，该对象并不会立即生效，必须选入设备描述表，它才会在以后的绘制操作中生效。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">一般情况下，在完成绘图操作之后，都要利用</span><span style="font-size: 10pt">SelectObject</span><span style="font-family: 宋体; font-size: 10pt">函数把先前的</span><span style="font-size: 10pt">GDI</span><span style="font-family: 宋体; font-size: 10pt">对象选入设备描述表，以便使其恢复到先前的状态。</span></p><img src ="http://www.cppblog.com/weining45/aggbug/177612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-06-05 09:34 <a href="http://www.cppblog.com/weining45/archive/2012/06/05/177612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第3章	MFC框架程序剖析</title><link>http://www.cppblog.com/weining45/archive/2012/06/05/177611.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Tue, 05 Jun 2012 01:33:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/06/05/177611.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/177611.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/06/05/177611.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/177611.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/177611.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">MFC</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">是微软为了简化程序员的开发工作，将大部分的</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">Windows API</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">函数封装到</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">C++</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">类中的面向对象的框架，是面向对象的函数库。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">CWnd</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">类是</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">MFC</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">中一个非常重要的类，它封装了与窗口相关的操作。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">MFC</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">中的</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">WinMain</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">函数是在程序编译链接时，由链接器将该函数链接到程序中的。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">无论全局变量，还是全局对象，程序在运行时，在加载</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">main</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">函数之前，就已经为全局变量或全局对象分配了内存空间。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">应用程序的实例是由实例句柄来标识的。对于</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">MFC</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">程序来说，通过产生一个应用程序类的对象来唯一标识应用程序的实例。每个</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">MFC</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">程序有且仅有一个从应用程序类派生的类。每个</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">MFC</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">程序实例有且仅有一个该派生类的实例化对象，该对象表示了应用程序本身。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">Afx</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">前缀的函数代表应用程序框架函数。应用程序框架实际上是一套辅助我们生成应用程序的框架模型，该模型把多个类进行了一个有机的集成，可以根据该模型提供的方案来设计我们自己的应用程序。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">InitApplication</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">函数完成</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">MFC</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">内部管理方面的工作。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt; mso-para-margin-bottom: .5gd; mso-char-indent-count: 2.0" class="MsoNormal"><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">微软在设计基础类库时，考虑到要把数据本身与它的显示分离开，于是就采用文档</span><span lang="EN-US"><font face="Calibri"><span style="font-size: 10pt">/</span></font></span><span style="font-family: 宋体; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin">视图结构。数据的存储和加载由文档类来完成，数据的显示和修改则由视图类来完成。</span></p><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">定义一个单文档模板对象，把文档对象、框架对象、视图对象有机地组织在一起；利用</span><span style="font-family: 'Calibri','sans-serif'; font-size: 10pt; mso-fareast-font-family: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang="EN-US">AddDocTemplate</span><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">函数把这个单文档模板添加到文档模板中，从而把这三个类组织成为一个整体。</span> <img src ="http://www.cppblog.com/weining45/aggbug/177611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-06-05 09:33 <a href="http://www.cppblog.com/weining45/archive/2012/06/05/177611.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第2章	掌握C++</title><link>http://www.cppblog.com/weining45/archive/2012/06/05/177610.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Tue, 05 Jun 2012 01:33:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/06/05/177610.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/177610.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/06/05/177610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/177610.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/177610.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">如果一个类中没有定义任何构造函数，那么</span><span style="font-size: 10pt">C++</span><span style="font-family: 宋体; font-size: 10pt">编译器在某些情况下会为该类提供一个默认的构造函数，这个默认的构造函数是一个不带参数的构造函数。只要一个类汇总定义了一个构造函数，不管这个构造函数是否是带参数的构造函数，</span><span style="font-size: 10pt">C++</span><span style="font-family: 宋体; font-size: 10pt">编译器就不再提供默认的构造函数。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">如果一个类中没有定义任何的构造函数，那么编译器只有在以下三种情况，才会提供默认的构造函数：</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 6pt 42pt"><span style="font-size: 10pt">1)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; font-size: 10pt">如果类有虚拟成员函数或者虚拟继承父类（即有虚拟基类）时；</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 6pt 42pt"><span style="font-size: 10pt">2)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; font-size: 10pt">如果类的基类有构造函数（可以是用户定义的构造函数，或编译器提供的默认构造函数）；</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 6pt 42pt"><span style="font-size: 10pt">3)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; font-size: 10pt">在类中的所有非静态的对象数据成员，它们所属的类中有构造函数（可以是用户定义的构造函数，或编译器提供的默认构造函数）。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">在类中定义成员变量时，不能直接给成员变量赋初值。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">基类中的</span><span style="font-size: 10pt">private</span><span style="font-family: 宋体; font-size: 10pt">成员不能被派生类访问，因此</span><span style="font-size: 10pt">private</span><span style="font-family: 宋体; font-size: 10pt">成员不能被派生类所继承。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">函数的覆盖：基类函数必须是虚函数，发生覆盖的两个函数分别位于派生类和基类中，函数的名称与参数列表必须完全相同。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">函数的隐藏：派生类中具有与基类同名的函数，不考虑参数列表是否相同，从而在派生类中隐藏了基类的同名函数。</span></p><span style="font-family: 宋体; font-size: 10pt">生成可执行文件有两个步骤：</span><span style="font-family: 'Calibri','sans-serif'; font-size: 10pt">1.C++</span><span style="font-family: 宋体; font-size: 10pt">编译器对源文件单独进行编译：先由预处理器对预处理指令进行处理，在内存中输出翻译单元；编译器接收预处理的输出，将源代码转换成包含机器语言指令的目标文件。注意，在编译过程中，头文件不参见编译。</span><span style="font-family: 'Calibri','sans-serif'; font-size: 10pt">2.</span><span style="font-family: 宋体; font-size: 10pt">连接器将目标文件和所用到的</span><span style="font-family: 'Calibri','sans-serif'; font-size: 10pt">C++</span><span style="font-family: 宋体; font-size: 10pt">类库文件一起链接生成可执行文件。</span> <img src ="http://www.cppblog.com/weining45/aggbug/177610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-06-05 09:33 <a href="http://www.cppblog.com/weining45/archive/2012/06/05/177610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第1章	Windows程序内部运行机制</title><link>http://www.cppblog.com/weining45/archive/2012/06/05/177609.html</link><dc:creator>Winnie</dc:creator><author>Winnie</author><pubDate>Tue, 05 Jun 2012 01:32:00 GMT</pubDate><guid>http://www.cppblog.com/weining45/archive/2012/06/05/177609.html</guid><wfw:comment>http://www.cppblog.com/weining45/comments/177609.html</wfw:comment><comments>http://www.cppblog.com/weining45/archive/2012/06/05/177609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/weining45/comments/commentRss/177609.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/weining45/services/trackbacks/177609.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">编写标准</span><span style="font-size: 10pt">C</span><span style="font-family: 宋体; font-size: 10pt">程序经常调用的</span><span style="font-size: 10pt">C</span><span style="font-family: 宋体; font-size: 10pt">库函数是由编译器厂商提供的。</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">平台下也有类似的函数可供调用，不同的是，这些函数是由</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">操作系统本身提供的。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">操作系统提供了各种各样的函数，以方便我们开发</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">应用程序，这些函数是</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">操作系统提供给应用程序编程的接口，简称为</span><span style="font-size: 10pt">API</span><span style="font-family: 宋体; font-size: 10pt">函数。所有主要的</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">函数都在</span><span style="font-size: 10pt">Windows.h</span><span style="font-family: 宋体; font-size: 10pt">头文件中进行了声明。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">MSDN</span><span style="font-family: 宋体; font-size: 10pt">是微软向开发人员提供的一套帮助系统，其中包含大量的开发文档、技术文章和示例代码。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">Win32 SDK</span><span style="font-family: 宋体; font-size: 10pt">是</span><span style="font-size: 10pt">Windows 32</span><span style="font-family: 宋体; font-size: 10pt">位平台下的软件开发包，包括了</span><span style="font-size: 10pt">API</span><span style="font-family: 宋体; font-size: 10pt">函数、帮助文档、微软提供的一些辅助开发工具。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">窗口是</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">应用程序中的一个非常重要的元素，一个</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">应用程序至少要有一个窗口。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">在消息的结构体中有相关窗口的句柄，消息类型，消息参数，时间和鼠标位置等信息。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">每一个</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">应用程序开始执行后，系统都会为该程序创建一个消息队列，这个消息队列用来存放该程序创建的窗口的消息。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">程序中的消息可以分为&#8220;进队消息&#8221;和&#8220;不进队消息&#8221;。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">在函数调用过程中，会使用栈。</span><span style="font-size: 10pt">_stdcall</span><span style="font-family: 宋体; font-size: 10pt">与</span><span style="font-size: 10pt">_cdecl</span><span style="font-family: 宋体; font-size: 10pt">是两种不同的函数调用约定，定义了函数参数入栈的顺序，由调用函数还是被调用函数将参数弹出栈，以及产生函数修饰名的方法。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">应用程序的入口是</span><span style="font-size: 10pt">WinMain</span><span style="font-family: 宋体; font-size: 10pt">函数，由插入到可执行文件中的启动代码调用。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">WinMain</span><span style="font-family: 宋体; font-size: 10pt">函数的参数指定了该程序当前运行的实例句柄，命令行参数，以及窗口应该如何显示。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">设计窗体类就是指定窗口的特征，包括窗口的样式，窗口过程函数，</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">窗口过程函数被调用的过程如下：</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 6pt 42pt"><span style="font-size: 10pt">1)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; font-size: 10pt">在设计窗口类的时候，将窗口过程函数的地址赋值给</span><span style="font-size: 10pt">lpfnWWndProc</span><span style="font-family: 宋体; font-size: 10pt">成员变量；</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 6pt 42pt"><span style="font-size: 10pt">2)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; font-size: 10pt">调用</span><span style="font-size: 10pt">RegsiterClass(&amp;wndclass)</span><span style="font-family: 宋体; font-size: 10pt">注册窗口类，那么系统就有了我们所编写的窗口过程函数的地址；</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 6pt 42pt"><span style="font-size: 10pt">3)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; font-size: 10pt">当应用程序接收到某一窗口的消息时，调用</span><span style="font-size: 10pt">DispatchMessage(&amp;msg)</span><span style="font-family: 宋体; font-size: 10pt">将消息回传给系统，系统则利用先前注册窗口类时得到的函数指针，调用窗口过程函数对消息进行处理。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-size: 10pt">Win32</span><span style="font-family: 宋体; font-size: 10pt">的</span><span style="font-size: 10pt">API</span><span style="font-family: 宋体; font-size: 10pt">函数都遵循</span><span style="font-size: 10pt">_stdcall</span><span style="font-family: 宋体; font-size: 10pt">调用约定。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">在</span><span style="font-size: 10pt">VC++</span><span style="font-family: 宋体; font-size: 10pt">开发环境中，默认的编译选项是</span><span style="font-size: 10pt">_cdecl</span><span style="font-family: 宋体; font-size: 10pt">。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">在</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">程序中，回调函数必须遵循</span><span style="font-size: 10pt">_stdcall</span><span style="font-family: 宋体; font-size: 10pt">调用约定。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">要在窗口中输出文字或者显示图形，需要用到设备描述表</span><span style="font-size: 10pt">DC</span><span style="font-family: 宋体; font-size: 10pt">。</span><span style="font-size: 10pt">DC</span><span style="font-family: 宋体; font-size: 10pt">是一个包含设备信息的结构体，在</span><span style="font-size: 10pt">Windows</span><span style="font-family: 宋体; font-size: 10pt">平台下，所有的图形操作都是利用</span><span style="font-size: 10pt">DC</span><span style="font-family: 宋体; font-size: 10pt">来完成的。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">当窗口从无到有、改变尺寸、最小化后恢复、被其他窗口遮盖后再显示时，窗口的客户区都将变为无效。当窗口客户区的一部分或者全部变为&#8220;无效&#8221;时，系统会发送</span><span style="font-size: 10pt">WM_PAINT</span><span style="font-family: 宋体; font-size: 10pt">消息，通知应用程序重新绘制窗口。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 6pt"><span style="font-family: 宋体; font-size: 10pt">当窗口刚创建的时候，整个客户区都是无效的。因为这个时候程序还没有在窗口上绘制任何东西，当调用</span><span style="font-size: 10pt">UpdateWindow</span><span style="font-family: 宋体; font-size: 10pt">函数时，会发送</span><span style="font-size: 10pt">WM_PAINT</span><span style="font-family: 宋体; font-size: 10pt">消息给窗口过程，对窗口进行刷新。</span></p><img src ="http://www.cppblog.com/weining45/aggbug/177609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/weining45/" target="_blank">Winnie</a> 2012-06-05 09:32 <a href="http://www.cppblog.com/weining45/archive/2012/06/05/177609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>