﻿<?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/qiaodong/</link><description>耶路撒冷对你来说意味着什么？</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 10:57:10 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 10:57:10 GMT</pubDate><ttl>60</ttl><item><title>Cstring and char *</title><link>http://www.cppblog.com/qiaodong/archive/2007/08/03/29310.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Fri, 03 Aug 2007 09:05:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/08/03/29310.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/29310.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/08/03/29310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/29310.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/29310.html</trackback:ping><description><![CDATA[char*转换成CString &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 若将char*转换成CString，除了直接赋值外，还可使用CString::format进行。例如： &nbsp; <br>&nbsp; char &nbsp; chArray[] &nbsp; = &nbsp; "This &nbsp; is &nbsp; a &nbsp; test"; &nbsp; <br>&nbsp; char &nbsp; * &nbsp; p &nbsp; = &nbsp; "This &nbsp; is &nbsp; a &nbsp; test"; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 或 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; LPSTR &nbsp; p &nbsp; = &nbsp; "This &nbsp; is &nbsp; a &nbsp; test"; &nbsp; 或在已定义Unicode应的用程序中 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; TCHAR &nbsp; * &nbsp; p &nbsp; = &nbsp; _T("This &nbsp; is &nbsp; a &nbsp; test"); &nbsp; 或 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; LPTSTR &nbsp; p &nbsp; = &nbsp; _T("This &nbsp; is &nbsp; a &nbsp; test"); &nbsp; <br>&nbsp; CString &nbsp; theString &nbsp; = &nbsp; chArray; &nbsp; <br>&nbsp; theString.format(_T("%s"), &nbsp; chArray); &nbsp; <br>&nbsp; theString &nbsp; = &nbsp; p; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 2、CString转换成char* &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 若将CString类转换成char*(LPSTR)类型，常常使用下列三种方法： &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 方法一，使用强制转换。例如： &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; CString &nbsp; theString( &nbsp; "This &nbsp; is &nbsp; a &nbsp; test" &nbsp; ); &nbsp; <br>&nbsp; LPTSTR &nbsp; lpsz &nbsp; =(LPTSTR)(LPCTSTR)theString; &nbsp; 方法二，使用strcpy。例如： &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; CString &nbsp; theString( &nbsp; "This &nbsp; is &nbsp; a &nbsp; test" &nbsp; ); &nbsp; <br>&nbsp; LPTSTR &nbsp; lpsz &nbsp; = &nbsp; new &nbsp; TCHAR[theString.GetLength()+1]; &nbsp; <br>&nbsp; _tcscpy(lpsz, &nbsp; theString); &nbsp; 需要说明的是，strcpy(或可移值Unicode/MBCS的_tcscpy)的第二个参数是 &nbsp; const &nbsp; wchar_t* &nbsp; (Unicode)或const &nbsp; char* &nbsp; (ANSI)，系统编译器将会自动对其进行转换。 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 方法三，使用CString::GetBuffer。例如： &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; CString &nbsp; s(_T("This &nbsp; is &nbsp; a &nbsp; test &nbsp; ")); &nbsp; <br>&nbsp; LPTSTR &nbsp; p &nbsp; = &nbsp; s.GetBuffer(); &nbsp; <br>&nbsp; // &nbsp; 在这里添加使用p的代码 &nbsp; <br>&nbsp; if(p &nbsp; != &nbsp; NULL) &nbsp; *p &nbsp; = &nbsp; _T('\0'); &nbsp; <br>&nbsp; s.ReleaseBuffer(); &nbsp; // &nbsp; 使用完后及时释放，以便能使用其它的CString成员函数&nbsp;&nbsp; <br>
<img src ="http://www.cppblog.com/qiaodong/aggbug/29310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-08-03 17:05 <a href="http://www.cppblog.com/qiaodong/archive/2007/08/03/29310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>socket 初始化</title><link>http://www.cppblog.com/qiaodong/archive/2007/07/22/28582.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Sun, 22 Jul 2007 12:56:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/07/22/28582.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/28582.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/07/22/28582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/28582.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/28582.html</trackback:ping><description><![CDATA[<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: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;wVersionRequested&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;MAKEWORD(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;WSADATA&nbsp;&nbsp;&nbsp;wsaData;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;err&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;WSAStartup(wVersionRequested,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wsaData);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;(err&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img id=Codehighlighter1_179_205_Open_Image onclick="this.style.display='none'; Codehighlighter1_179_205_Open_Text.style.display='none'; Codehighlighter1_179_205_Closed_Image.style.display='inline'; Codehighlighter1_179_205_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_179_205_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_179_205_Closed_Text.style.display='none'; Codehighlighter1_179_205_Open_Image.style.display='inline'; Codehighlighter1_179_205_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_179_205_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_179_205_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;WSACleanup();&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;</span></div>
<img src ="http://www.cppblog.com/qiaodong/aggbug/28582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-07-22 20:56 <a href="http://www.cppblog.com/qiaodong/archive/2007/07/22/28582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 字段详解</title><link>http://www.cppblog.com/qiaodong/archive/2007/07/19/28355.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Thu, 19 Jul 2007 06:42:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/07/19/28355.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/28355.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/07/19/28355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/28355.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/28355.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12pt">MySQL支持大量的列类型，它可以被分为3类：数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述，并且总结每个列类型的存储需求，然后提供每个类中的类型性质的更详细的描述。概述有意简化，更详细的说明应该考虑到有关特定列类型的附加信息，例如你能为其指定值的允许格式。 <br><br>由MySQL支持的列类型列在下面。下列代码字母用于描述中： <br><br>M <br>指出最大的显示尺寸。最大的合法的显示尺寸是 255 。 <br>D <br>适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30，但是应该不大于M-2。 <br>方括号(&#8220;[&#8221;和&#8220;]&#8221;)指出可选的类型修饰符的部分。 <br><br>注意，如果你指定一个了为ZEROFILL，MySQL将为该列自动地增加UNSIGNED属性。 <br><br>TINYINT[(M)] [UNSIGNED] [ZEROFILL] <br>一个很小的整数。有符号的范围是-128到127，无符号的范围是0到255。 <br><br><br>SMALLINT[(M)] [UNSIGNED] [ZEROFILL] <br>一个小整数。有符号的范围是-32768到32767，无符号的范围是0到65535。 <br><br>MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] <br>一个中等大小整数。有符号的范围是-8388608到8388607，无符号的范围是0到16777215。 <br><br>INT[(M)] [UNSIGNED] [ZEROFILL] <br>一个正常大小整数。有符号的范围是-2147483648到2147483647，无符号的范围是0到4294967295。 <br><br>INTEGER[(M)] [UNSIGNED] [ZEROFILL] <br>这是INT的一个同义词。 <br><br>BIGINT[(M)] [UNSIGNED] [ZEROFILL] <br><br>一个大整数。有符号的范围是-9223372036854775808到9223372036854775807，无符号的范围是0到 <br><br>18446744073709551615。注意，所有算术运算用有符号的BIGINT或DOUBLE值完成，因此你不应该使用大于9223372036854775807（63位)的有符号大整数，除了位函数！注意，当两个参数是INTEGER值时，-、+和*将使用BIGINT运算！这意味着如果你乘2个大整数(或来自于返回整数的函数)，如果结果大于9223372036854775807，你可以得到意外的结果。一个浮点数字，不能是无符号的，对一个单精度浮点数，其精度可以是&lt;=24，对一个双精度浮点数，是在25 和53之间，这些类型如FLOAT和DOUBLE类型马上在下面描述。FLOAT(X)有对应的FLOAT和DOUBLE相同的范围，但是显示尺寸和小数位数是未定义的。在MySQL3.23中，这是一个真正的浮点值。在更早的MySQL版本中，FLOAT(precision)总是有2位小数。该句法为了ODBC兼容性而提供。 <br><br>FLOAT[(M,D)] [ZEROFILL] <br>一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38，0 和1.175494351E-38到3.402823466E+38。M是显示宽度而D是小数的位数。没有参数的FLOAT或有&lt;24 的一个参数表示一个单精密浮点数字。 <br><br>DOUBLE[(M,D)] [ZEROFILL] <br>一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是显示宽度而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)（25 &lt; = X &lt; = 53）代表一个双精密浮点数字。 <br><br>DOUBLE PRECISION[(M,D)] [ZEROFILL] <br><br><br>REAL[(M,D)] [ZEROFILL] <br>这些是DOUBLE同义词。 <br><br>DECIMAL[(M[,D])] [ZEROFILL] <br>一个未压缩(unpack)的浮点数字。不能无符号。行为如同一个CHAR列：&#8220;未压缩&#8221;意味着数字作为一个字符串被存储，值的每一位使用一个字符。小数点，并且对于负数，&#8220;-&#8221;符号不在M中计算。如果D是0，值将没有小数点或小数部分。DECIMAL值的最大范围与DOUBLE相同，但是对一个给定的DECIMAL列，实际的范围可以通过M和D的选择被限制。如果D被省略，它被设置为0。如果M被省掉，它被设置为10。注意，在MySQL3.22里，M参数包括符号和小数点。 <br><br>NUMERIC(M,D) [ZEROFILL] <br>这是DECIMAL的一个同义词。 <br><br>DATE <br>一个日期。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值，但是允许你使用字符串或数字把值赋给DATE列。 <br><br>DATETIME <br>一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值，但是允许你使用字符串或数字把值赋给DATETIME的列。 <br><br>TIMESTAMP[(M)] <br>一个时间戳记。范围是'1970-01-01 00:00:00'到2037年的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值，取决于是否M是14（或省略)、12、8或6，但是允许你使用字符串或数字把值赋给TIMESTAMP列。一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和时间是有用的，因为如果你不自己给它赋值，它自动地被设置为最近操作的日期和时间。你以可以通过赋给它一个NULL值设置它为当前的日期和时间。 <br>TIME <br>一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式来显示TIME值，但是允许你使用字符串或数字把值赋给TIME列。 <br><br>YEAR[(2|4)] <br>一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155，和0000（4位年格式），如果你使用2位，1970-2069( 70-69)。MySQL以YYYY格式来显示YEAR值，但是允许你把使用字符串或数字值赋给YEAR列。（YEAR类型在MySQL3.22中是新类型。） <br><br>CHAR(M) [BINARY] <br>一个定长字符串，当存储时，总是是用空格填满右边到指定的长度。M的范围是1 ～ 255个字符。当值被检索时，空格尾部被删除。CHAR值根据缺省字符集以大小写不区分的方式排序和比较，除非给出BINARY关键词。NATIONAL CHAR（短形式NCHAR)是ANSI SQL的方式来定义CHAR列应该使用缺省字符集。这是MySQL的缺省。CHAR是CHARACTER的一个缩写。 <br><br>[NATIONAL] VARCHAR(M) [BINARY] <br>一个变长字符串。注意：当值被存储时，尾部的空格被删除(这不同于ANSI SQL规范)。M的范围是1 ～ 255个字符。 VARCHAR值根据缺省字符集以大小写不区分的方式排序和比较，除非给出BINARY关键词值。 VARCHAR是CHARACTER VARYING一个缩写。 <br><br>TINYBLOB <br><br>TINYTEXT <br>一个BLOB或TEXT列，最大长度为255(2^8-1)个字符。 <br>BLOB <br><br><br>TEXT <br>一个BLOB或TEXT列，最大长度为65535(2^16-1)个字符。 <br><br>MEDIUMBLOB <br><br>MEDIUMTEXT <br>一个BLOB或TEXT列，最大长度为16777215(2^24-1)个字符。 <br>LONGBLOB <br><br>LONGTEXT <br>一个BLOB或TEXT列，最大长度为4294967295(2^32-1)个字符。 <br><br>ENUM('value1','value2',...) <br>枚举。一个仅有一个值的字符串对象，这个值式选自与值列表'value1'、'value2', ...,或NULL。一个ENUM最多能有65535不同的值。 <br><br>SET('value1','value2',...) <br>一个集合。能有零个或多个值的一个字符串对象，其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。</span>
<img src ="http://www.cppblog.com/qiaodong/aggbug/28355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-07-19 14:42 <a href="http://www.cppblog.com/qiaodong/archive/2007/07/19/28355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C 程序设计经典书籍</title><link>http://www.cppblog.com/qiaodong/archive/2007/06/07/25706.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Thu, 07 Jun 2007 01:56:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/06/07/25706.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/25706.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/06/07/25706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/25706.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/25706.html</trackback:ping><description><![CDATA[<div id=OutBox>
<div style="FLOAT: left; WIDTH: 69%">
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td>
            <div style="FLOAT: left; PADDING-TOP: 20px">
            <div style="FONT-WEIGHT: bold; FONT-SIZE: 16px; FLOAT: left; PADDING-BOTTOM: 10px; WIDTH: 100%">荣耀：C程序设计之四书五经 </div>
            <div class=line1></div>
            </div>
            </td>
        </tr>
        <tr>
            <td style="PADDING-LEFT: 20px"><font color=green>来自:</font><a href="http://club.book.csdn.net/people/bookread.html">bookread</a> </td>
        </tr>
        <tr>
            <td style="PADDING-LEFT: 30px"></td>
        </tr>
        <tr>
            <td style="COLOR: gray; HEIGHT: 14px; TEXT-ALIGN: right">此书架对<span id=qq>287</span>人里的<span id=pp>208</span>人有用
            <div class=cntNav style="FLOAT: left; WIDTH: 100%">对你<span class=act> <a id=p5 onclick="SubInfo(1,this.id,event);return false;" href="http://club.book.csdn.net/people/mylist5.html#">有用</a></span> <span class=act><a id=5 onclick="SubInfo(0,this.id,event);return false;" href="http://club.book.csdn.net/people/mylist5.html#">无用</a></span> </div>
            </td>
        </tr>
    </tbody>
