<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 <channel>
  <title>xingzhe</title>
  <link>http://xingzhesun.blogbus.com</link>
  <description><![CDATA[软件学习笔记&心得。]]></description>
  <generator> by blogbus.com </generator>
  <lastBuildDate>Mon, 16 Nov 2009 14:31:49 +0800</lastBuildDate>
  <image>
									<url>http://public.blogbus.com/profile/1/3/9/1025931/avatar_1025931_96.jpg</url>
									<title>xingzhe</title>
									<link>http://xingzhesun.blogbus.com</link>
								</image>  <item>
   <title>vb.net</title>
   <description><![CDATA[<p>&lt;%@ Page language="VB" %&gt;<br /><br />&lt;script runat="server"&gt;<br /><br />dim arrColors(5) as String<br />sub Page_Load(obj as object, e as eventargs)<br />&nbsp;arrColor(0) = "green"<br />&nbsp;arrColor(1) = "red"<br />&nbsp;arrColor(2) = "yellow"<br />&nbsp;arrColor(3) = "blue"<br />&nbsp;arrColor(4) = "violet"<br />&nbsp;<br />&nbsp;Response.Write("The first element is: ")<br />&nbsp;Response.Write(arrColor(0)&amp;"&lt;p&gt;")<br /><br />&nbsp;Response.Write("The third element is: ")<br />&nbsp;Response.Write(arrColor(2) &amp; "&lt;p&gt;")<br /><br />end sub<br />&lt;/script&gt;<br />&lt;html&gt;<br />&lt;body&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br />ReDim Preserver arrColor(12) 增加长度<br />Erase arrColor		     清空数组<br /><br />if (condition ) then<br />&nbsp;some code<br />end if<br /><br />Select Case variable<br />&nbsp;Case option1<br />&nbsp;code<br />&nbsp;Case Else<br />&nbsp;	code<br />End<br /><br />Select Case FirstName<br />&nbsp;Case "sun"<br />&nbsp;Response.Write("")<br />&nbsp;Case "Paul"<br />&nbsp;Response.Write("ds")<br />End Select<br /><br /><br />while condition<br />&nbsp;code<br />End While<br /><br />dim intCount as Integer = 1<br />while intCount &lt; 10&nbsp;<br />&nbsp;	Response.Write(intCount &amp; "&lt;pr&gt;")<br />&nbsp;intCount = intCount -1;<br />End While<br /><br />For intCount = 1 to 12<br />&nbsp;Response.Write(intCount)<br />Next<br /><br />在VB.NET中有两种分支逻辑：函数和子程序，去区别在于函数能返回信息，而子程序不能。<br /><br />Sub name(parameters)<br />&nbsp;code<br />End Sub<br /><br />function name(parameters) as type<br />&nbsp;code<br />&nbsp;Return value<br />end function<br /><br />sub Page_Load(obj as object, e as eventargs)<br />&nbsp;code<br />end sub<br /><br /><br />&lt;script runat="server"&gt;<br />&nbsp; sub Page_Load(obj as object, e as eventargs)<br />&nbsp;MultiplyNumbers(3,4)<br />&nbsp;MultiplyNumbers(3,6)<br />&nbsp; end sub<br /><br /><br />&nbsp; sub MultiplyNumbers(intA as integer, intB as integer)<br />&nbsp;Response.Wirte(intA*intB &amp;&lt;br&gt;)<br />&nbsp; end sub<br />&lt;/script&gt;<br /><br /><br />可选参数 function MutliplyNumbers(intA as integer, optional intB as integer) as Integer<br />&lt;script runat="server"&gt;<br />&nbsp; Class Clock<br />&nbsp;public second as integer<br />&nbsp;public minute as integer<br />&nbsp;public hour as integer<br />&nbsp;<br />&nbsp;sub SetTime(intSec as integer, intMin as integer,intHour as as integer)<br />&nbsp;	Second = integer<br />&nbsp;	Minute = intMin<br />&nbsp;	hour = intHour<br />&nbsp;end sub<br />&nbsp; End Class<br /><br />&lt;/script&gt;<br /></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/33485925.html">获取word页面的高度和宽度</a> 2009-01-06</div><div><a href="/logs/25201497.html">在在VC工程中去掉自动化接口</a> 2008-07-21</div><div><a href="/logs/16544421.html">真丢人啊</a> 2008-03-07</div><div><a href="/logs/4680446.html">swing</a> 2007-03-04</div><div><a href="/logs/4227636.html">阻止构造函数转换</a> 2007-01-07</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F47934511.html&title=vb.net">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/47934511.html</link>
   <author>xingzhebnu</author>
   <pubDate>Fri, 09 Oct 2009 14:11:31 +0800</pubDate>
  </item>
  <item>
   <title>事件处理</title>
   <description><![CDATA[<p>#pragma once<br />#include &lt;atlstr.h&gt;</p>
<p><br />class CUccEvent;<br />class CUccEventHandler<br />{<br />public:<br />&nbsp;CUccEventHandler(){};<br />&nbsp;&nbsp;virtual ~CUccEventHandler(){};<br />public:<br />&nbsp;virtual bool Do(LPCTSTR lpMsg) = 0{};<br />};</p>
<p>&nbsp;</p>
<p>class CUccEvent<br />{<br />public:<br />&nbsp;CUccEvent(void):m_pEventHder(NULL){}</p>
<p>&nbsp;CUccEvent(CUccEventHandler* pEventHder){<br />&nbsp;&nbsp;m_pEventHder = pEventHder;<br />&nbsp;}</p>
<p>&nbsp;virtual ~CUccEvent(void){<br />&nbsp;&nbsp;m_pEventHder = NULL;<br />&nbsp;}</p>
<p>public:<br />&nbsp;void Attach(const CUccEventHandler* pEventHder){<br />&nbsp;&nbsp;m_pEventHder = (CUccEventHandler*)pEventHder;<br />&nbsp;}</p>
<p>&nbsp;CUccEventHandler* Detach(void){<br />&nbsp;&nbsp;CUccEventHandler* pTemp = m_pEventHder;<br />&nbsp;&nbsp;m_pEventHder = NULL;<br />&nbsp;&nbsp;return pTemp;<br />&nbsp;}</p>
<p>public:<br />&nbsp;virtual bool Fire(LPCTSTR lpMsg) = 0{<br />&nbsp;&nbsp;if (NULL != m_pEventHder)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;return m_pEventHder-&gt;Do(lpMsg);<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;return FALSE;<br />&nbsp;&nbsp;}<br />&nbsp;}<br />private:<br />&nbsp;CUccEventHandler*&nbsp;m_pEventHder;<br />};</p>
<p><br />class CUccGpEventHandler:public CUccEventHandler<br />{<br />public:<br />&nbsp;CUccGpEventHandler(void){};<br />&nbsp;virtual ~CUccGpEventHandler(){};<br />public:<br />&nbsp;virtual bool Do(LPCTSTR lpMsg)<br />&nbsp;{<br />&nbsp;&nbsp;return true;<br />&nbsp;}<br />};</p>
<p><br />class CUccGpEvent:public CUccEvent<br />{<br />public:<br />&nbsp;CUccGpEvent(CUccEventHandler* pEventHder):CUccEvent(pEventHder){};&nbsp;&nbsp;<br />&nbsp; ~CUccGpEvent(){};<br />public:<br />&nbsp;virtual bool Fire(LPCTSTR lpMsg){<br />&nbsp;&nbsp;return CUccEvent::Fire(lpMsg);<br />&nbsp;}<br />};</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/41516895.html">SQL查询</a> 2009-06-26</div><div><a href="/logs/36211831.html">AccessibleObjectFromWindow</a> 2009-03-06</div><div><a href="/logs/35595053.html">雷人的C++面试题目</a> 2009-02-23</div><div><a href="/logs/25910091.html">应聘者&amp;amp;面试官都是纸老虎</a> 2008-07-29</div><div><a href="/logs/24904320.html">Codejock  InitCommandBars</a> 2008-07-17</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F42018951.html&title=%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/42018951.html</link>
   <author>xingzhebnu</author>
   <pubDate>Tue, 07 Jul 2009 15:29:57 +0800</pubDate>
  </item>
  <item>
   <title>SQL查询</title>
   <description><![CDATA[<p><br />转自: <a href="http://rzchina.net/node/3180">http://rzchina.net/node/3180</a></p>
<p><br />写出一条SQL语句：取出表A中第31～40条记录（SQLServer，以自动增长的ID作为主键）</p>
<p>注意：ID可能不是连续的。<br />【考点】<br />数据表中连续记录的查询方法。<br />【出现频率】<br />★★★☆☆<br />【解答】<br />&nbsp;SELECT TOP 10 * FROM [A] WHERE [id] NOT IN(SELECT TOP 30 [id] FROM [A])<br />【分析】<br />这道题目非常简单，也有多种解答方法。这里作者用IN子句查询出表A的前30条记录，IN子句可确定指定的值是否与子查询或列表中的值相匹配，其语法格式如以下代码所示。<br />用于测试的表达式 [ NOT ] IN( 子查询 | 表达式列表 [ ,...n ])<br />为了查询到第31到第40记录，本题解答中在IN前面使用了NOT关键字，对IN子句的结果取反。即表A中所查询的记录要求id字段值不处于前30条记录的id字段值中，然后查询这些记录的前10条即可（TOP 10）。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35241304.html">reference的底层几乎都是以指针来完成的</a> 2009-02-16</div><div><a href="/logs/26568606.html">svn文件目录</a> 2008-08-01</div><div><a href="/logs/25499490.html">Codejock 的CXTPTabClientWnd</a> 2008-07-25</div><div><a href="/logs/24904320.html">Codejock  InitCommandBars</a> 2008-07-17</div><div><a href="/logs/16544421.html">真丢人啊</a> 2008-03-07</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F41516895.html&title=SQL%E6%9F%A5%E8%AF%A2">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/41516895.html</link>
   <author>xingzhebnu</author>
   <pubDate>Fri, 26 Jun 2009 14:05:28 +0800</pubDate>
  </item>
  <item>
   <title>怎样检查内存泄漏?</title>
   <description><![CDATA[<p>一 在程序开始点添加</p>
<p>&nbsp;int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );<br />&nbsp;tmpFlag |= _CRTDBG_LEAK_CHECK_DF;<br />&nbsp;_CrtSetDbgFlag( tmpFlag );</p>
<p>包含</p>
<p>#define _CRTDBG_MAP_ALLOC <br />#include&lt;stdlib.h&gt; <br />#include&lt;crtdbg.h&gt; </p>
<p>二 完整运行程序,出现调试信息</p>
<p>&nbsp;</p>
<p>三 在出现程序开始的位置</p>
<p>_crtBreakAlloc = [内存分配的序号]</p>
<p>四 运行程序,在[内存分配的序号]位置停下来.</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/42018951.html">事件处理</a> 2009-07-07</div><div><a href="/logs/39231888.html">C++内存泄漏</a> 2009-05-11</div><div><a href="/logs/35241304.html">reference的底层几乎都是以指针来完成的</a> 2009-02-16</div><div><a href="/logs/26568606.html">svn文件目录</a> 2008-08-01</div><div><a href="/logs/25910091.html">应聘者&amp;amp;面试官都是纸老虎</a> 2008-07-29</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F41222616.html&title=%E6%80%8E%E6%A0%B7%E6%A3%80%E6%9F%A5%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%3F">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/41222616.html</link>
   <author>xingzhebnu</author>
   <pubDate>Fri, 19 Jun 2009 17:32:01 +0800</pubDate>
  </item>
  <item>
   <title>在vs2008中提供对Web Service的访问</title>
   <description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>由于vs2008中不能添加Web 服务的引用.我的解决方法是,首先在VS2003中实现该功能,然后将访问Web service的H文件,添加到VS2008中.</p>
<p>&nbsp;</p>
<p>一.利用vs2003建立一个非托管的访问Web Service的程序，得到Web Serices的H文件。该文间包含了Web Services提供的API<br />1.创建一个Mfc应用程序vs2003E2C,不选择"使用托管扩展"选项。<br />2.右击项目，弹出在快捷菜单中选则"添加Web引用"菜单项.<br />3.在添加Web引用的url中输入Web service的url."<a href="http://fy.webxml.com.cn/webservices/EnglishChinese.asmx">http://fy.webxml.com.cn/webservices/EnglishChinese.asmx</a>",这是一个提供英语与汉语翻译的Webservice.<br />4 点击"转到"按钮,然后就找到了这个WEBservice服务.<br />5.在"Web引用中输入","E2CWebService",再单击"添加引用".编译器就会为我们编译生成"E2CWebService.h"文件.这就是我们访问Web Service的接口文件. <br />6.在该程序中测试该websercice<br />///////////////////////////////////////////////////////////<br />// <br />//<br />&nbsp;::CoInitialize(NULL);<br />&nbsp;using namespace EnglishChinese;</p>
<p>&nbsp;CEnglishChineseT&lt;&gt; e2c;</p>
<p><br />&nbsp;BSTR&nbsp;sKey = L"city";<br />&nbsp;BSTR*&nbsp;pRet = new BSTR[5]; <br />&nbsp;int&nbsp;nLen = 0;<br />&nbsp;HRESULT hr = e2c.TranslatorString(sKey, &amp;pRet, &amp;nLen);</p>
<p>&nbsp;if (SUCCEEDED(hr))<br />&nbsp;{<br />&nbsp;&nbsp;CComBSTR br0(pRet[0]);<br />&nbsp;&nbsp;CComBSTR br1(pRet[1]);<br />&nbsp;&nbsp;CComBSTR br2(pRet[2]);<br />&nbsp;&nbsp;CComBSTR br3(pRet[3]);//"城市"<br />&nbsp;&nbsp;CComBSTR br4(pRet[4]);</p>
<p>&nbsp;}</p>
<p>&nbsp;::CoUninitialize();&nbsp;<br />//<br />//<br />//////////////////////////////////////////////////////////////<br />二.从<a href="http://www.codeplex.com/AtlServer">http://www.codeplex.com/AtlServer</a>下载ATL的访问Web Servrice的文件,下载解压后为文件夹 ATL_Server_Code</p>
<p><br />三.将在VS2008中添加ATL_Server_Code文件夹的配置<br />1.options-&gt;Projects and Solutions-&gt;<a href="http://www.vchelp.net/" target="_blank">VC</a>++ Directories<br />2.在Show directoried for下拉框中选择"include files"<br />3.新建一项,输入".\Atl_Server\Code\include".使用现对路径<br />4.OK</p>
<p>四.在VS2008的工程中包含Web Serices的H文件即可.调用的方法同上.</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/40336527.html">Visual Studio 2008运行时提示找不到msvcr90d.dll的解决办法</a> 2009-06-02</div><div><a href="/logs/39288183.html">windows 服务程序</a> 2009-05-12</div><div><a href="/logs/36115486.html">微软研究院Detour开发包之API拦截技术</a> 2009-03-05</div><div><a href="/logs/27746345.html">VS2005 解决&quot;应用程序配置不正确，程序无法启动&quot;问题</a> 2008-08-15</div><div><a href="/logs/10282482.html">vc++的反向工程</a> 2007-10-14</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F40906775.html&title=%E5%9C%A8vs2008%E4%B8%AD%E6%8F%90%E4%BE%9B%E5%AF%B9Web+Service%E7%9A%84%E8%AE%BF%E9%97%AE">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/40906775.html</link>
   <author>xingzhebnu</author>
   <pubDate>Fri, 12 Jun 2009 15:18:09 +0800</pubDate>
  </item>
  <item>
   <title>Web service到底是什么？</title>
   <description><![CDATA[<p>转自: <a href="http://server.zdnet.com.cn/server/2008/1205/1266644.shtml">http://server.zdnet.com.cn/server/2008/1205/1266644.shtml</a></p>
<p>　　分布式应用程序和浏览器 </p>
<p>　　研究一下当前的应用程序开发，你会发现一个绝对的倾向：人们开始偏爱基于浏览器的瘦客户应用程序。这当然不是因为瘦客户能够提供更好的用户界面，而是因为它能够避免花在桌面应用程序发布上的高成本。发布桌面应用程序成本很高，一半是因为应用程序安装和配置的问题，另一半是因为客户和服务器之间通信的问题。</p>
<p>　　传统的Windows富客户应用程序使用DCOM来与服务器进行通信和调用远程对象。配置好DCOM使其在一个大型的网络中正常工作将是一个极富挑战性的工作，同时也是许多IT工程师的噩梦。事实上，许多IT工程师宁愿忍受浏览器所带来的功能限制，也不愿在局域网上去运行一个DCOM。在我看来，结果就是一个发布容易，但开发难度大而且用户界面极其受限的应用程序。极端的说，就是你花了更多的资金和时间，却开发出从用户看来功能更弱的应用程序。不信?问问你的会计师对新的基于浏览器的会计软件有什么想法：绝大多数商用程序用户希望使用更加友好的Windows用户界面。</p>
<p>　　关于客户端与服务器的通信问题，一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用HTTP协议。同时，当前许多防火墙也配置为只允许HTTP连接。</p>
<p>　　许多商用程序还面临另一个问题，那就是与其他程序的互操作性。如果所有的应用程序都是使用COM或.NET语言写的，并且都运行在Windows平台上，那就天下太平了。然而，事实上大多数商业数据仍然在大型主机上以非关系文件(VSAM)的形式存放，并由COBOL语言编写的大型机程序访问。而且，目前还有很多商用程序继续在使用C++、Java、Visual Basic和其他各种各样的语言编写。现在，除了最简单的程序之外，所有的应用程序都需要与运行在其他异构平台上的应用程序集成并进行数据交换。这样的任务通常都是由特殊的方法，如文件传输和分析，消息队列，还有仅适用于某些情况的的API，如IBM的"高级程序到程序交流(APPC)"等来完成的。在以前，没有一个应用程序通信标准，是独立于平台、组建模型和编程语言的。只有通过Web Service，客户端和服务器才能够自由的用HTTP进行通信，不论两个程序的平台和编程语言是什么。</p>
<p>　　什么是Web Service</p>
<p>　　对这个问题，我们至少有两种答案。从表面上看，Web Service 就是一个应用程序，它向外界暴露出一个能够通过Web进行调用的API。这就是说，你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个Web Service 的应用程序叫做客户。例如，你想创建一个Web Service ，它的作用是返回当前的天气情况。那么你可已建立一个ASP页面，它接受邮政编码作为查询字符串，然后返回一个由逗号隔开的字符串，包含了当前的气温和天气。要调用这个ASP页面，客户端需要发送下面的这个HTTP GET请求：</p>
<p>　　<a href="http://host.company.com/weather.asp?zipcode=20171">http://host.company.com/weather.asp?zipcode=20171</a></p>
<p>　　返回的数据就应该是这样：</p>
<p>　　这个ASP页面就应该可以算作是Web Service 了。因为它基于HTTP GET请求，暴露出了一个可以通过Web调用的API。当然，Web Service 还有更多的东西。</p>
<p>　　下面是对Web Service 更精确的解释： Web Services是建立可互操作的分布式应用程序的新平台。作为一个Windows程序员，你可能已经用COM或DCOM建立过基于组件的分布式应用程序。COM是一个非常好的组件技术，但是我们也很容易举出COM并不能满足要求的情况。</p>
<p>　　Web Service平台是一套标准，它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言，在任何你喜欢的平台上写Web Service ，只要我们可以通过Web Service标准对这些服务进行查询和访问。</p>
<p>　　新平台</p>
<p>　　Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性，Web Service平台必须提供一套标准的类型系统，用于沟通不同平台、编程语言和组件模型中的不同类型系统。在传统的分布式系统中，基于界面(interface)的平台提供了一些方法来描述界面、方法和参数(译注：如COM和COBAR中的IDL语言)。同样的，Web Service平台也必须提供一种标准来描述Web Service，让客户可以得到足够的信息来调用这个Web Service。最后，我们还必须有一种方法来对这个Web Service进行远程调用。这种方法实际是一种远程过程调用协议(RPC)。为了达到互操作性，这种RPC协议还必须与平台和编程语言无关。下面几个小节就简要介绍了组成Web Service平台的这三个技术。</p>
<p>　　XML和XSD </p>
<p>　　可扩展的标记语言(XML)是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外，XML主要的优点在于它既是平台无关的，又是厂商无关的。无关性是比技术优越性更重要的：软件厂商是不会选择一个由竞争对手所发明的技术的。</p>
<p>　　XML解决了数据表示的问题，但它没有定义一套标准的数据类型，更没有说怎么去扩展这套数据类型。例如，整形数到底代表什么?16位，32位，还是64位?这些细节对实现互操作性都是很重要的。W3C制定的XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型，并给出了一种语言来扩展这套数据类型。Web Service平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web Service时，为了符合Web Service标准，所有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换，但你很可能会根据你的需要修改一下转换过程。在第二章中，我们将深入XSD，学习怎样转换自定义的数据类型(例如类)到XSD的类型。</p>
<p>　　SOAP</p>
<p>　　Web Service建好以后，你或者其他人就会去调用它。简单对象访问协议(SOAP)提供了标准的RPC方法来调用Web Service。实际上，SOAP在这里有点用词不当：它意味着下面的Web Service是以对象的方式表示的，但事实并不一定如此：你完全可以把你的Web Service写成一系列的C函数，并仍然使用SOAP进行调用。SOAP规范定义了SOAP消息的格式，以及怎样通过HTTP协议来使用SOAP。SOAP也是基于XML和XSD的，XML是SOAP的数据编码方式。第三章我们会讨论SOAP，并结识SOAP消息的各种元素。</p>
<p>　　WSDL</p>
<p>　　你会怎样向别人介绍你的Web Service有什么功能，以及每个函数调用时的参数呢?你可能会自己写一套文档，你甚至可能会口头上告诉需要使用你的Web Service的人。这些非正式的方法至少都有一个严重的问题：当程序员坐到电脑前，想要使用你的Web Service的时候，他们的工具(如Visual Studio)无法给他们提供任何帮助，因为这些工具根本就不了解你的Web</p>
<p>　　service。解决方法是：用机器能阅读的方式提供一个正式的描述文档。Web Service描述语言(WSDL)就是这样一个基于XML的语言，用于描述Web Service及其函数、参数和返回值。因为是基于XML的，所以WSDL既是机器可阅读的，又是人可阅读的，这将是一个很大的好处。一些最新的开发工具既能根据你的Web Service生成WSDL文档，又能导入WSDL文档，生成调用相应Web Service的代码。</p>
<p>&nbsp;</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/40848877.html">Advise 和UnAdvise的</a> 2009-06-11</div><div><a href="/logs/36679564.html">替代IDispatch::Invoke的SINK方法</a> 2009-03-17</div><div><a href="/logs/36677081.html">My first ATL COM with connection point</a> 2009-03-17</div><div><a href="/logs/36581259.html">CHAIN_MSG_MESSAGE</a> 2009-03-15</div><div><a href="/logs/36579682.html">CWindowImplBaseT的窗口例程</a> 2009-03-15</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F40900457.html&title=Web+service%E5%88%B0%E5%BA%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/40900457.html</link>
   <author>xingzhebnu</author>
   <pubDate>Fri, 12 Jun 2009 13:29:50 +0800</pubDate>
  </item>
  <item>
   <title>Advise 和UnAdvise的</title>
   <description><![CDATA[<p>/////////////////////////////////////////////////////////////////////////////<br />// Connection Point Helpers</p>
<p>ATLINLINE ATLAPI AtlAdvise(IUnknown* pUnkCP, IUnknown* pUnk, const IID&amp; iid, LPDWORD pdw)<br />{<br />&nbsp;if(pUnkCP == NULL)<br />&nbsp;&nbsp;return E_INVALIDARG;<br />&nbsp;&nbsp;<br />&nbsp;CComPtr&lt;IConnectionPointContainer&gt; pCPC;<br />&nbsp;CComPtr&lt;IConnectionPoint&gt; pCP;<br />&nbsp;HRESULT hRes = pUnkCP-&gt;QueryInterface(__uuidof(IConnectionPointContainer), (void**)&amp;pCPC);<br />&nbsp;if (SUCCEEDED(hRes))<br />&nbsp;&nbsp;hRes = pCPC-&gt;FindConnectionPoint(iid, &amp;pCP);<br />&nbsp;if (SUCCEEDED(hRes))<br />&nbsp;&nbsp;hRes = pCP-&gt;Advise(pUnk, pdw);<br />&nbsp;return hRes;<br />}</p>
<p>/////////////////////////////////////////////////////////////////////////////<br />ATLINLINE ATLAPI AtlUnadvise(IUnknown* pUnkCP, const IID&amp; iid, DWORD dw)<br />{<br />&nbsp;if(pUnkCP == NULL)<br />&nbsp;&nbsp;return E_INVALIDARG;<br />&nbsp;&nbsp;<br />&nbsp;CComPtr&lt;IConnectionPointContainer&gt; pCPC;<br />&nbsp;CComPtr&lt;IConnectionPoint&gt; pCP;<br />&nbsp;HRESULT hRes = pUnkCP-&gt;QueryInterface(__uuidof(IConnectionPointContainer), (void**)&amp;pCPC);<br />&nbsp;if (SUCCEEDED(hRes))<br />&nbsp;&nbsp;hRes = pCPC-&gt;FindConnectionPoint(iid, &amp;pCP);<br />&nbsp;if (SUCCEEDED(hRes))<br />&nbsp;&nbsp;hRes = pCP-&gt;Unadvise(dw);<br />&nbsp;return hRes;</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/40900457.html">Web service到底是什么？</a> 2009-06-12</div><div><a href="/logs/36679564.html">替代IDispatch::Invoke的SINK方法</a> 2009-03-17</div><div><a href="/logs/36677081.html">My first ATL COM with connection point</a> 2009-03-17</div><div><a href="/logs/36581259.html">CHAIN_MSG_MESSAGE</a> 2009-03-15</div><div><a href="/logs/36579682.html">CWindowImplBaseT的窗口例程</a> 2009-03-15</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F40848877.html&title=Advise+%E5%92%8CUnAdvise%E7%9A%84">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/40848877.html</link>
   <author>xingzhebnu</author>
   <pubDate>Thu, 11 Jun 2009 10:49:18 +0800</pubDate>
  </item>
  <item>
   <title>删除文件夹中的文件</title>
   <description><![CDATA[<p>需要调用三个函数</p>
<p>//删除字符串最后的斜杠</p>
<p>1.&nbsp;void&nbsp;TrimSlash(CString&amp; strTxt);//参数为被删除文件的路径</p>
<p>//删除文件夹中的文件和文件夹</p>
<p>2.void DeleteFilesAndFolders(LPCTSTR lpFiles);//参数为被删除文件的路径</p>
<p>应用举例:</p>
<p>//////////////////////////////////////</p>
<p>&nbsp;CString strPath(_T("D:\\sunhm@seepole.net\\"));<br />&nbsp;<br />&nbsp;TrimSlash(strPath);<br />&nbsp;//<br />&nbsp;strPath += _T("\\");<br />&nbsp;//<br />&nbsp;DeleteFilesAndFolders(strPath);</p>
<p>//////////////////////////////////////////////</p>
<p>void TrimSlash(CString&amp; strTxt)<br />{<br />&nbsp;ATLASSERT(!strTxt.IsEmpty());</p>
<p>&nbsp;int nFind = strTxt.ReverseFind('\\');<br />&nbsp;int nLen = strTxt.GetLength();<br />&nbsp;if (-1 != nFind &amp;&amp; nFind == nLen - 1)&nbsp;&nbsp;&nbsp;//slash<br />&nbsp;{<br />&nbsp;&nbsp;strTxt.Delete(nFind);</p>
<p>&nbsp;&nbsp;//<br />&nbsp;&nbsp;TrimSlash(strTxt);<br />&nbsp;}else{<br />&nbsp;&nbsp;return;<br />&nbsp;}</p>
<p>}</p>
<p>///////////////////////////////////////////////////////////////////</p>
<p>void CLookFileDlg::DeleteFilesAndFolders( LPCTSTR lpFiles )<br />{<br />&nbsp;WIN32_FIND_DATA FileData;&nbsp;&nbsp;&nbsp;//<br />&nbsp;TCHAR szFileName[MAX_PATH] = {0};&nbsp;// <br />&nbsp;CString strPath(lpFiles);&nbsp;&nbsp;&nbsp;//path</p>
<p>&nbsp;//Get file attributes<br />&nbsp;DWORD dwAttri = GetFileAttributes(lpFiles);</p>
<p>&nbsp;//directory<br />&nbsp;if (dwAttri == FILE_ATTRIBUTE_DIRECTORY)<br />&nbsp;{<br />&nbsp;&nbsp;//get child item<br />&nbsp;&nbsp;HANDLE hFile = FindFirstFile( strPath + _T("*.*"), &amp;FileData);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;CString strFile;<br />&nbsp;&nbsp;BOOL&nbsp;&nbsp; bFind = TRUE;<br />&nbsp;&nbsp;while (bFind)<br />&nbsp;&nbsp;{</p>
<p>&nbsp;&nbsp;&nbsp;if(FILE_ATTRIBUTE_DIRECTORY == FileData.dwFileAttributes)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//all files is deleted<br />&nbsp;&nbsp;&nbsp;&nbsp;//delete folder<br />&nbsp;&nbsp;&nbsp;&nbsp;BOOL bRemove;<br />&nbsp;&nbsp;&nbsp;&nbsp;if (FileData.cFileName[0] != '.')//is not dot<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteFilesAndFolders(strPath + FileData.cFileName + _T("\\"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bRemove = RemoveDirectory(strPath+ FileData.cFileName);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;}else<br />&nbsp;&nbsp;&nbsp;{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(szFileName,sizeof(TCHAR)* MAX_PATH);<br />&nbsp;&nbsp;&nbsp;&nbsp;wcscpy(szFileName, FileData.cFileName);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;strFile.Empty();<br />&nbsp;&nbsp;&nbsp;&nbsp;strFile = strPath + szFileName;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;//delete file<br />&nbsp;&nbsp;&nbsp;&nbsp;BOOL bDel = DeleteFile(strFile);<br />&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;//find next item<br />&nbsp;&nbsp;&nbsp;ZeroMemory(&amp;FileData, sizeof(WIN32_FIND_DATA));<br />&nbsp;&nbsp;&nbsp;bFind = FindNextFile(hFile, &amp;FileData);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;FindClose (hFile);<br />&nbsp;}<br />}</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/4479213.html">集合 set 的实现</a> 2007-02-07</div><div><a href="/logs/4477529.html">向量 vector的实现</a> 2007-02-07</div><div><a href="/logs/4433764.html">template stact and interator</a> 2007-02-02</div><div><a href="/logs/4309974.html">类中重载new&amp;delete</a> 2007-01-16</div><div><a href="/logs/4167805.html">struct and complier</a> 2006-12-30</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F40815924.html&title=%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/40815924.html</link>
   <author>xingzhebnu</author>
   <pubDate>Wed, 10 Jun 2009 16:31:20 +0800</pubDate>
  </item>
  <item>
   <title>Visual Studio 2008运行时提示找不到msvcr90d.dll的解决办法</title>
   <description><![CDATA[<p>转载 : <a href="http://hi.baidu.com/zgjxwl/blog/item/79b55609b892af87d0581b5b.html">http://hi.baidu.com/zgjxwl/blog/item/79b55609b892af87d0581b5b.html</a></p>
<p><span style="font-size: x-small;">说说微软的bug吧,昨天装Visual Studio 2008,注意:我出现这个bug的缘故是因为将Visual Studio 2008装在了FAT32分区下,当然装在这里也不是说完全有问题,但是这样装的话,就不能将项目同样放在FAT32分区下,装好了以后,随便编了个程序,编译连接,一切OK,是在debug模式下的,但是运行的时候,却出现一些问题,截图上来给大家看看 <br /><br /></span></p>
<div>
<p><span style="font-size: x-small; color: #000000;"><img class="blogimg" src="http://hiphotos.baidu.com/zgjxwl/pic/item/4c6b4e17e4b4de1bc83d6def.jpg" border="0" alt="" /></span></p>
<p><span style="color: #000000;"><span style="font-size: x-small;">编译和连接的时候都是正常的,惟独在运行的时候会出现这种错误,当时都无语了,具体有操作有,将MSVCR90D.dll拷到system32\下,结果要出现了另外一个问题,截图上来给大家看看</span></span></p>
<div>
<p><span style="font-size: x-small; color: #000000;"><img class="blogimg" src="http://hiphotos.baidu.com/zgjxwl/pic/item/df45d9dff4eb76014854033f.jpg" border="0" alt="" /></span></p>
<p><span style="font-size: x-small; color: #000000;">当时都无语了,总之,以后是不要将库拷来拷去,这样解决不了根本问题,具体解决办法还有,将debug模式改为Release,然后在Release模式下可以正常的编译连接和运行.为什么会这样呢,因为release模式下,程序是不会去链接 *.dll 的库的,所以能正常工作.不过我要说的是,这不是根本原因,根本原因在于微软的bug,下面详细道来: <br /><span style="font-size: medium; line-height: 1.3em;">这个是FAT32文件系统分区的缘故,一般有如下症状;</span> <br /></span><span style="color: #000000;"><span style="font-size: x-small;"><span style="font-size: medium; line-height: 1.3em;">第一次Build 的时候从不出问题，在以后重新Build 的时候，可能随机地出现问题。可能你Build间隔的时间足够长，也不会出问题。 <br />微软也知道这个bug，但是看来没有打算完全解决它的意向，倒是在项目属性中有个选项，让你在FAT32 下也能正常工作。具体如何解决,是这样做的:</span><br /><br /><span style="font-size: medium; line-height: 1.3em;">如果是把项目放在FAT32分区,那么这样操作:</span> <br /></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span style="font-size: medium; line-height: 1.3em;">英文版:Project Properties -&gt; Manifest Tool-&gt; Use FAT32 Work-around --&gt;Yes <br />中文版:项目--&gt;项目属性--&gt;配置属性--&gt;清单工具--&gt;使用FAT32解决方法--&gt;是 <br />然后clean下,然后Rebuild即可正常运行,但是这样就会很麻烦,每次建个项目,都要设置它的项目属性</span><br /><br /><span style="font-size: medium; line-height: 1.3em;">最好的解决办法是,将你的项目放在NTFS分区下,这样才可以正常的工作.</span> <br /><span style="font-size: medium; line-height: 1.3em;">如果可以,提醒用户,直接将Visual Studio 2008装在你的NTFS分区下把,这样就不会有限制了,你可以将你的项目创建在任何地方了,而也不会出现上面所说的错误</span> <br /></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span style="font-size: medium; line-height: 1.3em;">在网上搜了下,解决这个问题的自己没搜到,因为微软也没任何有用的提示,所以就把它发表下,让其他的朋友也看看把,别像我一样,弄了一天才弄好,才知道症结所在,微软的这个bug,真让我郁闷,当时真想把电脑给砸了,呵呵... <br /></span><br /><br /><span style="font-size: medium; line-height: 1.3em;">忘了补充一点:如果你安装的也是NTFS格式的文件系统分区,项目也是建在这样格式的分区里,你还要下载微软的一个补丁,在这里找这样一个补丁,给出下载地方,至此,问题就可以顺利解决了</span><br /></span></span><a href="http://download.microsoft.com/download/0/d/5/0d5580c0-9d8c-4873-9024-553323ab8589/WindowsXP-KB889016-x86-CHS.exe" target="_blank"><span style="font-size: x-small; color: #000000;">download.microsoft.com/download/0/d/5/0d5580c0-9d8c-4873-9024-553323ab8589/WindowsXP-KB889016-x86-CHS.exe</span></a></p>
</div>
</div><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/40906775.html">在vs2008中提供对Web Service的访问</a> 2009-06-12</div><div><a href="/logs/39288183.html">windows 服务程序</a> 2009-05-12</div><div><a href="/logs/36115486.html">微软研究院Detour开发包之API拦截技术</a> 2009-03-05</div><div><a href="/logs/27746345.html">VS2005 解决&quot;应用程序配置不正确，程序无法启动&quot;问题</a> 2008-08-15</div><div><a href="/logs/10282482.html">vc++的反向工程</a> 2007-10-14</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F40336527.html&title=Visual+Studio+2008%E8%BF%90%E8%A1%8C%E6%97%B6%E6%8F%90%E7%A4%BA%E6%89%BE%E4%B8%8D%E5%88%B0msvcr90d.dll%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/40336527.html</link>
   <author>xingzhebnu</author>
   <pubDate>Tue, 02 Jun 2009 13:31:22 +0800</pubDate>
  </item>
  <item>
   <title>VC++帧不对齐</title>
   <description><![CDATA[<p>vc 调试时在CALL stack出现"Frames below may be incorrect..."<br />1.msdl.microsoft.com/download/symbols/<br />2.选中"search the above locations only when symbols are loaded manually"</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/42018951.html">事件处理</a> 2009-07-07</div><div><a href="/logs/37119601.html">2009-03-27</a> 2009-03-27</div><div><a href="/logs/36211831.html">AccessibleObjectFromWindow</a> 2009-03-06</div><div><a href="/logs/26568606.html">svn文件目录</a> 2008-08-01</div><div><a href="/logs/25201497.html">在在VC工程中去掉自动化接口</a> 2008-07-21</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fxingzhesun.blogbus.com%2Flogs%2F40278538.html&title=VC%2B%2B%E5%B8%A7%E4%B8%8D%E5%AF%B9%E9%BD%90">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://xingzhesun.blogbus.com/logs/40278538.html</link>
   <author>xingzhebnu</author>
   <pubDate>Mon, 01 Jun 2009 14:38:13 +0800</pubDate>
  </item>
 </channel>
</rss>
