﻿<?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>IT博客-孤独的夜-随笔分类-My VC Study</title><link>http://www.cnitblog.com/wangk/category/3793.html</link><description>&lt;table align=center&gt;
&lt;span id="dict_daily"&gt;
&lt;a href="http://dict.cn/" target="_blank"&gt;英语学习&lt;/a&gt;
&lt;/span&gt; 
&lt;script language="JavaScript" src="http://dict.cn/daily.php" defer="defer"&gt;
&lt;/script&gt;
&lt;/table&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 18:38:42 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 18:38:42 GMT</pubDate><ttl>60</ttl><item><title>自编VC武学秘籍 第六页</title><link>http://www.cnitblog.com/wangk/archive/2006/10/27/18503.html</link><dc:creator>孤独的夜</dc:creator><author>孤独的夜</author><pubDate>Fri, 27 Oct 2006 05:56:00 GMT</pubDate><guid>http://www.cnitblog.com/wangk/archive/2006/10/27/18503.html</guid><wfw:comment>http://www.cnitblog.com/wangk/comments/18503.html</wfw:comment><comments>http://www.cnitblog.com/wangk/archive/2006/10/27/18503.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangk/comments/commentRss/18503.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangk/services/trackbacks/18503.html</trackback:ping><description><![CDATA[         今天本座再次站到这里冒着被兄弟们臭鸡蛋淹没的风险，开始胡说八道。现在讲如何包装（界面编程）。不可否认现在的人先看相貌在看功能，所以我们不能不粗略了解一下界面编程。<br /><br />         大概流程是这个样子的：<br />                  获取 显示设备内容句柄（HDC）---&gt; 设置输出对象和格式（SelectObject） ---&gt; 画图  ---&gt;关闭HDC句柄<br /><br />         举个简单的例子：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">LRESULT APIENTRY WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) <br />{ <br />    PAINTSTRUCT ps </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">}; <br />    HDC hdc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> NULL; <br /> <br />    </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000"> (message) <br />    { <br />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> WM_PAINT: <br />            hdc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> BeginPaint(hwnd, </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ps); <br />            TextOut(hdc, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello, Windows!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">); <br />            EndPaint(hwnd, </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ps); <br />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> 0L; <br /><br />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Process other messages.  </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">    } <br />} <br /></span></div><br />实际上界面编程的内容太多，也太繁琐，最好去下个源码，然后自己写个程序才容易记住。<br />推荐去 <a href="http://www.vckbase.com/">http://www.vckbase.com/</a>    看看，那里有不少文章和源码可以借鉴和学习。<br /><br />         当然，Windows输入输出处理也属于界面处理的一部分。比如获取和计算鼠标的系列函数。模拟键盘、鼠标输出的函数，临时锁定键盘和鼠标的函数，限定鼠标活动区域的函数等等。<img src ="http://www.cnitblog.com/wangk/aggbug/18503.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangk/" target="_blank">孤独的夜</a> 2006-10-27 13:56 <a href="http://www.cnitblog.com/wangk/archive/2006/10/27/18503.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自编VC武学秘籍 第五页</title><link>http://www.cnitblog.com/wangk/archive/2006/10/12/17892.html</link><dc:creator>孤独的夜</dc:creator><author>孤独的夜</author><pubDate>Thu, 12 Oct 2006 02:55:00 GMT</pubDate><guid>http://www.cnitblog.com/wangk/archive/2006/10/12/17892.html</guid><wfw:comment>http://www.cnitblog.com/wangk/comments/17892.html</wfw:comment><comments>http://www.cnitblog.com/wangk/archive/2006/10/12/17892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangk/comments/commentRss/17892.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangk/services/trackbacks/17892.html</trackback:ping><description><![CDATA[         嗯，嗯。我来了，怎么在座的都没表示一下，虽然我们圣门不讲究，但是这也太夸张了吧。（我闪~，小样的这样准头的扔砖头也能砸着本座才怪。话音未落某人就被一块巨石压没影了。砖头不行，巨石不就OK了，路人甲阴笑。）<br /><br />         Windows系统的基石之一：文件系统，甚至Windows注册表实际也是建立在文件系统的基础上。你说既然有之一就有之二?正确，之二就是：内存管理系统。什么？你说既然有之二就有之三？没错，之三就是线程管理系统。什么？你说既然有之三就有之四？靠，还有完没完，一边休息去。<br /><br />         下面我们先来看看Windows的文件系统。Windows的文件发展史我就不说了，目前也就FAT32和NTFS比较有名了。FAT32没什么好说，比较简单。NTFS就复杂了不少，包括基于NTFS的EFS、数据流和安全属性。而我们在上层调用API即可，中层的要发送IRP，底层则要调用中断了。有兴趣的可以去查找相应的资料。<br /><br />         简单的说我们只要能读写修改文件就好了。<br />         C / C++中的文件操作 ： <br />               C 中的 fopen、fread、fwrite、fseek、ftell、fclose等f系列函数（当然还包含好用的fprintf和fscanf函数）<br />               C++ 中的 fstream系列<br />         基于Windows的文件操作（当然要了解更详细的用法查MSDN去吧，嘎嘎~）<br />               普通操作：<br />                     CreateFile、ReadFile、WriteFile、CloseHandle 几个函数<br />               映射操作：<br />                     CreateFile、CreateFileMapping、MapViewOfFile、UnmapViewOfFile、CloseHandle几个函数<br />               文件查找操作：<br />                     FindFirstFile(Ex)、FindNextFile、FindClose几个函数<br />               文件其他操作：<br />                     GetFileSize(Ex)、GetFileType 、FlushFileBuffers、LockFile(Ex)、UnlockFile(Ex)等<br />                整个文件操作：<br />                     CopyFile(Ex)、MoveFile(Ex)、DeleteFile、SHFileOperation等<br /><br />         接着我们来谈谈Windows注册表吧。什么是注册表？在本座看来注册表就是记录系统设定和用户设定的数据库。那么我们怎么来操作注册表呢？<br /><br />         别急，Windows为我们准备好了一系列API函数呢。<br />               操作注册表流程：<br />                     打开路径（RegOpenKey[Ex]），保存打开的句柄。（RegConnectRegistry 可以替代它打开远程注册表）<br />                     操作句柄(RegQueryValue读取值，RegSetValue写值，RegEnumKey枚举值)<br />                     操作完成后，关闭句柄。（RegCloseKey）<br />               Ring3下监视注册表特定值：<br />                     RegNotifyChangeKeyValue (例程及说明见MSDN)<br /><br />               读写ini文件的API(为了兼容以前的分类M$分类该系列为注册表操作)<br />                     GetPrivateProfile系列读取Ini文件函数（例GetPrivateProfileInt函数）<br />                     WritePrivateProfile系列写Ini文件函数<br /><br />         啊？！什么时候人都跑光了？晕，那我还讲啥。回家卖地瓜去（嘘~，不要告诉别人，没办法，最近经济不景气啊）<img src ="http://www.cnitblog.com/wangk/aggbug/17892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangk/" target="_blank">孤独的夜</a> 2006-10-12 10:55 <a href="http://www.cnitblog.com/wangk/archive/2006/10/12/17892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自编VC武学秘籍 第四页</title><link>http://www.cnitblog.com/wangk/archive/2006/10/08/17710.html</link><dc:creator>孤独的夜</dc:creator><author>孤独的夜</author><pubDate>Sun, 08 Oct 2006 02:07:00 GMT</pubDate><guid>http://www.cnitblog.com/wangk/archive/2006/10/08/17710.html</guid><wfw:comment>http://www.cnitblog.com/wangk/comments/17710.html</wfw:comment><comments>http://www.cnitblog.com/wangk/archive/2006/10/08/17710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangk/comments/commentRss/17710.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangk/services/trackbacks/17710.html</trackback:ping><description><![CDATA[      将消息放到消息队列里有几种方式？知道“茴”字有几个写法吗？记不起来了，去问孔乙己吧。（某人大吼一声：让我来告诉你）<br /><br />         一、将消息放入线程的消息队列。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);</span></div><br />         二、广播消息<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000"> BroadcastSystemMessage(DWORD dwFlags,LPDWORD lpdwRecipients,UINT uiMessage,WPARAM wParam,LPARAM lParam);<br /><br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">当然BroadcastSystemMessageEx函数也能达到同样的效果</span></div><br />         三、通知指定的窗口<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);<br /><br />LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);<br /><br />BOOL SendNotifyMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);<br /><br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">它们可以在hWnd使用HWND_BROADCAST值，表示广播给当前桌面的顶层窗口</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">另外仔细考虑一下他们有什么区别？</span><span style="COLOR: #008000"><br /></span></div><br />         四、有超时限制的消息通知<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">LRESULT SendMessageTimeout(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);<br /></span></div><br />         考虑一下，为什么Windows提供了这么多种相似的消息通知函数，他们各用在什么样的场合？答案在MSDN中都能找到只要你仔细看的话。<br /><br />         如果你要仔细了解其他的消息对列处理函数的话，不妨仔细看看核心编程的26章。因为消息的内容实在是太多了，这是Windows系统用户界面交互的最重要的方式之一，一定要吃透才好哦。<img src ="http://www.cnitblog.com/wangk/aggbug/17710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangk/" target="_blank">孤独的夜</a> 2006-10-08 10:07 <a href="http://www.cnitblog.com/wangk/archive/2006/10/08/17710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自编VC武学秘籍 第三页</title><link>http://www.cnitblog.com/wangk/archive/2006/09/29/17481.html</link><dc:creator>孤独的夜</dc:creator><author>孤独的夜</author><pubDate>Fri, 29 Sep 2006 03:28:00 GMT</pubDate><guid>http://www.cnitblog.com/wangk/archive/2006/09/29/17481.html</guid><wfw:comment>http://www.cnitblog.com/wangk/comments/17481.html</wfw:comment><comments>http://www.cnitblog.com/wangk/archive/2006/09/29/17481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangk/comments/commentRss/17481.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangk/services/trackbacks/17481.html</trackback:ping><description><![CDATA[
		<p>         嗯，本座又来了（咦？为什么说又？）。谁炼了本座推荐的《葵花宝典》[《Windows 核心编程》]的举手。我数数，0，……真是失望啊，一个都没有，还是有人偷偷练了却不说（嘿嘿，某人奸笑中）。</p>
		<p>         算了，开始讲讲Windows消息。我们知道Windows的用户界面是由消息驱动的，比如你点击了某个按钮，那么这个按钮的主窗口将接收到一个鼠标消息，然后将鼠标消息翻译成按钮单击消息。<br /><br />         那么我们怎么知道在哪里处理这些消息呢？不要急，听我慢慢来吹（住手，说好不打脸的……）。<br /><br />         通常每一个句柄都属于某个窗口注册类，我们用VC的工具Spy++就可以看见，在该类的注册信息里有一个该类的默认处理过程。在<strong>RegisterClass</strong> 的传入参数里描述的很清楚的。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">ATOM RegisterClass( CONST WNDCLASS </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">lpWndClass);<br /><br />typedef struct {<br />    UINT style;<br />    WNDPROC lpfnWndProc; </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">这里就是默认注册的类处理过程</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> cbClsExtra;<br />    </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> cbWndExtra;<br />    HINSTANCE hInstance;<br />    HICON hIcon;<br />    HCURSOR hCursor;<br />    HBRUSH hbrBackground;<br />    LPCTSTR lpszMenuName;<br />    LPCTSTR lpszClassName;<br />} WNDCLASS, </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">PWNDCLASS;<br /></span>
		</div>
		<br />         但是很多时候，我们要的是自己处理该类的动作，比如Button类，我们要自己绘制它的样子，就像开始菜单按钮。<br />我们在Spy++里可以看见开始菜单按钮的处理过程后面有个描述Subclassed（中文译：子类化）。通常是我们用自己的处理过程替换了默认的处理过程。通常我们用SetWindowLong来改变处理过程。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">m_lpfnOldWndProc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (WNDPROC) SetWindowLong(pThis</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">m_hAttachWnd,GWL_WNDPROC,(LONG)NewDefaultProc);</span></div><br />         我们先来看看一个默认的SDK是怎样建立窗口的。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Global variable </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">HINSTANCE hinst; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Function prototypes. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />InitApplication(HINSTANCE); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />InitInstance(HINSTANCE, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Application entry point. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    LPSTR lpCmdLine, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> nCmdShow) <br /><img id="Codehighlighter1_390_823_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_823_Open_Text.style.display='none'; Codehighlighter1_390_823_Closed_Image.style.display='inline'; Codehighlighter1_390_823_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_390_823_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_390_823_Closed_Text.style.display='none'; Codehighlighter1_390_823_Open_Image.style.display='inline'; Codehighlighter1_390_823_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_390_823_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_390_823_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    MSG msg; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">注册窗口类</span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">InitApplication(hinstance)) <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> FALSE; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">创建窗口</span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">InitInstance(hinstance, nCmdShow)) <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> FALSE; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    BOOL fGotMessage;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((fGotMessage </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> GetMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg, (HWND) NULL, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> fGotMessage </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) <br /><img id="Codehighlighter1_680_752_Open_Image" onclick="this.style.display='none'; Codehighlighter1_680_752_Open_Text.style.display='none'; Codehighlighter1_680_752_Closed_Image.style.display='inline'; Codehighlighter1_680_752_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_680_752_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_680_752_Closed_Text.style.display='none'; Codehighlighter1_680_752_Open_Image.style.display='inline'; Codehighlighter1_680_752_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_680_752_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_680_752_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        TranslateMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        DispatchMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> msg.wParam; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        UNREFERENCED_PARAMETER(lpCmdLine); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />BOOL InitApplication(HINSTANCE hinstance) <br /><img id="Codehighlighter1_871_2135_Open_Image" onclick="this.style.display='none'; Codehighlighter1_871_2135_Open_Text.style.display='none'; Codehighlighter1_871_2135_Closed_Image.style.display='inline'; Codehighlighter1_871_2135_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_871_2135_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_871_2135_Closed_Text.style.display='none'; Codehighlighter1_871_2135_Open_Image.style.display='inline'; Codehighlighter1_871_2135_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_871_2135_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_871_2135_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    WNDCLASSEX wcx; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Fill in the window class structure with parameters </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> that describe the main window. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    wcx.cbSize </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> sizeof(wcx);          </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> size of structure </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.style </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> CS_HREDRAW </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        CS_VREDRAW;                    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> redraw if size changes </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.lpfnWndProc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MainWndProc;     </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> points to window procedure </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.cbClsExtra </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> no extra class memory </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.cbWndExtra </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> no extra window memory </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.hInstance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> hinstance;         </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> handle to instance </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.hIcon </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> LoadIcon(NULL, <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        IDI_APPLICATION);              </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> predefined app. icon </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.hCursor </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> LoadCursor(NULL, <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        IDC_ARROW);                    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> predefined arrow </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.hbrBackground </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> GetStockObject( <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        WHITE_BRUSH);                  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> white background brush </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.lpszMenuName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MainMenu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> name of menu resource </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.lpszClassName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MainWClass</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> name of window class </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wcx.hIconSm </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> LoadImage(hinstance, </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> small class icon </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        MAKEINTRESOURCE(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">),<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        IMAGE_ICON, <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        GetSystemMetrics(SM_CXSMICON), <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        GetSystemMetrics(SM_CYSMICON), <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        LR_DEFAULTCOLOR); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Register the window class. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> RegisterClassEx(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wcx); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />BOOL InitInstance(HINSTANCE hinstance, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> nCmdShow) <br /><img id="Codehighlighter1_2194_3144_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2194_3144_Open_Text.style.display='none'; Codehighlighter1_2194_3144_Closed_Image.style.display='inline'; Codehighlighter1_2194_3144_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2194_3144_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2194_3144_Closed_Text.style.display='none'; Codehighlighter1_2194_3144_Open_Image.style.display='inline'; Codehighlighter1_2194_3144_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_2194_3144_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_2194_3144_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    HWND hwnd; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Save the application-instance handle. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    hinst </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> hinstance; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create the main window. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    hwnd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> CreateWindow( <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MainWClass</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> name of window class </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Sample</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> title-bar string </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        WS_OVERLAPPEDWINDOW, </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> top-level window </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        CW_USEDEFAULT,       </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> default horizontal position </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        CW_USEDEFAULT,       </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> default vertical position </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        CW_USEDEFAULT,       </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> default width </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        CW_USEDEFAULT,       </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> default height </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        (HWND) NULL,         </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> no owner window </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        (HMENU) NULL,        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> use class menu </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        hinstance,           </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> handle to application instance </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        (LPVOID) NULL);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> no window-creation data </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">hwnd) <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> FALSE; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Show the window and send a WM_PAINT message to the window </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> procedure. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ShowWindow(hwnd, nCmdShow); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    UpdateWindow(hwnd); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> TRUE; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />LRESULT CALLBACK MainWndProc(<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    HWND hwnd,        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> handle to window</span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    UINT uMsg,        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> message identifier</span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    WPARAM wParam,    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> first message parameter</span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    LPARAM lParam)    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> second message parameter</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_3363_3974_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3363_3974_Open_Text.style.display='none'; Codehighlighter1_3363_3974_Closed_Image.style.display='inline'; Codehighlighter1_3363_3974_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_3363_3974_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_3363_3974_Closed_Text.style.display='none'; Codehighlighter1_3363_3974_Open_Image.style.display='inline'; Codehighlighter1_3363_3974_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_3363_3974_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_3363_3974_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这里响应窗口消息</span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000"> (uMsg) <br /><img id="Codehighlighter1_3409_3956_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3409_3956_Open_Text.style.display='none'; Codehighlighter1_3409_3956_Closed_Image.style.display='inline'; Codehighlighter1_3409_3956_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_3409_3956_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_3409_3956_Closed_Text.style.display='none'; Codehighlighter1_3409_3956_Open_Image.style.display='inline'; Codehighlighter1_3409_3956_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_3409_3956_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_3409_3956_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> WM_CREATE: <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Initialize the window. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> WM_PAINT: <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Paint the window's client area. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> WM_SIZE: <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Set the size and position of the window. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> WM_DESTROY: <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Clean up window-specific data objects. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Process other messages. </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> </span><span style="COLOR: #008000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">: <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> DefWindowProc(hwnd, uMsg, wParam, lParam); <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div><p class="O2" style="mso-line-spacing: '80 20 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1" v:shape="_x0000_s1026">        我们看到通常建立了窗口后，还要建立消息循环才能响应消息。<br />         我们来总结一下如何创建窗口的几中方式（对话框是一种特殊的窗口）：<br />            使用Windows默认提供的类创建窗口（CreateWindow[Ex]、CreateDialog[Ex]等） <br />            定义处理过程的窗口（RegisterClass后再CreateWindow） <br />            子类化处理窗口（CreateWindow后SubClassWindow） </p><li><div class="O2" style="mso-line-spacing: '80 20 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1" v:shape="_x0000_s1026"><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, <br />    LPSTR lpCmdLine, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> nCmdShow) <br />{ <br />    MSG msg; <br /> <br />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">InitApplication(hinstance)) <br />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> FALSE; <br /> <br />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">InitInstance(hinstance, nCmdShow)) <br />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> FALSE; <br />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这里建立消息循环</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">    BOOL fGotMessage;<br />    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((fGotMessage </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> GetMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg, (HWND) NULL, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> fGotMessage </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) <br />    { <br />        TranslateMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg); <br />        DispatchMessage(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">msg); <br />    } <br />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> msg.wParam; <br />  <br />} </span></div></div><div class="O2" style="mso-line-spacing: '80 20 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1" v:shape="_x0000_s1026">     <br />      这样窗口就能响应消息了，可以等待Windows的消息通知，我们的消息通知，和其他用户的消息通知。至于怎么通知下次再说喽。（某人从背后抽出一把剑，然后大喝一声：御剑飞仙，然后往下一跳。不一会儿传来凄厉的惨叫~ 。小朋友切勿模仿）</div></li><img src ="http://www.cnitblog.com/wangk/aggbug/17481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangk/" target="_blank">孤独的夜</a> 2006-09-29 11:28 <a href="http://www.cnitblog.com/wangk/archive/2006/09/29/17481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自编VC武学秘籍 第二页</title><link>http://www.cnitblog.com/wangk/archive/2006/09/15/16884.html</link><dc:creator>孤独的夜</dc:creator><author>孤独的夜</author><pubDate>Fri, 15 Sep 2006 07:33:00 GMT</pubDate><guid>http://www.cnitblog.com/wangk/archive/2006/09/15/16884.html</guid><wfw:comment>http://www.cnitblog.com/wangk/comments/16884.html</wfw:comment><comments>http://www.cnitblog.com/wangk/archive/2006/09/15/16884.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangk/comments/commentRss/16884.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangk/services/trackbacks/16884.html</trackback:ping><description><![CDATA[
		<br />         今天天气不错，是本座开坛做法，哦，是讲课。本来按道理来说今天应该讲剑法了。不过之前还是有必要考验一下。你，你，还有你出列。（军训？）回答几个简单问题：<br />               * 和 &amp; 的异同：void Sum(int *piInout);和void Sum(int &amp;piInout);<br />               解释 |和||，&amp;和&amp;&amp;，=和==<br />               2  &lt;&lt;  2 ; 和 cout &lt;&lt; 2;<br />               int I = 0; int t = ++I; 和 int I = 0; int t = I++;<br />               const char *pcCont = “Hello”; 和 char * const pcCont = “Hello”的异同<br />               inline 和 宏函数的异同<br />               解释类public、protected、private的继承的区别<br />               几种类型转化的方式，以及优缺点。<br />               解释函数的覆盖、隐藏和重载<br />               全局变量的隐藏和访问，局部变量的全局生存？<br />               什么是断言？其原理是什么？<br />               宏函数的陷阱在哪里？<br />               实现自己的自动内存指针模版（允许手工释放内存或者超出生存期自动释放内存）<br />               RTTI以及其优缺点？<br /><br />         什么，你说不知道，那你还在这站着？回去看书，什么时候明白什么时候再过来。你问我答案？切，自己上网去查Google,百度随便用。（某人偷偷擦了擦头上的汗，松了口气，幸亏我脑筋转得快，要不还不被整得脑震荡，我得意的笑~。接着就被不知道从哪里飞来的西红柿&amp;&amp;鸡蛋给淹没了）<br />         （虽然，一身狼狈，但是总算爬出来了。呼~活过来的感觉真好）上回本座讲到我们圣门入门快速，但是容易走火入魔，怎么办？不用怕，要做圣门弟子就要修习医道（Debug），在走火入魔的时候就可以又活过来了，直到以后有经验了，就知道怎么预防了。本门的医术分为：望闻问切诊。望术（TRACE和LOG）、闻术（Release调试）、问术（源码级调试）、切术（逆向分析）、诊术（其他Debug辅助工具，如代码检查工具<font size="2">PC-Lint等</font>），博大精深，甚至本座也不过是初通皮毛而已。<br /><br />         （我闪，某人灵活的躲过飞来的砖头）别急，马上讲，我错了还不行么。Windows下面进行编程就不能不讲Windows的消息和事件。我们知道Windows和Dos最大的构架上的区别是，Windows采用的是消息驱动用户的方式。当某件事情发生的时候，Windows就将消息通知给用户窗口，让不同的窗口可以有不同的行为。<br /><br />         通常Windows有三种方式响应模式：<br />               中断，最基本的响应方式，通常在内核中处理，包括硬中断和软中断 (表现为 汇编中的 int xx)<br />               事件，Windows系统中最普遍的通知的方式<br />               消息，Windows用于用户资源的线程最常用的响应方式<br /><br />         下面就推荐大家一本传说中的葵花宝典。<br />         翻开第一页跟我念：欲练神功，挥刀自宫！<br />         翻开第二页跟我念：若不自宫，亦可成功！<br />         翻开第三页跟我念：即使自宫，未必成功！<br />         （人呢？地上有一插满刀的人形物体……）<br /><br />         《Windows 核心编程》确实是一本不错的书，网上到处都有下载不妨好好看看。由于开坛做法的某人失踪中，所以今天就到这。<img src ="http://www.cnitblog.com/wangk/aggbug/16884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangk/" target="_blank">孤独的夜</a> 2006-09-15 15:33 <a href="http://www.cnitblog.com/wangk/archive/2006/09/15/16884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自编VC武学秘籍 第一页</title><link>http://www.cnitblog.com/wangk/archive/2006/09/13/16762.html</link><dc:creator>孤独的夜</dc:creator><author>孤独的夜</author><pubDate>Wed, 13 Sep 2006 02:13:00 GMT</pubDate><guid>http://www.cnitblog.com/wangk/archive/2006/09/13/16762.html</guid><wfw:comment>http://www.cnitblog.com/wangk/comments/16762.html</wfw:comment><comments>http://www.cnitblog.com/wangk/archive/2006/09/13/16762.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangk/comments/commentRss/16762.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangk/services/trackbacks/16762.html</trackback:ping><description><![CDATA[      本座回来啦。哈哈……。今天就开始入门训练了。<br />      虽然本门对入门内功的要要求很低，但是一点内功都没有的居然也敢来？看什么看，说得就是你，先回去学一个星期的C++语法结构再回来。不用犹豫，本座会为你留好位置的，阿门。（汗~，这是什么语气，扁他，只见一群人围上把那个身着黑衣的自称‘本座’的人一阵暴踩）<br />      （只见某人理了理衣裳，似乎什么事都没有发生的样子。）<br />      恩，你说不知道该怎么学，看在XXX的面子上就告诉你了，听好了，只说一遍。累的时候可以当枕头，怒的时候可以当板砖，失眠时可以让你眼皮打架，没错这就是《C++ Primer》，居家旅行、杀人放火、修身养性的必备良药。<br />      什么！拿在手里不知道该怎么办？还能怎么办，把它吃下去，消化它，就能增加n年内力。基本内功就那么几个要求：<br />      1  掌握C++关键字<br /><span style="FONT-SIZE: 16pt; FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-hansi-font-family: Arial">         数据定义关键字（bool、int、short、long、float、unsigned、typedef、struct、class等）</span><span style="FONT-SIZE: 16pt; FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-hansi-font-family: Arial"><br />         操作符关键字（+、-、|、*、&amp;、/、%、++、--、+=、&gt;等）<br />         逻辑比较关键字（&amp;&amp;、||、==等）<br />         流程控制关键字（if、while、goto等）<br />         异常处理关键字（try、catch等）<br />         编译预处理关键字（#include、#define、#pragma等）<br />   2 <font size="3">掌握C++语法<br />         数据生存期（局部、全局、静态、外部、寄存器等）<br />         运算优先级<br />         命名空间和域<br />         类的继承规则（public、protected、private等）<br />         函数的覆盖、隐藏、重载以及函数指针<br />         * 模版和泛型算法<br />         * 运行时刻类型识别（RTTI）<br />   现在合上书，能对上面进行补充和解释的话那么入门内功就够了，至于什么对象设计原则之流的以后再说，毕竟我们是圣门，不是白道那群……（话音刚落，只见一群人围上把某人乱扁）<br /><br />   （到众人散去后，留下了奄奄一息的某人）不行了，看来今天是不撑了。同志们我胡汉三还会回来的。<br /></font></span><img src ="http://www.cnitblog.com/wangk/aggbug/16762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangk/" target="_blank">孤独的夜</a> 2006-09-13 10:13 <a href="http://www.cnitblog.com/wangk/archive/2006/09/13/16762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自编VC武学秘籍之总纲篇</title><link>http://www.cnitblog.com/wangk/archive/2006/09/08/16540.html</link><dc:creator>孤独的夜</dc:creator><author>孤独的夜</author><pubDate>Fri, 08 Sep 2006 07:30:00 GMT</pubDate><guid>http://www.cnitblog.com/wangk/archive/2006/09/08/16540.html</guid><wfw:comment>http://www.cnitblog.com/wangk/comments/16540.html</wfw:comment><comments>http://www.cnitblog.com/wangk/archive/2006/09/08/16540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangk/comments/commentRss/16540.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangk/services/trackbacks/16540.html</trackback:ping><description><![CDATA[
		<p>      开始之前先了解一下本人，哦不，本座什么身份。本座是魔门，哦不，圣门中流传至今5年的“叫天天不应，叫地地不灵”流派的唯一仅存长老级人物（汗~，不是长老也不是掌门，混得真够呛），号称“吾本无用”是也。</p>
		<p>      所以，白道人士就不能看本座的秘籍，否则走火入魔后，管杀不管埋，嘿嘿。</p>
		<p>      先解释一下武学分类（本门内部使用，若乱用后果自负）。<br />            1. 内功：本门指的是 C++语言基础 (如果换成其他语言基础，就不是本流派了) 。本流派内功号称“道家小无相功”可以模拟天下一切内功心法，虽然效果打点折扣（介绍见《天龙八部》）<br />            2.外功： 本门指的是 辅助解决问题的手段即查找资料。<br />            3.剑法： 本门指的是 Windows下面的编程知识。炼刀法（Linux、Unix下）的仁兄可以闪了。<br />            4.剑：      本门指的是 VC。用枪(VB)、戟(Delphi)等友人可以适当观摩，出了问题本座不负任何责任。</p>
		<p>      白道人士的修炼方法是从内而外，而我们圣门的方式是从外而内。本门心法入门迅速，快捷，但是容易走火入魔（程序容易出现Bug），意志不坚定者、无怀疑精神者赶紧闪开。白道的修炼方式虽然不易走火入魔，但是像苦行僧一样枯燥无味，而且甚是耗时。这种一步一个脚印，僵化的白道方式比较适合慢热型的江湖人士。</p>
		<p>      本座在下一篇继续按圣门的“叫天天不应，叫地地不灵”流派修炼讲解。</p>
		<p>       [注：本文以武侠为背景希望能够去除枯燥的教学方式给人以比较深刻的印象，但是某些比喻可能不当，一笑而过即可。]<br /></p>
<img src ="http://www.cnitblog.com/wangk/aggbug/16540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangk/" target="_blank">孤独的夜</a> 2006-09-08 15:30 <a href="http://www.cnitblog.com/wangk/archive/2006/09/08/16540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>