</table>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td class=line1>&nbsp; </td>
        </tr>
        <tr>
            <td><span id=__listBook__>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/7703.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/7703.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/7703.html">C程序设计教程</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>（美）H.M.Deitel等著 薛万鹏等译 / 2000年7月 / 机械工业出版社 / 33元 / 787*1092 1/16 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/64.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/64.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/64.html">C陷阱与缺陷</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>Andrew Koenig著 高巍译 / 2002年11月 / 人民邮电出版社 / 30元 / 720*980 1/16 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/12674.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/12674.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/12674.html">C语言接口与实现——创建可重用软件的技术</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>[美]汉森 著，傅蓉等 译 / 01 1 2004 12:00AM / 机械工业出版社 / 35元 / 787*1092 1/16 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/1655.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/1655.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/1655.html">C语言参考手册（原书第5版）</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>（美）Samuel P.Harbison III/Guy L.Steele Jr.著 邱仲潘等译 / 2003年8月 / 机械工业出版社 / 39元 / 787*1092 1/16 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/19109.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/19109.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/19109.html">C语言参考手册（第五版）（英文版）</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>哈比森，斯蒂尔 著 / 06 1 2003 12:00AM / 人民邮电出版社 / 45元 / 16开 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/2529.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/2529.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/2529.html">C专家编程</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>Peter Van Der Linden著 徐波译 / 2002年12月 / 人民邮电出版社 / 40元 / 800*1000 1/16 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/12720.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/12720.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/12720.html">C程序设计语言（第2版&#183;新版）习题解答</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>[美]汤朵，[美]吉米拜尔 著，杨涛等 译 / 01 1 2004 12:00AM / 机械工业出版社 / 15元 / 787*1092 1/16 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/12645.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/12645.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/12645.html">C程序设计语言(第2版&#183;新版)</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>（美）克尼汉，（美）里奇 著，徐宝文，李志 译 / 01 1 2004 12:00AM / 机械工业出版社 / 30元 / 787*1092 1/16 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/18283.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/18283.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/18283.html">C程序设计语言第二版习题解答（第二版)（英文影印版）</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>Clovis L.Tondo,Scott E.Gimpel / 2000-3-1 / 清华大学出版社 / 12元 / </td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px; COLOR: gray; TEXT-INDENT: 2em" align=left></td>
                    </tr>
                    <tr>
                        <td align=left><br></td>
                    </tr>
                    <tr>
                        <td class=z2 style="PADDING-BOTTOM: 10px; WIDTH: 100%" colSpan=2>&nbsp; </td>
                    </tr>
                </tbody>
            </table>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="WIDTH: 90px" rowSpan=3><a href="http://club.book.csdn.net/book/11250.html"><img height=90 alt="" src="http://club.book.csdn.net/pic/11250.jpg" width=70></a></td>
                        <td style="PADDING-LEFT: 20px; WIDTH: 650px" align=left><a href="http://club.book.csdn.net/book/11250.html">C程序设计语言</a>&nbsp;</td>
                    </tr>
                    <tr>
                        <td style="PADDING-LEFT: 20px" align=left>Brian W.Kernighan / 1997年3月 / 清华大学出版社 / 0元 / 850*1168 1/32 / </td>
                    </tr>
                </tbody>
            </table>
            </span></td>
        </tr>
    </tbody>
</table>
</div>
</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<img src ="http://www.cppblog.com/qiaodong/aggbug/25706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-06-07 09:56 <a href="http://www.cppblog.com/qiaodong/archive/2007/06/07/25706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获得控件内容</title><link>http://www.cppblog.com/qiaodong/archive/2007/06/04/25528.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Mon, 04 Jun 2007 15:18:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/06/04/25528.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/25528.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/06/04/25528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/25528.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/25528.html</trackback:ping><description><![CDATA[<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.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Edit</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">输入框</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.(CWnd&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_EDIT_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetWindowText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">GetDlgItemInt(IDC_EDIT_1,&nbsp;&nbsp;&nbsp;NULL,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">.(CWnd&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_EDIT_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetWindowText(cs);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;Combox</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">下拉框</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.((CComboBox&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_COMB_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetCurSel(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">.&nbsp;&nbsp;&nbsp;GetDlgItemText(IDC_COMB_1,&nbsp;&nbsp;&nbsp;cs,&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">m_COM.GetCurSel();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_COM.GetLBText(i,cs);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">.m_COM.AddString(cs);m_COM.DeleteString(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);m_COM.SetCurSel(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;Radio</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">单选按钮</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.((CButton&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_RADIO_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetCheck(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_676_677_Open_Image onclick="this.style.display='none'; Codehighlighter1_676_677_Open_Text.style.display='none'; Codehighlighter1_676_677_Closed_Image.style.display='inline'; Codehighlighter1_676_677_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_676_677_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_676_677_Closed_Text.style.display='none'; Codehighlighter1_676_677_Open_Image.style.display='inline'; Codehighlighter1_676_677_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;(((CButton&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_RADIO_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetCheck())&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_676_677_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_676_677_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">.((CButton&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_RADIO_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetCheck(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;List&nbsp;&nbsp;&nbsp;Control</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">列表</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.m_list2.SetExtendedStyle(LVS_EX_FULLROWSELECT</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">LVS_EX_GRIDLINES);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_list2.InsertColumn(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TagID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,LVCFMT_LEFT,</span><span style="COLOR: #000000">60</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_list2.InsertColumn(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TagType</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,LVCFMT_CENTER,</span><span style="COLOR: #000000">120</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_list2.InsertItem(i,cs1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_list2.SetItemText(i,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,cs2);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(m_list2.GetSelectedItem()</span><span style="COLOR: #000000">!=-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_1122_1230_Open_Image onclick="this.style.display='none'; Codehighlighter1_1122_1230_Open_Text.style.display='none'; Codehighlighter1_1122_1230_Closed_Image.style.display='inline'; Codehighlighter1_1122_1230_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1122_1230_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1122_1230_Closed_Text.style.display='none'; Codehighlighter1_1122_1230_Open_Image.style.display='inline'; Codehighlighter1_1122_1230_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1122_1230_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1122_1230_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">m_list2.GetSelectionMark();&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">m_list2.GetItemText(i,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">m_List2.GetItemCount();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">.m_list2.DeleteItem(i);m_list2.DeleteAllItems();&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;ListBox</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">列表框</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.((CListBox&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)listBox)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">InsertString(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;&nbsp;&nbsp;str);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;Button</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">按钮</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.((CWnd&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_BUTTON_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">ShowWindow(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">.((CWnd&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetDlgItem(IDC_BUTTON_1))</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">EnableWindow(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<img src ="http://www.cppblog.com/qiaodong/aggbug/25528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-06-04 23:18 <a href="http://www.cppblog.com/qiaodong/archive/2007/06/04/25528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xp系统下SQL安装提示文件挂起的解决方法</title><link>http://www.cppblog.com/qiaodong/archive/2007/05/28/24970.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Mon, 28 May 2007 04:26:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/05/28/24970.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/24970.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/05/28/24970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/24970.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/24970.html</trackback:ping><description><![CDATA[<span class=t18>&nbsp;
<p>在Windwos Xp下,要安装Sql或sp补丁以及其他软件,尤其是微软自己的软件的时候,系统提示之前有挂起的安装操作，要求重启，这里往往重启无用，解决办法：</p>
<p>到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager</p>
<p>删除PendingFileRenameOperations<br>再重新安装就可以了.</p>
</span>
<img src ="http://www.cppblog.com/qiaodong/aggbug/24970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-05-28 12:26 <a href="http://www.cppblog.com/qiaodong/archive/2007/05/28/24970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读书清单</title><link>http://www.cppblog.com/qiaodong/archive/2007/05/23/24679.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Wed, 23 May 2007 02:45:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/05/23/24679.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/24679.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/05/23/24679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/24679.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/24679.html</trackback:ping><description><![CDATA[最近看完了《千年一叹》，重新买了两本余秋雨老师的书：《行者无疆》《霜冷长河》<br>正在看霜冷长河，觉得很好看。
<img src ="http://www.cppblog.com/qiaodong/aggbug/24679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-05-23 10:45 <a href="http://www.cppblog.com/qiaodong/archive/2007/05/23/24679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将资源打成DLL</title><link>http://www.cppblog.com/qiaodong/archive/2007/04/24/22712.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Tue, 24 Apr 2007 04:00:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/04/24/22712.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/22712.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/04/24/22712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/22712.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/22712.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1&nbsp;&nbsp;1&nbsp;//&nbsp;&nbsp;&nbsp;UseResourceDllView.cpp&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;implementation&nbsp;&nbsp;&nbsp;of&nbsp;&nbsp;&nbsp;the&nbsp;&nbsp;&nbsp;CUseResourceDllView&nbsp;&...&nbsp;&nbsp;<a href='http://www.cppblog.com/qiaodong/archive/2007/04/24/22712.html'>阅读全文</a><img src ="http://www.cppblog.com/qiaodong/aggbug/22712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-04-24 12:00 <a href="http://www.cppblog.com/qiaodong/archive/2007/04/24/22712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC中动态添加控件</title><link>http://www.cppblog.com/qiaodong/archive/2007/04/23/22640.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Mon, 23 Apr 2007 06:44:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/04/23/22640.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/22640.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/04/23/22640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/22640.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/22640.html</trackback:ping><description><![CDATA[<strong>动态控件是指在需要时由Create()创建的控件，这与预先在对话框中放置的控件是不同的。 <br><br>　　一、创建动态控件：<br><br>　　为了对照，我们先来看一下静态控件的创建。<br><br>　　放置静态控件时必须先建立一个容器，一般是对话框，这时我们在对话框编辑窗口中，从工具窗口中拖出所需控件放在对话框中即可，再适当修改控件ID，设置控件属性，一个静态控件就创建好了，当对话框被显示时，其上的控件也会显示。<br><br>　　静态控件不需要调用Create()函数来创建。<br><br>　　而创建动态控件有很大不同，以下以按钮为例，看一下动态控件的创建过程：<br><br>　　1.建立控件ID号：<br><br>　　ID号是控件的标识，创建控件前必须先为它设置一个ID号。<br><br>　　打开资源中的&#8220;String Table&#8221;，在空白行上双击鼠标，这时会弹出一个ID属性对话框，在其中的ID编辑框中输入ID，如：IDC_MYBUTTON，在Caption中输入控件标题或注解（注：Caption框不能为空，为空会导致创建失败），这里我输入的是按钮上要显示的文字--动态按钮。<br><br>　　2.建立控件对象：<br><br>　　不同种类的控件应创建不同的类对象：<br><br>　　&#183;按钮控件 CButton （包括普通按钮、单选按钮和复选按钮）<br>　　&#183;编辑控件 CEdit<br>　　&#183;静态文本控件 CStatic<br>　　&#183;标签控件 CTabCtrl<br>　　&#183;旋转控件 CSpinButtonCtrl<br>　　&#183;滑标控件 CSliderCtrl<br>　　&#183;多信息编辑控件 CRichEditCtrl<br>　　&#183;进度条控件 CProgressCtrl<br>　　&#183;滚动条控件 CSrcollBar<br>　　&#183;组合框控件 CComboBox<br>　　&#183;列表框控件 CListBox<br>　　&#183;图像列表控件 CImageCtrl<br>　　&#183;树状控件 CTreeCtrl<br>　　&#183;动画控件 CAnimateCtrl<br><br>　　本例中我们创建一个CButton类的普通按钮。注意不能直接定义CButton对象，如：CButton m_MyBut;这种定义只能用来给静态控件定义控制变量，不能用于动态控件。<br><br>　　正确做法是用new调用CButton构造函数生成一个实例：<br><br></strong>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>CButton *p_MyBut = new CButton();</td>
        </tr>
    </tbody>
</table>
<br>　　然后用CButton类的Create()函数创建，该函数原型如下：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT&amp; rect, CWnd* pParentWnd, UINT nID );</td>
        </tr>
    </tbody>
