﻿<?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/zhangsk/</link><description>天下难事必做于易，天下大事必做于细</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:09:07 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:09:07 GMT</pubDate><ttl>60</ttl><item><title>python thread lock</title><link>http://www.cppblog.com/zhangsk/archive/2007/10/09/33810.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Tue, 09 Oct 2007 05:34:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/10/09/33810.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/33810.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/10/09/33810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/33810.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/33810.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">coding=utf-8</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;locks.py&nbsp;zhangsk</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;threading,&nbsp;time<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">b&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">50</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.Lock()<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;threadcode():<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">"""</span><span style="color: #800000;">This&nbsp;is&nbsp;run&nbsp;in&nbsp;the&nbsp;created&nbsp;threads</span><span style="color: #800000;">"""</span><span style="color: #000000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">global</span><span style="color: #000000;">&nbsp;b<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Thread&nbsp;%s&nbsp;invoked</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;threading.currentThread().getName()<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;l.acquire()<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Thread&nbsp;%s&nbsp;running</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;threading.currentThread().getName()<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">50</span><span style="color: #000000;"><br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Thread&nbsp;%s&nbsp;set&nbsp;b&nbsp;to&nbsp;%d</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;(threading.currentThread().getName(),&nbsp;b)<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">finally</span><span style="color: #000000;">:<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.release()<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Value&nbsp;of&nbsp;b&nbsp;at&nbsp;start&nbsp;of&nbsp;program:</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;b<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">childthreads&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[]<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;range(</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">):<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.Thread(target&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threadcode,&nbsp;name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Thread-%d</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;i)<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t.setDaemon(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t.start()<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;childthreads.append(t)<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;childthreads:<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t.join()<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">New&nbsp;Value&nbsp;of&nbsp;b:</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;b</span></div>
<br><img src ="http://www.cppblog.com/zhangsk/aggbug/33810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-10-09 13:34 <a href="http://www.cppblog.com/zhangsk/archive/2007/10/09/33810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MSN上的留言</title><link>http://www.cppblog.com/zhangsk/archive/2007/09/29/33205.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Sat, 29 Sep 2007 09:09:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/29/33205.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/33205.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/29/33205.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/33205.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/33205.html</trackback:ping><description><![CDATA[<p>老勾的MSN上写了这样一句话，让我思考了很久！<br>&#8220;程序员就像男人，编程语言就像女人，一般男人都想要很多女人，可没几个男人能真正了解一个女人&#8221;<br></p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/zhangsk/aggbug/33205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-29 17:09 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/29/33205.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>看看python的代码插入</title><link>http://www.cppblog.com/zhangsk/archive/2007/09/29/33199.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Sat, 29 Sep 2007 08:29:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/29/33199.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/33199.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/29/33199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/33199.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/33199.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">coding=utf-8</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">!/user/bin/env&nbsp;python</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;connect.py&nbsp;17:35&nbsp;2007-9-28&nbsp;zhangsk</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;socket<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Creating&nbsp;socket<img src="http://www.cppblog.com/Images/dot.gif"></span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">加逗号，相当于c的print,不加逗号相当于c的println</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;socket.socket(socket.AF_INET,&nbsp;socket.SOCK_STREAM)<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">done.</span><span style="color: #800000;">"</span><span style="color: #000000;"><br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Connecting&nbsp;to&nbsp;remote&nbsp;host<img src="http://www.cppblog.com/Images/dot.gif"></span><span style="color: #800000;">"</span><span style="color: #000000;">,<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">s.connect((</span><span style="color: #800000;">"</span><span style="color: #800000;">www.google.com</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">80</span><span style="color: #000000;">))<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">done.</span><span style="color: #800000;">"</span></div>
<br>看到支持插入python的代码，特发个尝试一下。<br><br><img src ="http://www.cppblog.com/zhangsk/aggbug/33199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-29 16:29 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/29/33199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Delphi7远程调试</title><link>http://www.cppblog.com/zhangsk/archive/2007/09/29/33198.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Sat, 29 Sep 2007 08:26:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/29/33198.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/33198.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/29/33198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/33198.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/33198.html</trackback:ping><description><![CDATA[请保留完整信息<br>Delphi7远程调试 <br>张树坤 2007-09-29<br>http://www.zhangsk.cn/<br>http://www.sunmba.cn/<br><br>上次写的delphi远程调试，有些步骤不是必须的。今整理如下，希望对大家有所帮助。<br><br>自己的开发机器称为主机，运行程序的机器称为目标机；<br>一、在主机编译执行程序<br>1、project-&gt;options-&gt;linker中的EXE and DLL options选项组中的include remote debug symbols打上勾，<br>这样就可以生成rsm为扩展名的文件，该文件名称于你的项目同名。<br>2、project-&gt;options-&gt;Compiler-&gt;Debugging中的勾可以全部选上，这是在你的程序支持debug(正式发布产品时要去掉这些选项，Delphi默认设置是选则大部分的)<br>3、Tools-&gt;Environment Options-&gt;Preferences的Compling and running选择组中选上Show compiler progress(可选项，在编译或者运行时显示编译过程，建议使用)<br>二、拷贝Project1.exe和Project1.rsm到目标机器的运行目录(该目录可以是你的安装目录，也可以任意)<br>注意：主机的代码不需和目标机的exe和rsm文件一致，就是说在进行第一步后不能改动你的代码<br>三、目标机安装borland的远程调试工具rdebug，delphi7的光盘中就有，或者google一下。<br>四、启动目标机的rdebug，启动后目标机的托盘图标中会出现一个小&#8220;虫子&#8221;debug的图标<br>注意：远程调试工具不需正常运行才能进行远程调试<br>五、主机的Delphi的远程调试设置<br>1、Delphi中选择Run-&gt;Parameters-&gt;Remote<br>2、Remote Path中输入目标机器的运行目录<br>3、Remote Host中输入目标机IP<br>4、选择Debug project on remote machine<br>5、选择ok<br>六、主机按F9调试即可
<br><img src ="http://www.cppblog.com/zhangsk/aggbug/33198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-29 16:26 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/29/33198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>switch</title><link>http://www.cppblog.com/zhangsk/archive/2007/09/14/32206.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Fri, 14 Sep 2007 04:37:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/14/32206.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/32206.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/14/32206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/32206.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/32206.html</trackback:ping><description><![CDATA[<p>在c++中<br>switch(choice)<br>{<br>&nbsp;&nbsp;&nbsp;case 1:<br>&nbsp;&nbsp;&nbsp;case 2:<br>&nbsp;&nbsp; case 3:<br>&nbsp;&nbsp; default:<br>}<br>如果这样的执行代码就会把所有的case走到(java中也是如此)，所以不要忘记在case中加入break;<br>switch(choice)<br>{<br>&nbsp;&nbsp;&nbsp;case 1: A<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;case 2: B<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp; case 3: C<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp; default:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br><br><br><br>delphi中就不用了。</p>
case I of<br>&nbsp; 1..5: Caption := 'Low';<br>&nbsp; 6..9: Caption := 'High';<br>&nbsp; 0, 10..99: Caption := 'Out of range';<br>else<br>&nbsp; Caption := '';<br>end;
<img src ="http://www.cppblog.com/zhangsk/aggbug/32206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-14 12:37 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/14/32206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅谈Object Pascal的指针 </title><link>http://www.cppblog.com/zhangsk/archive/2007/09/14/32205.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Fri, 14 Sep 2007 04:15:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/14/32205.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/32205.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/14/32205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/32205.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/32205.html</trackback:ping><description><![CDATA[<p>转载，虽然这篇不是自己写的，但是觉得不错，应该让大家看看。<br>浅谈Object Pascal的指针 </p>
<p><br>　　Nicrosoft(<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#110;&#105;&#99;&#114;&#111;&#115;&#111;&#102;&#116;&#64;&#115;&#117;&#110;&#105;&#115;&#116;&#117;&#100;&#105;&#111;&#46;&#99;&#111;&#109;">nicrosoft@sunistudio.com</a>) -- 2001.8.26 <br><a href="http://www.sunistudio.com/nicrosoft/">http://www.sunistudio.com/nicrosoft/</a> <br>　　东日文档：<a href="http://www.sunistudio.com/asp/sunidoc.asp">http://www.sunistudio.com/asp/sunidoc.asp</a> </p>
<p>&nbsp;</p>
<p>　　大家都认为，C语言之所以强大，以及其自由性，很大部分体现在其灵活的指针运用上。因此，说指针是C语言的灵魂，一点都不为过。同时，这种说法也让很多人产生误解，似乎只有C语言的指针才能算指针。Basic不支持指针，在此不论。其实，Pascal语言本身也是支持指针的。从最初的Pascal发展至今的 Object Pascal，可以说在指针运用上，丝毫不会逊色于C语言的指针。 </p>
<p>　　以下内容分为八个部分，分别是 </p>
<p>　　一、类型指针的定义 <br>　　二、无类型指针的定义 <br>　　三、指针的解除引用 <br>　　四、取地址（指针赋值） <br>　　五、指针运算 <br>　　六、动态内存分配 <br>　　七、字符数组的运算 <br>　　八、函数指针 </p>
<p>　　一、类型指针的定义。对于指向特定类型的指针，在C中是这样定义的： <br>　　　　int *ptr; <br>　　　　char *ptr; <br>　　　　与之等价的Object Pascal是如何定义的呢？ <br>　　　　var ptr : ^Integer; <br>　　　　　　ptr : ^char; <br>　　　　其实也就是符号的差别而已。 </p>
<p>　　二、无类型指针的定义。C中有void *类型，也就是可以指向任何类型数据的指针。Object Pascal为其定义了一个专门的类型：Pointer。于是， <br>　　　　ptr : Pointer; <br>　　　　就与C中的 <br>　　　　void *ptr; <br>　　　　等价了。 </p>
<p>　　三、指针的解除引用。要解除指针引用（即取出指针所指区域的值），C 的语法是 (*ptr)，Object Pascal则是 ptr^。 </p>
<p>　　四、取地址（指针赋值）。取某对象的地址并将其赋值给指针变量，C 的语法是 <br>　　　　ptr = &amp;Object; <br>　　　　Object Pascal 则是 <br>　　　　ptr := @Object; <br>　　　　也只是符号的差别而已。 </p>
<p>　　五、指针运算。在 C 中，可以对指针进行移动的运算，如： <br>　　　　char a[20]; <br>　　　　char *ptr=a; <br>　　　　ptr++; <br>　　　　ptr+=2; <br>　　　　当执行ptr++;时，编译器会产生让ptr前进sizeof(char)步长的代码，之后，ptr将指向a[1]。ptr+=2;这句使得ptr前进两个sizeof(char)大小的步长。同样，我们来看一下Object Pascal中如何实现： <br>　　　　var a : array [1..20] of Char; <br>　　　　　　ptr : PChar; //PChar 可以看作 ^Char <br>　　　　begin <br>　　　　　　ptr := @a; <br>　　　　　　Inc(ptr); // 这句等价于 C 的 ptr++; <br>　　　　　　Inc(ptr, 2); //这句等价于 C 的 ptr+=2; <br>　　　　end; </p>
<p>　　六、动态内存分配。C语言中，使用malloc()库函数分配内存，free()函数释放内存。如这样的代码： <br>　　　　int *ptr, *ptr2; <br>　　　　int i; <br>　　　　ptr = (int*) malloc(sizeof(int) * 20); <br>　　　　ptr2 = ptr; <br>　　　　for (i=0; i&lt;20; i++){ <br>　　　　　　*ptr = i; ptr++; <br>　　　　} <br>　　　　free(ptr2); <br>　　　　Object Pascal中，动态分配内存的函数是GetMem()，与之对应的释放函数为FreeMem()（传统 Pascal中获取内存的函数是New()和 Dispose()，但New()只能获得对象的单个实体的内存大小，无法取得连续的存放多个对象的内存块）。因此，与上面那段C的代码等价的Object Pascal的代码为： <br>　　　　var ptr, ptr2 : ^integer; <br>　　　　　　i : integer; <br>　　　　begin <br>　　　　　　GetMem(ptr, sizeof(integer) * 20); <br>　　　　　　　　//这句等价于C的 ptr = (int*) malloc(sizeof(int) * 20); <br>　　　　　　ptr2 := ptr; //保留原始指针位置 <br>　　　　　　for i := 0 to 19 do <br>　　　　　　begin <br>　　　　　　　　ptr^ := i; <br>　　　　　　　　Inc(ptr); <br>　　　　　　end; <br>　　　　　　FreeMem(ptr2); <br>　　　　end; <br>　　　　对于以上这个例子（无论是C版本的，还是Object Pascal版本的），都要注意一个问题，就是分配内存的单位是字节（BYTE），因此在使用GetMem时，其第二个参数如果想当然的写成 20，那么就会出问题了（内存访问越界）。因为GetMem(ptr, 20);实际只分配了20个字节的内存空间，而一个整形的大小是四个字节，那么访问第五个之后的所有元素都是非法的了（对于malloc()的参数同样）。 </p>
<p>　　七、字符数组的运算。C语言中，是没有字符串类型的，因此，字符串都是用字符数组来实现，于是也有一套str打头的库函数以进行字符数组的运算，如以下代码： <br>　　　　char str[15]; <br>　　　　char *pstr; <br>　　　　strcpy(str, "teststr"); <br>　　　　strcat(str, "_testok"); <br>　　　　pstr = (char*) malloc(sizeof(char) * 15); <br>　　　　strcpy(pstr, str); <br>　　　　printf(pstr); <br>　　　　free(pstr); <br>　　　　而在Object Pascal中，有了String类型，因此可以很方便的对字符串进行各种运算。但是，有时我们的Pascal代码需要与C的代码交互（比如：用Object Pascal的代码调用C写的DLL或者用Object Pascal 写的DLL准备允许用C写客户端的代码）的话，就不能使用String类型了，而必须使用两种语言通用的字符数组。其实，Object Pascal提供了完全类似C的一整套字符数组的运算函数，以上那段代码的Object Pascal 版本是这样的： <br>　　　　var str : array [1..15] of char; <br>　　　　　　pstr : PChar; //Pchar 也就是 ^Char <br>　　　　begin <br>　　　　　　StrCopy(@str, 'teststr'); <br>　　　　　　　　//在C中，数组的名称可以直接作为数组首地址指针来用 <br>　　　　　　　　//但Pascal不是这样的，因此 str前要加上取地址的运算符 <br>　　　　　　StrCat(@str, '_testok'); <br>　　　　　　GetMem(pstr, sizeof(char) * 15); <br>　　　　　　StrCopy(pstr, @str); <br>　　　　　　Write(pstr); <br>　　　　　　FreeMem(pstr); <br>　　　　end; </p>
<p>　　八、函数指针。在动态调用DLL中的函数时，就会用到函数指针。假设用C写的一段代码如下： <br>　　　　typedef int (*PVFN)(int); //定义函数指针类型 <br>　　　　int main() <br>　　　　{ <br>　　　　　　HMODULE hModule = LoadLibrary("test.dll"); <br>　　　　　　PVFN pvfn = NULL; <br>　　　　　　pvfn = (PVFN) GetProcAddress(hModule, "Function1"); <br>　　　　　　pvfn(2); <br>　　　　　　FreeLibrary(hModule); <br>　　　　} <br>　　　　就我个人感觉来说，C语言中定义函数指针类型的typedef代码的语法有些晦涩，而同样的代码在 Object Pascal中却非常易懂： <br>　　　　type PVFN = Function (para : Integer) : Integer; <br>　　　　var fn : PVFN; <br>　　　　　　//也可以直接在此处定义，如：fn : function (para:Integer):Integer; <br>　　　　　　hm : HMODULE; <br>　　　　begin <br>　　　　　　hm := LoadLibrary('test.dll'); <br>　　　　　　fn := GetProcAddress(hm, 'Function1'); <br>　　　　　　fn(2); <br>　　　　　　FreeLibrary(hm); <br>　　　　end; </p>
<img src ="http://www.cppblog.com/zhangsk/aggbug/32205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-14 12:15 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/14/32205.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HelloWin</title><link>http://www.cppblog.com/zhangsk/archive/2007/09/13/32149.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Thu, 13 Sep 2007 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/13/32149.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/32149.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/13/32149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/32149.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/32149.html</trackback:ping><description><![CDATA[被Delphi惯坏了，发现写一个原生的Form这么麻烦<br>vc版本<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</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><br>LRESULT&nbsp;CALLBACK&nbsp;WndProc&nbsp;(HWND,&nbsp;UINT,&nbsp;WPARAM,&nbsp;LPARAM)&nbsp;;<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;WINAPI&nbsp;WinMain&nbsp;(HINSTANCE&nbsp;hInstance,&nbsp;HINSTANCE&nbsp;hPrevInstance,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PSTR&nbsp;szCmdLine,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;iCmdShow)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;TCHAR&nbsp;szAppName[]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;TEXT&nbsp;(</span><span style="color: #000000;">"</span><span style="color: #000000;">HelloWin</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hwnd&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WNDCLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass&nbsp;;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.style&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;CS_HREDRAW&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;CS_VREDRAW&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.lpfnWndProc&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WndProc&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.cbClsExtra&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.cbWndExtra&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.hInstance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;hInstance&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.hIcon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;LoadIcon&nbsp;(NULL,&nbsp;IDI_APPLICATION)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.hCursor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;LoadCursor&nbsp;(NULL,&nbsp;IDC_ARROW)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.hbrBackground&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(HBRUSH)&nbsp;GetStockObject&nbsp;(WHITE_BRUSH)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.lpszMenuName&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wndclass.lpszClassName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;szAppName&nbsp;;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">RegisterClass&nbsp;(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">wndclass))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox&nbsp;(NULL,&nbsp;TEXT&nbsp;(</span><span style="color: #000000;">"</span><span style="color: #000000;">This&nbsp;program&nbsp;requires&nbsp;Windows&nbsp;NT!</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;szAppName,&nbsp;MB_ICONERROR)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hwnd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;CreateWindow&nbsp;(szAppName,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;window&nbsp;class&nbsp;name</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TEXT&nbsp;(</span><span style="color: #000000;">"</span><span style="color: #000000;">The&nbsp;Hello&nbsp;Program</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;window&nbsp;caption</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WS_OVERLAPPEDWINDOW,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;window&nbsp;style</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;initial&nbsp;x&nbsp;position</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;initial&nbsp;y&nbsp;position</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;initial&nbsp;x&nbsp;size</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;initial&nbsp;y&nbsp;size</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;parent&nbsp;window&nbsp;handle</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;window&nbsp;menu&nbsp;handle</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hInstance,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;program&nbsp;instance&nbsp;handle</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;creation&nbsp;parameters</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow&nbsp;(hwnd,&nbsp;iCmdShow)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UpdateWindow&nbsp;(hwnd)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(GetMessage&nbsp;(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">msg,&nbsp;NULL,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TranslateMessage&nbsp;(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">msg)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage&nbsp;(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">msg)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;msg.wParam&nbsp;;<br>}<br><br>LRESULT&nbsp;CALLBACK&nbsp;WndProc&nbsp;(HWND&nbsp;hwnd,&nbsp;UINT&nbsp;message,&nbsp;WPARAM&nbsp;wParam,&nbsp;LPARAM&nbsp;lParam)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HDC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdc&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAINTSTRUCT&nbsp;ps&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RECT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rect&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">switch</span><span style="color: #000000;">&nbsp;(message)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;WM_CREATE:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlaySound&nbsp;(TEXT&nbsp;(</span><span style="color: #000000;">"</span><span style="color: #000000;">hellowin.wav</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;NULL,&nbsp;SND_FILENAME&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;SND_ASYNC)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;WM_PAINT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;BeginPaint&nbsp;(hwnd,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">ps)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetClientRect&nbsp;(hwnd,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">rect)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawText&nbsp;(hdc,&nbsp;TEXT&nbsp;(</span><span style="color: #000000;">"</span><span style="color: #000000;">Hello,&nbsp;Windows&nbsp;98!&nbsp;By&nbsp;ZhangSK</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">rect,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DT_SINGLELINE&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;DT_CENTER&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;DT_VCENTER)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EndPaint&nbsp;(hwnd,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">ps)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;WM_DESTROY:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostQuitMessage&nbsp;(</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;DefWindowProc&nbsp;(hwnd,&nbsp;message,&nbsp;wParam,&nbsp;lParam)&nbsp;;<br>}</span></div>
<br>Delphi版本<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">program&nbsp;HelloWin;<br><br>uses<br>&nbsp;&nbsp;Windows,<br>&nbsp;&nbsp;Messages,<br>&nbsp;&nbsp;MMSystem,<br>&nbsp;&nbsp;SysUtils;<br><br>Const<br>&nbsp;&nbsp;AppName:String&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">HelloWin</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br>&nbsp;&nbsp;Null:Integer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>function&nbsp;WndProc(WindowHwnd:HWND;TheMessage:UINT;WPARAMS:wParam;LPARAMS:lParam):Integer;stdcall;<br>var<br>&nbsp;&nbsp;ClientDC:HDC;<br>&nbsp;&nbsp;ps:TPaintStruct;<br>&nbsp;&nbsp;ClientRect:TRect;<br>&nbsp;&nbsp;sUser,&nbsp;sPower:&nbsp;string;<br>begin<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;TheMessage&nbsp;of<br>&nbsp;&nbsp;WM_CREATE:&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlaySound(</span><span style="color: #000000;">'</span><span style="color: #000000;">hellowin.wav</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,SND_FILENAME&nbsp;or&nbsp;SND_ASYNC);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result:</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;WM_PAINT:&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClientDc:</span><span style="color: #000000;">=</span><span style="color: #000000;">BeginPaint(WindowHwnd,ps);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetClientRect(WindowHwnd,ClientRect);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawText(ClientDc,PChar(</span><span style="color: #000000;">'</span><span style="color: #000000;">Hello,Window98!</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;">,ClientRect,DT_SINGLELINE&nbsp;or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DT_CENTER&nbsp;OR&nbsp;DT_VCENTER);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sUser&nbsp;:</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">ZhangSK</span><span style="color: #000000;">''</span><span style="color: #000000;">Testing<img src="http://www.cppblog.com/Images/dot.gif"></span><span style="color: #000000;">'</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sPower&nbsp;:</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">POWERD&nbsp;BY&nbsp;DELPHI</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextOut(ClientDC,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">,&nbsp;PChar(sUser),&nbsp;Length(sUser));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextOut(ClientDC,&nbsp;ClientRect.Right</span><span style="color: #000000;">-</span><span style="color: #000000;">200</span><span style="color: #000000;">,&nbsp;ClientRect.Bottom</span><span style="color: #000000;">-</span><span style="color: #000000;">30</span><span style="color: #000000;">,&nbsp;PChar(sPower),&nbsp;Length(sPower));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Endpaint(Windowhwnd,ps);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result:</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;WM_DESTROY:&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostQuitMessage(</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result:</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;Result:</span><span style="color: #000000;">=</span><span style="color: #000000;">DefWindowProc(WindowHwnd,TheMessage,WPARAMS,LPARAMS);<br>&nbsp;&nbsp;end;<br>end;<br><br><br>&nbsp;&nbsp;<br>var<br>&nbsp;&nbsp;WinHwnd:HWND;<br>&nbsp;&nbsp;WinMsg:MSG;<br>&nbsp;&nbsp;WinClass:WNDCLASS;<br>&nbsp;&nbsp;ECode:DWORD;<br>&nbsp;&nbsp;EString:PChar;<br>begin<br>&nbsp;&nbsp;WinClass.style:</span><span style="color: #000000;">=</span><span style="color: #000000;">CS_HREDRAW&nbsp;OR&nbsp;CS_VREDRAW;<br>&nbsp;&nbsp;WinClass.lpfnWndProc:</span><span style="color: #000000;">=</span><span style="color: #000000;">@WndProc;<br>&nbsp;&nbsp;WinClass.cbClsExtra:</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;WinClass.cbWndExtra:</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;WinClass.hInstance:</span><span style="color: #000000;">=</span><span style="color: #000000;">hInstance;<br>&nbsp;&nbsp;WinClass.hIcon:</span><span style="color: #000000;">=</span><span style="color: #000000;">LoadIcon(NULL,IDI_APPLICATION);<br>&nbsp;&nbsp;WinClass.hCursor:</span><span style="color: #000000;">=</span><span style="color: #000000;">LoadCursor(Null,IDC_ARROW);<br>&nbsp;&nbsp;WinClass.hbrBackground:</span><span style="color: #000000;">=</span><span style="color: #000000;">HBRUSH(GetStockObject(WHITE_BRUSH));<br>&nbsp;&nbsp;WinClass.lpszMenuName:</span><span style="color: #000000;">=</span><span style="color: #000000;">nil;<br>&nbsp;&nbsp;WinClass.lpszClassName:</span><span style="color: #000000;">=</span><span style="color: #000000;">PChar(AppName);<br><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(RegisterClass(WinClass)</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,</span><span style="color: #000000;">'</span><span style="color: #000000;">This&nbsp;application&nbsp;need&nbsp;WINDOWS&nbsp;platform</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">'</span><span style="color: #000000;">message</span><span style="color: #000000;">'</span><span style="color: #000000;">,MB_ICONERROR);<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;WinHwnd:</span><span style="color: #000000;">=</span><span style="color: #000000;">CreateWindow(PChar(AppName),</span><span style="color: #000000;">'</span><span style="color: #000000;">First&nbsp;SDK&nbsp;Application</span><span style="color: #000000;">'</span><span style="color: #000000;">,WS_OVERLAPPEDWINDOW,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,hInstance,nil);<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;Iswindow(WinHwnd)then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(WinHwnd,SW_SHOWNORMAL);<br>&nbsp;&nbsp;&nbsp;&nbsp;updateWindow(WinHwnd);<br>&nbsp;&nbsp;end<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;ECode:</span><span style="color: #000000;">=</span><span style="color: #000000;">GetLastError;<br>&nbsp;&nbsp;&nbsp;&nbsp;EString:</span><span style="color: #000000;">=</span><span style="color: #000000;">PChar(Inttostr(LoWord(ECode)));<br>&nbsp;&nbsp;&nbsp;&nbsp;Messagebox(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,EString,</span><span style="color: #000000;">'</span><span style="color: #000000;">Error</span><span style="color: #000000;">'</span><span style="color: #000000;">,MB_ICONERROR);<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(Getmessage(WinMsg,</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,</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: #0000ff;">do</span><span style="color: #000000;"><br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;TranslateMessage(WinMsg);<br>&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage(WinMsg);<br>&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;UnregisterClass(PChar(AppName),hInstance);<br>end.<br><br></span></div>
<br><br> <img src ="http://www.cppblog.com/zhangsk/aggbug/32149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-13 17:15 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/13/32149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VNC 初识</title><link>http://www.cppblog.com/zhangsk/archive/2007/09/11/32001.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Tue, 11 Sep 2007 05:23:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/11/32001.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/32001.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/11/32001.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/32001.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/32001.html</trackback:ping><description><![CDATA[<ol>
    <li>寻找的动力：看到公司产品中应用程序共享的功能很不错，在想想两年前为了做部队的桌面共享软件而实现的东西，简直不能比较，终于找到这个开源项目<a href="http://www.realvnc.com/">http://www.realvnc.com/</a></li>
    <li>使用感觉：目前是我见到最快的桌面共享软件</li>
    <li>编译源码：直接在VC6下就能编译，（记得不能Build All,只要在FileView选项卡下分别Build vncviewer files和winvnc files就可以）。</li>
    <li>学习计划：从今天2007-09-11开始学习、分析VNC的源代码。<br></li>
</ol>
<br>   <img src ="http://www.cppblog.com/zhangsk/aggbug/32001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-11 13:23 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/11/32001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hi</title><link>http://www.cppblog.com/zhangsk/archive/2007/09/04/31559.html</link><dc:creator>张树坤</dc:creator><author>张树坤</author><pubDate>Tue, 04 Sep 2007 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/zhangsk/archive/2007/09/04/31559.html</guid><wfw:comment>http://www.cppblog.com/zhangsk/comments/31559.html</wfw:comment><comments>http://www.cppblog.com/zhangsk/archive/2007/09/04/31559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zhangsk/comments/commentRss/31559.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zhangsk/services/trackbacks/31559.html</trackback:ping><description><![CDATA[hi c++!<br><br>不会吧，这个c++blog的插入代码竟然没有c++格式的 晕～～<br>建议加入<br>C++<br>Delphi<br>Python<br>的代码格式化<br><br><img src ="http://www.cppblog.com/zhangsk/aggbug/31559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zhangsk/" target="_blank">张树坤</a> 2007-09-04 17:44 <a href="http://www.cppblog.com/zhangsk/archive/2007/09/04/31559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>