</table>
<br>　　lpszCaption是按钮上显示的文本；dwStyle指定按钮风格，可以是按钮风格与窗口风格的组合，取值有：<br><br>　　窗口风格：<br><br>　　&#183;WS_CHILD 子窗口，必须有<br>　　&#183;WS_VISIBLE 窗口可见，一般都有<br>　　&#183;WS_DISABLED 禁用窗口，创建初始状态为灰色不可用的按钮时使用<br>　　&#183;WS_TABSTOP 可用Tab键选择<br>　　&#183;WS_GROUP 成组，用于成组的单选按钮中的第一个按钮<br><br>　　按钮风格：<br><br>　　&#183;BS_PUSHBUTTON 下压式按钮，也即普通按钮<br>　　&#183;BS_AUTORADIOBUTTON 含自动选中状态的单选按钮<br>　　&#183;BS_RADIOBUTTON 单选按钮，不常用<br>　　&#183;BS_AUTOCHECKBOX 含自动选中状态的复选按钮<br>　　&#183;BS_CHECKBOX 复选按钮，不常用<br>　　&#183;BS_AUTO3STATE 含自动选中状态的三态复选按钮<br>　　&#183;BS_3STATE 三态复选按钮，不常用<br>　<br>　　以上风格指定了创建的按钮类型，不能同时使用，但必须有其一。<br><br>　　&#183;BS_BITMAP 按钮上将显示位图<br>　　&#183;BS_DEFPUSHBUTTON 设置为默认按钮，只用于下压式按钮，一个对话框中只能指定一个默认按钮<br>　　&#183;rect指定按钮的大小和位置；<br>　　&#183;pParentWnd指示拥有按钮的父窗口，不能为NULL；<br>　　&#183;nID指定与按钮关联的ID号，用上一步创建的ID号。<br><br>　　不同控件类的Create()函数略有不同，可参考相关资料。<br><br>　　例：p_MyBut-&gt;Create( "动态按钮", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20,10,80,40), this, IDC_MYBUTTON );<br>这样，我们就在当前对话框中的(20,10)处创建了宽60，高30，按钮文字为&#8220;动态按钮&#8221;的下压式按钮。<br><br>　　为了使创建过程更方便易用，我定义了如下函数：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>CButton* CTextEditorView::NewMyButton(int nID,CRect rect,int nStyle)<br>{<br>CString m_Caption;<br>m_Caption.LoadString( nID ); //取按钮标题<br>CButton *p_Button = new CButton();<br>ASSERT_VALID(p_Button);<br>p_Button-&gt;Create( m_Caption, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | nStyle, rect, this, nID ); //创建按钮<br>return p_Button;<br>} </td>
        </tr>
    </tbody>
</table>
<br>　　其中m_Caption.LoadString( nID )是从字符串表中读取按钮文本，这样在创建按钮ID时，应该把文本设置好，参数nStyle为除必须风格外的额外风格。<br><br>　　以下，我调用该函数创建三个按钮，并指定第一个按钮为默认按钮，按钮的ID已预先设置好了：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>CButton *p_MyBut[3];<br>p_MyBut[0] = NewMyButton( ID_MYBUT1, CRect(10,20,50,35), BS_DEFPUSHBUTTON );<br>p_MyBut[1] = NewMyButton( ID_MYBUT2, CRect(55,20,95,35), 0 );<br>p_MyBut[2] = NewMyButton( ID_MYBUT3, CRect(100,20,140,35), 0 ); </td>
        </tr>
    </tbody>
</table>
<br>　　<strong>二、动态控件的响应</strong>：<br><br>　　动态控件的响应函数不能用ClassWizard添加，只能手动添加。仍以上面的按钮为例，我们制作按钮的单击响应函数。<br><br>　　1.在MESSAGE_MAP中添加响应函数：<br><br>　　MESSAGE_MAP表中定义了消息响应函数，其格式为：消息名(ID,函数名)，当我们用ClassWizard添加函数时，会自动添加在AFX_MSG_MAP括起的区间内，如：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)<br>//{{AFX_MSG_MAP(CTextEditorView)<br>ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)<br>//}}AFX_MSG_MAP<br>END_MESSAGE_MAP() </td>
        </tr>
    </tbody>
</table>
　<br>　　手工添加时不要添加到AFX_MSG_MAP区间内，以防ClassWizard不能正常工作，如： <br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)<br>//{{AFX_MSG_MAP(CTextEditorView)<br>ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)<br>//}}AFX_MSG_MAP<br>ON_BN_CLICKED(ID_MYBUT1, OnMybut1)<br>ON_BN_CLICKED(ID_MYBUT2, OnMybut2)<br>ON_BN_CLICKED(ID_MYBUT3, OnMybut3)<br>END_MESSAGE_MAP() </td>
        </tr>
    </tbody>
</table>
<br>　　其中ON_BN_CLICKED是按钮单击消息。<br><br>　　2.在头文件中添加函数定义：<br><br>　　用ClassWizard添加函数时，会在头文件的AFX_MSG区间内添加函数定义，如： <br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>protected:<br>//{{AFX_MSG(CTextEditorView)<br>afx_msg void OnIconbut0();<br>//}}AFX_MSG<br>DECLARE_MESSAGE_MAP() </td>
        </tr>
    </tbody>
</table>
<br>　　我们模仿这种形式，只是把函数定义添加到AFX_MSG区间外就行了：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>protected:<br>//{{AFX_MSG(CTextEditorView)<br>afx_msg void OnIconbut0();<br>//}}AFX_MSG<br>afx_msg void OnMybut1();<br>afx_msg void OnMybut2();<br>afx_msg void OnMybut3();<br>DECLARE_MESSAGE_MAP() </td>
        </tr>
    </tbody>
</table>
<br>　　3.编写消息响应函数：<br><br>　　以上是把消息和函数关联起来了，具体在单击按钮后应做的工作在函数中完成： <br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>void CTextEditorView::OnMybut1()<br>{<br>MessageBox( "哈！你单击了动态按钮。" );<br>}<br>void CTextEditorView::OnMybut2()<br>{<br>&#8230;&#8230;<br>}<br>void CTextEditorView::OnMybut3()<br>{<br>&#8230;&#8230;<br>} </td>
        </tr>
    </tbody>
</table>
<br>　　除了按钮的响应函数外，你还可以用上面获得的指针访问按钮，如：<br><br>　　修改按钮的大小和位置：p_MyBut[0]-&gt;MoveWindow(&#8230;&#8230;);<br><br>　　修改按钮文本：p_MyBut[0]-&gt;SetWindowText(&#8230;&#8230;);<br><br>　　显示/隐藏按钮：p_MyBut[0]-&gt;ShowWindow(&#8230;&#8230;);等等。<br>三、回收资源：<br><br>　　由于动态控件对象是由new生成的，它不会被程序自动释放，所以需手工释放。在控件不再使用时可以删除它：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>if( p_MyBut[0] )<br>delete p_MyBut[0]; </td>
        </tr>
    </tbody>
</table>
<br>　　以上就是按钮控件动态生成的方法。下面，再看一下单选按钮的动态生成问题。 四、实例：单选按钮组的动态生成<br><br>　　单选按钮也属于CButton类，但由于单选按钮总是成组使用的，所以它在制作和使用上与普通按钮有一定区别。<br><br>　　假设有三个单选按钮组成一组，初始时，第一个单选按钮处于选中状态。<br><br>　　我们先来看静态制作方法：在对话框中放置三个单选按钮，设置属性如下：<br><br>　　&#183;Radio1属性：Visible、Group、Tab stop、Auto<br>　　&#183;Radio2属性：Visible、Tab stop、Auto<br>　　&#183;Radio3属性：Visible、Tab stop、Auto<br><br>　　这样的属性设置就把三个单选按钮分成了一组，它们一次只能有一个被选中，若对话框中还有其它成组的单选按钮，使用时也会互不干扰。但这时还没有使第一个按钮处于选中状态。<br><br>　　接着就用ClassWizard为这组单选按钮添加变量，这里只需为第一个单选按钮添加变量即可。设变量名为m_Radio，类型选为int型。在构造函数中ClassWizard把m_Radio的值设置为-1，我们把它改为0，这样在运行程序时可以看到第一个单选按钮处于选中状态了。之后，还应该用ClassWizard为三个单选按钮添加单击响应函数，在里面修改m_Radio的值对应三个单选按钮就可以了。<br><br>　　以上就是通常制作单选按钮组的办法，现我们欲改为动态生成，主要要解决按钮分组和单击控制问题。以下为制作步骤：<br><br>　　1.定义三个单选按钮的ID：<br><br>　　打开资源中的&#8220;String Table&#8221;，在其中添加三个ID值：<br><br>　　&#183;第一个：ID为IDC_MYRADIO1，Caption为单选1<br>　　&#183;第二个：ID为IDC_MYRADIO2，Caption为单选2<br>　　&#183;第三个：ID为IDC_MYRADIO3，Caption为单选3<br><br>　　其中Caption为按钮上要显示的文字，可根据需要设置。<br><br>　　2.用CButton类的Create()函数生成三个单选按钮：<br><br>　　为方便起见，先定义一个函数生成单选按钮： <br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>CButton* CTextEditorView::NewMyRadio(int nID,CRect rect,int nStyle)<br>{<br>　CString m_Caption;<br>　m_Caption.LoadString( nID ); //取按钮标题<br>　CButton *p_Radio = new CButton();<br>　ASSERT_VALID(p_Radio);<br>　p_Radio-&gt;Create( m_Caption, WS_CHILD | WS_VISIBLE | nStyle | WS_TABSTOP | BS_AUTORADIOBUTTON, rect, this, nID ); //创建按钮<br>　return p_Radio;<br>} </td>
        </tr>
    </tbody>
</table>
<br>　　函数LoadString()用于从&#8220;String Table&#8221;中读取按钮文本，Create()函数中设定了单选按钮必须的属性，其中就包括了Visible、Tab stop、Auto属性。<br><br>　　参数nID为单选按钮ID号，rect为单选按钮尺寸，nStyle为除必要属性外的其它属性。返回值为指向新建按钮的指针。<br><br>　　有了这个函数后，创建单选按钮组时只要依次调用该函数即可，其中单选按钮组的第一个单选按钮必须指定WS_GROUP属性。<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>CButton *p_MyRadio[3];<br>p_MyRadio[0] = NewMyRadio( IDC_MYRADIO1, CRect(15,90,60,105), WS_GROUP );<br>p_MyRadio[1] = NewMyRadio( IDC_MYRADIO2, CRect(15,108,60,123), 0 );<br>p_MyRadio[2] = NewMyRadio( IDC_MYRADIO3, CRect(15,126,60,141), 0 ); </td>
        </tr>
    </tbody>
</table>
<br>　　3.定义单选按钮组的控制变量，设置第一个单选按钮为选中状态：<br><br>　　这里不能用ClassWizard添加变量，也不要在DoDataExchange()中添加控制变量，因为动态控件一开始并不存在，在DoDataExchange()中添加控制变量会造成运行错误。这里我们只需在头文件中随意定义一个int型变量作为控制变量即可，如：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>int m_SelRadio;</td>
        </tr>
    </tbody>
</table>
<br>　　在构造函数中设置其初值为0：m_SelRadio = 0;<br><br>　　在上面的创建按钮的语句中，用SetCheck()函数设置初始选中的按钮：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>CButton *p_MyRadio[3];<br>p_MyRadio[0] = NewMyRadio( IDC_MYRADIO1, CRect(15,90,60,105), WS_GROUP );<br>p_MyRadio[1] = NewMyRadio( IDC_MYRADIO2, CRect(15,108,60,123), 0 );<br>p_MyRadio[2] = NewMyRadio( IDC_MYRADIO3, CRect(15,126,60,141), 0 );<br>p_MyRadio[m_SelRadio]-&gt;SetCheck(1); //设置第一个单选为选中状态 </td>
        </tr>
    </tbody>
</table>
<br>　　在SetCheck()函数中，参数为1表示设置为选中状态，为0表示未选中状态。<br><br>　　4.添加鼠标单击响应函数：<br><br>　　鼠标单击某单选按钮后，其状态已经能自动改变，这里我们还需修改控制变量m_SelRadio的值，以便跟踪选中的单选按钮。<br><br>　　首先在MESSAGE_MAP中把鼠标单击消息与响应函数联系起来： <br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)<br>//{{AFX_MSG_MAP(CTextEditorView)<br>ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0) //ClassWizard在此处添加<br>//}}AFX_MSG_MAP<br>ON_BN_CLICKED(IDC_MYRADIO1, OnMyRadio1) //单选按钮1<br>ON_BN_CLICKED(IDC_MYRADIO2, OnMyRadio2) //单选按钮2<br>ON_BN_CLICKED(IDC_MYRADIO3, OnMyRadio3) //单选按钮3<br>END_MESSAGE_MAP() </td>
        </tr>
    </tbody>
</table>
<br>　　然后在头文件的MESSAGE_MAP中定义单击函数：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>protected:<br>//{{AFX_MSG(CTextEditorView)<br>afx_msg void OnIconbut0(); //ClassWizard在此处添加<br>//}}AFX_MSG<br>afx_msg void OnMyRadio1(); //单选按钮1<br>afx_msg void OnMyRadio2(); //单选按钮2<br>afx_msg void OnMyRadio3(); //单选按钮3<br>DECLARE_MESSAGE_MAP() </td>
        </tr>
    </tbody>
</table>
<br>　　这里注意不要把函数加在AFX_MSG区间内，以防影响ClassWizard的使用。<br><br>　　定义具体的响应函数（这里是用手工加入的，不是用ClassWizard加入的）：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>//单击单选按钮1 void CTextEditorView::OnMyRadio1() <br>{<br>m_SelRadio=0;<br>} <br><br>//单击单选按钮2 void CTextEditorView::OnMyRadio2() <br>{<br>m_SelRadio=1;<br>} <br><br>//单击单选按钮3 void CTextEditorView::OnMyRadio3() <br>{<br>m_SelRadio=2;<br>}</td>
        </tr>
    </tbody>
</table>
<br>　　5.回收资源：<br><br>　　在析构函数中，回收创建的单选按钮（也可以在不使用单选按钮时立即回收）：<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
    <tbody>
        <tr>
            <td>CTextEditorView::~CTextEditorView()<br>{<br>int i;<br>for( i=0; i&lt;3; i++)<br>{<br>if(p_MyRadio[i])<br>delete p_MyRadio[i];<br>}<br>}</td>
        </tr>
    </tbody>
</table>
<br>　　以上就是动态控件的生成和响应方法，各种不同的控件做法略有不同，但思路和步骤都是类似的，希望以上实例对你能够有所帮助。 <br><br><br><br><br>
<img src ="http://www.cppblog.com/qiaodong/aggbug/22640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-04-23 14:44 <a href="http://www.cppblog.com/qiaodong/archive/2007/04/23/22640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用ITaskbarList接口操纵Windows任务栏程序按钮的状态 </title><link>http://www.cppblog.com/qiaodong/archive/2007/04/22/22606.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Sun, 22 Apr 2007 14:45:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2007/04/22/22606.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/22606.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2007/04/22/22606.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/22606.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/22606.html</trackback:ping><description><![CDATA[<p><font face="Courier New" size=1>class CXDlg : public CDialog<br>{<br>&nbsp;&nbsp;&nbsp; ......<br>&nbsp;&nbsp;&nbsp; public:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef ITaskbarList *LPITaskbarList;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPITaskbarList pTaskbar;<br>&nbsp;&nbsp;&nbsp; ......<br>};</font></p>
<p><strong><u><font color=#008000 size=2>Step 2: 初始化 任务栏COM 对象</font></u></strong></p>
<p><font face="Courier New" size=1>BOOL CXDlg::OnInitDialog()<br>{<br>&nbsp;&nbsp;&nbsp; ......<br>&nbsp;&nbsp;&nbsp; // Initializes the Component Object Model(COM)<br>&nbsp;&nbsp;&nbsp; CoInitialize(0);<br>&nbsp;&nbsp;&nbsp; // We call below function since we only need to create one object<br>&nbsp;&nbsp;&nbsp; CoCreateInstance(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLSID_TaskbarList,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLSCTX_INPROC_SERVER,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IID_ITaskbarList,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (void**)&amp;pTaskbar<br>&nbsp;&nbsp;&nbsp; );<br>&nbsp;&nbsp;&nbsp; // Below function will initialize the taskbar list object<br>&nbsp;&nbsp;&nbsp; pTaskbar-&gt;HrInit();<br>&nbsp;&nbsp;&nbsp; ......<br>}</font></p>
<p><font color=#008000 size=2><strong><u>Step 3: 使用：删除/显示 任务栏程序按钮</u></strong></font></p>
<p><font face="Courier New" size=1>void CXDlg::OnBnClickedButtonHide()<br>{<br>&nbsp;&nbsp;&nbsp; pTaskbar-&gt;DeleteTab(this-&gt;GetSafeHwnd());<br>}</font></p>
<p><font face="Courier New" size=1>void CXDlg::OnBnClickedButtonShow()<br>{<br>&nbsp;&nbsp;&nbsp; pTaskbar-&gt;AddTab(this-&gt;GetSafeHwnd());<br>}</font></p>
<br><br><br>
<img src ="http://www.cppblog.com/qiaodong/aggbug/22606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2007-04-22 22:45 <a href="http://www.cppblog.com/qiaodong/archive/2007/04/22/22606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>