??xml version="1.0" encoding="utf-8" standalone="yes"?>久久人人超碰精品CAOPOREN,亚洲人成网站999久久久综合,一97日本道伊人久久综合影院http://www.shnenglu.com/qiaodong/archive/2007/08/03/29310.html乔栋乔栋Fri, 03 Aug 2007 09:05:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/08/03/29310.htmlhttp://www.shnenglu.com/qiaodong/comments/29310.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/08/03/29310.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/29310.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/29310.html   
  若将char*转换成CStringQ除了直接赋值外Q还可用CString::formatq行。例如:  
  char   chArray[]   =   "This   is   a   test";  
  char   *   p   =   "This   is   a   test";  
   
  ? 
   
  LPSTR   p   =   "This   is   a   test";   或在已定义Unicode应的用程序中  
   
  TCHAR   *   p   =   _T("This   is   a   test");   ? 
   
  LPTSTR   p   =   _T("This   is   a   test");  
  CString   theString   =   chArray;  
  theString.format(_T("%s"),   chArray);  
  theString   =   p;  
   
  2、CString转换成char*  
   
  若将CStringc{换成char*(LPSTR)cdQ常怋用下列三U方法:  
   
  Ҏ一Q用强制{换。例如:  
   
  CString   theString(   "This   is   a   test"   );  
  LPTSTR   lpsz   =(LPTSTR)(LPCTSTR)theString;   Ҏ二,使用strcpy。例如:  
   
  CString   theString(   "This   is   a   test"   );  
  LPTSTR   lpsz   =   new   TCHAR[theString.GetLength()+1];  
  _tcscpy(lpsz,   theString);   需要说明的是,strcpy(或可UdUnicode/MBCS的_tcscpy)的第二个参数?  const   wchar_t*   (Unicode)或const   char*   (ANSI)Q系l编译器会自动对其q行转换? 
   
  Ҏ三,使用CString::GetBuffer。例如:  
   
  CString   s(_T("This   is   a   test   "));  
  LPTSTR   p   =   s.GetBuffer();  
  //   在这里添加用p的代? 
  if(p   !=   NULL)   *p   =   _T('\0');  
  s.ReleaseBuffer();   //   使用完后及时释放Q以便能使用其它的CString成员函数  


乔栋 2007-08-03 17:05 发表评论
]]>
socket 初始?/title><link>http://www.shnenglu.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.shnenglu.com/qiaodong/archive/2007/07/22/28582.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/28582.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2007/07/22/28582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/28582.html</wfw:commentRss><trackback:ping>http://www.shnenglu.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.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">  WORD   wVersionRequested   </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   MAKEWORD(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,   </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);       <br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>  WSADATA   wsaData;     <br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">   err   </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   WSAStartup(wVersionRequested,   </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">wsaData);     <br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">   (err   </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">   </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)     <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.shnenglu.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.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>  </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.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_179_205_Open_Text><span style="COLOR: #000000">{   <br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  WSACleanup();   <br></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>  }</span></span><span style="COLOR: #000000">  </span></div> <img src ="http://www.shnenglu.com/qiaodong/aggbug/28582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2007-07-22 20:56 <a href="http://www.shnenglu.com/qiaodong/archive/2007/07/22/28582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 字段详解http://www.shnenglu.com/qiaodong/archive/2007/07/19/28355.html乔栋乔栋Thu, 19 Jul 2007 06:42:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/07/19/28355.htmlhttp://www.shnenglu.com/qiaodong/comments/28355.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/07/19/28355.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/28355.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/28355.htmlMySQL支持大量的列cdQ它可以被分?c:数字cd、日期和旉cd以及字符?字符)cd。本节首先给出可用类型的一个概qͼq且ȝ每个列类型的存储需求,然后提供每个cM的类型性质的更详细的描q。概q有意简化,更详l的说明应该考虑到有关特定列cd的附加信息,例如你能为其指定值的允许格式?

由MySQL支持的列cd列在下面。下列代码字母用于描qCQ?

M
指出最大的昄寸。最大的合法的显C尺寸是 255 ?
D
适用于Q点类型ƈ且指随在十进制小数点后的数码的数量。最大可能的值是30Q但是应该不大于M-2?
Ҏ?“[”?#8220;]”)指出可选的cd修饰W的部分?

注意Q如果你指定一个了为ZEROFILLQMySQLؓ该列自动地增加UNSIGNED属性?

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很的整数。有W号的范围是-128?27Q无W号的范围是0?55?


SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有W号的范围是-32768?2767Q无W号的范围是0?5535?

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中{大整数。有W号的范围是-8388608?388607Q无W号的范围是0?6777215?

INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大整数。有W号的范围是-2147483648?147483647Q无W号的范围是0?294967295?

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
q是INT的一个同义词?

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

一个大整数。有W号的范围是-9223372036854775808?223372036854775807Q无W号的范围是0?

18446744073709551615。注意,所有算术运用有符LBIGINT或DOUBLE值完成,因此你不应该使用大于9223372036854775807Q?3?的有W号大整敎ͼ除了位函敎ͼ注意Q当两个参数是INTEGER值时Q???用BIGINTq算Q这意味着如果你乘2个大整数(或来自于q回整数的函?Q如果结果大?223372036854775807Q你可以得到意外的结果。一个QҎ字,不能是无W号的,对一个单_ֺ点敎ͼ其精度可以是<=24Q对一个双_ֺ点敎ͼ是在25 ?3之间Q这些类型如FLOAT和DOUBLEcd马上在下面描q。FLOAT(X)有对应的FLOAT和DOUBLE相同的范_但是昄寸和小C数是未定义的。在MySQL3.23中,q是一个真正的点倹{在更早的MySQL版本中,FLOAT(precision)L?位小数。该句法ZODBC兼容性而提供?

FLOAT[(M,D)] [ZEROFILL]
一个小(单精?点数字。不能无W号。允许的值是-3.402823466E+38?1.175494351E-38Q? ?.175494351E-38?.402823466E+38。M是显C宽度而D是小数的位数。没有参数的FLOAT或有<24 的一个参数表CZ个单_֯点数字?

DOUBLE[(M,D)] [ZEROFILL]
一个正常大?双精?点数字。不能无W号。允许的值是-1.7976931348623157E+308?2.2250738585072014E-308?0?.2250738585072014E-308?.7976931348623157E+308。M是显C宽度而D是小C数。没有一个参数的DOUBLE或FLOAT(X)Q?5 < = X < = 53Q代表一个双_֯点数字?

DOUBLE PRECISION[(M,D)] [ZEROFILL]


REAL[(M,D)] [ZEROFILL]
q些是DOUBLE同义词?

DECIMAL[(M[,D])] [ZEROFILL]
一个未压羃(unpack)的QҎ字。不能无W号。行为如同一个CHAR列:“未压~?#8221;意味着数字作ؓ一个字W串被存储,值的每一位用一个字W。小数点Qƈ且对于负敎ͼ“-”W号不在M中计。如果D?Q值将没有数Ҏ数部分。DECIMAL值的最大范围与DOUBLE相同Q但是对一个给定的DECIMAL列,实际的范围可以通过M和D的选择被限制。如果D被省略,它被讄?。如果M被省掉,它被讄?0。注意,在MySQL3.22里,M参数包括W号和小数点?

NUMERIC(M,D) [ZEROFILL]
q是DECIMAL的一个同义词?

DATE
一个日期。支持的范围?1000-01-01'?9999-12-31'。MySQL?YYYY-MM-DD'格式来显CDATE|但是允许你用字W串或数字把DlDATE列?

DATETIME
一个日期和旉l合。支持的范围?1000-01-01 00:00:00'?9999-12-31 23:59:59'。MySQL?YYYY-MM-DD HH:MM:SS'格式来显CDATETIME|但是允许你用字W串或数字把DlDATETIME的列?

TIMESTAMP[(M)]
一个时间戳记。范围是'1970-01-01 00:00:00'?037q的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显CTIMESTAMP|取决于是否M?4Q或省略)?2??Q但是允怽使用字符串或数字把DlTIMESTAMP列。一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和旉是有用的Q因为如果你不自q它赋|它自动地被设|ؓ最q操作的日期和时间。你以可以通过赋给它一个NULLD|它为当前的日期和时间?
TIME
一个时间。范围是'-838:59:59'?838:59:59'。MySQL?HH:MM:SS'格式来显CTIME|但是允许你用字W串或数字把DlTIME列?

YEAR[(2|4)]
一??位数字格式的q?~省??。允许的值是1901?155Q和0000Q?位年格式Q,如果你?位,1970-2069( 70-69)。MySQL以YYYY格式来显CYEAR|但是允许你把使用字符串或数字DlYEAR列。(YEARcd在MySQL3.22中是新类型。)

CHAR(M) [BINARY]
一个定长字W串Q当存储ӞL是用I格填满双到指定的长度。M的范围是1 ?255个字W。当D索时Q空格尾部被删除。CHAR值根据缺省字W集以大写不区分的方式排序和比较,除非l出BINARY关键词。NATIONAL CHARQ短形式NCHAR)是ANSI SQL的方式来定义CHAR列应该用缺省字W集。这是MySQL的缺省。CHAR是CHARACTER的一个羃写?

[NATIONAL] VARCHAR(M) [BINARY]
一个变长字W串。注意:当D存储ӞN的空D删除(q不同于ANSI SQL规范)。M的范围是1 ?255个字W?VARCHAR值根据缺省字W集以大写不区分的方式排序和比较,除非l出BINARY关键词倹{?VARCHAR是CHARACTER VARYING一个羃写?

TINYBLOB

TINYTEXT
一个BLOB或TEXT列,最大长度ؓ255(2^8-1)个字W?
BLOB


TEXT
一个BLOB或TEXT列,最大长度ؓ65535(2^16-1)个字W?

MEDIUMBLOB

MEDIUMTEXT
一个BLOB或TEXT列,最大长度ؓ16777215(2^24-1)个字W?
LONGBLOB

LONGTEXT
一个BLOB或TEXT列,最大长度ؓ4294967295(2^32-1)个字W?

ENUM('value1','value2',...)
枚D。一个仅有一个值的字符串对象,q个值式选自与值列?value1'?value2', ...,或NULL。一个ENUM最多能?5535不同的倹{?

SET('value1','value2',...)
一个集合。能有零个或多个值的一个字W串对象Q其中每一个必M值列?value1', 'value2', ...选出。一个SET最多能?4个成员?/span>

乔栋 2007-07-19 14:42 发表评论
]]>
C E序设计l典书籍http://www.shnenglu.com/qiaodong/archive/2007/06/07/25706.html乔栋乔栋Thu, 07 Jun 2007 01:56:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/06/07/25706.htmlhttp://www.shnenglu.com/qiaodong/comments/25706.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/06/07/25706.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/25706.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/25706.html
荣耀QCE序设计之四书五l?
来自:bookread
此书架对287人里?span id=pp>208人有?
对你 有用 无用
 
CE序设计教程 
Q美QH.M.Deitel{著 薛万鹏等?/ 2000q??/ 机械工业出版C?/ 33?/ 787*1092 1/16 /

 
C陷阱与缺?/a> 
Andrew Koenig?高巍?/ 2002q?1?/ 人民邮电出版C?/ 30?/ 720*980 1/16 /

 
C语言接口与实现——创建可重用软g的技?/a> 
[]汉森 著,傅蓉{??/ 01 1 2004 12:00AM / 机械工业出版C?/ 35?/ 787*1092 1/16 /

 
C语言参考手册(原书W?版) 
Q美QSamuel P.Harbison III/Guy L.Steele Jr.?׃潘等?/ 2003q??/ 机械工业出版C?/ 39?/ 787*1092 1/16 /

 
C语言参考手册(W五版)Q英文版Q?/a> 
哈比,斯蒂??/ 06 1 2003 12:00AM / 人民邮电出版C?/ 45?/ 16开 /

 
C专家~程 
Peter Van Der Linden?徐L?/ 2002q?2?/ 人民邮电出版C?/ 40?/ 800*1000 1/16 /

 
CE序设计语言Q第2?#183;新版Q习题解{?/a> 
[]汤朵Q[]吉米拜尔 著,杨涛{??/ 01 1 2004 12:00AM / 机械工业出版C?/ 15?/ 787*1092 1/16 /

 
CE序设计语言(W??#183;新版) 
Q美Q克汉Q()里奇 著,徐宝文,李志 ?/ 01 1 2004 12:00AM / 机械工业出版C?/ 30?/ 787*1092 1/16 /

 
CE序设计语言W二版习题解{(W二?Q英文媄印版Q?/a> 
Clovis L.Tondo,Scott E.Gimpel / 2000-3-1 / 清华大学出版C?/ 12?/

 
CE序设计语言 
Brian W.Kernighan / 1997q??/ 清华大学出版C?/ 0?/ 850*1168 1/32 /






















































































































乔栋 2007-06-07 09:56 发表评论
]]>
获得控g内容http://www.shnenglu.com/qiaodong/archive/2007/06/04/25528.html乔栋乔栋Mon, 04 Jun 2007 15:18:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/06/04/25528.htmlhttp://www.shnenglu.com/qiaodong/comments/25528.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/06/04/25528.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/25528.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/25528.htmlEdit<输入?/span>>   
    
  
1.(CWnd   *)GetDlgItem(IDC_EDIT_1))->SetWindowText("0");   
    
  
2.int   n=GetDlgItemInt(IDC_EDIT_1,   NULL,true);     
    
  
3.(CWnd   *)GetDlgItem(IDC_EDIT_1))->GetWindowText(cs);   
    
  Combox
<下拉?/span>>   
    
  
1.((CComboBox   *)GetDlgItem(IDC_COMB_1))->SetCurSel(1);   
    
  
2.   GetDlgItemText(IDC_COMB_1,   cs,   50);   
    
  
3.int   i=m_COM.GetCurSel();     
      m_COM.GetLBText(i,cs);     
    
  
4.m_COM.AddString(cs);m_COM.DeleteString(0);m_COM.SetCurSel(0);   
      
    
      
    
  Radio
<单选按?/span>>     
  
1.((CButton   *)GetDlgItem(IDC_RADIO_1))->SetCheck(true);   
    
  
2.if   (((CButton   *)GetDlgItem(IDC_RADIO_1))->GetCheck())   {}   
    
  
3.((CButton   *)GetDlgItem(IDC_RADIO_1))->SetCheck(true);   
      
    
      
    
  List   Control
<列表>   
    
  
1.m_list2.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);       m_list2.InsertColumn(0,"TagID",LVCFMT_LEFT,60);   
      m_list2.InsertColumn(
1,"TagType",LVCFMT_CENTER,120);   
      m_list2.InsertItem(i,cs1);     
      m_list2.SetItemText(i,
1,cs2);   
    
  
2.if(m_list2.GetSelectedItem()!=-1)   
        
{   
            
int   i=m_list2.GetSelectionMark();   
            cs
=m_list2.GetItemText(i,0);   
        }
     
    
  
3.int   i=m_List2.GetItemCount();     
    
  
4.m_list2.DeleteItem(i);m_list2.DeleteAllItems();   
      
    
      
    
  ListBox
<列表?/span>>   
    
  
1.((CListBox   *)listBox)->InsertString(0,   str);   
      
    
      
    
  Button
<按钮>   
    
  
1.((CWnd   *)GetDlgItem(IDC_BUTTON_1))->ShowWindow(true);   
    
  
2.((CWnd   *)GetDlgItem(IDC_BUTTON_1))->EnableWindow(true);   
      


乔栋 2007-06-04 23:18 发表评论
]]>
xppȝ下SQL安装提示文g挂v的解x?/title><link>http://www.shnenglu.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.shnenglu.com/qiaodong/archive/2007/05/28/24970.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/24970.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2007/05/28/24970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/24970.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/24970.html</trackback:ping><description><![CDATA[<span id="jdfwcfp" class=t18>  <p>在Windwos Xp?要安装Sql或sp补丁以及其他软g,其是微软自q软g的时?pȝ提示之前有挂L安装操作Q要求重启,q里往往重启无用Q解军_法:</p> <p>到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager</p> <p>删除PendingFileRenameOperations<br>再重新安装就可以?</p> </span> <img src ="http://www.shnenglu.com/qiaodong/aggbug/24970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2007-05-28 12:26 <a href="http://www.shnenglu.com/qiaodong/archive/2007/05/28/24970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>M清单http://www.shnenglu.com/qiaodong/archive/2007/05/23/24679.html乔栋乔栋Wed, 23 May 2007 02:45:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/05/23/24679.htmlhttp://www.shnenglu.com/qiaodong/comments/24679.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/05/23/24679.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/24679.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/24679.html正在看霜冷长治I觉得很好看?

乔栋 2007-05-23 10:45 发表评论
]]>
资源打成DLLhttp://www.shnenglu.com/qiaodong/archive/2007/04/24/22712.html乔栋乔栋Tue, 24 Apr 2007 04:00:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/04/24/22712.htmlhttp://www.shnenglu.com/qiaodong/comments/22712.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/04/24/22712.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/22712.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/22712.html阅读全文

乔栋 2007-04-24 12:00 发表评论
]]>
VC中动态添加控?/title><link>http://www.shnenglu.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.shnenglu.com/qiaodong/archive/2007/04/23/22640.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/22640.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2007/04/23/22640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/22640.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/22640.html</trackback:ping><description><![CDATA[<strong>动态控件是指在需要时由Create()创徏的控Ӟq与预先在对话框中放|的控g是不同的?<br><br>  一、创建动态控Ӟ<br><br>  Z对照Q我们先来看一下静态控件的创徏?br><br>  攄静态控件时必须先徏立一个容器,一般是对话框,q时我们在对话框~辑H口中,从工L口中拖出所需控g攑֜对话框中卛_Q再适当修改控gIDQ设|控件属性,一个静态控件就创徏好了Q当对话框被昄Ӟ其上的控件也会显C?br><br>  静态控件不需要调用Create()函数来创建?br><br>  而创建动态控件有很大不同Q以下以按钮ZQ看一下动态控件的创徏q程Q?br><br>  1.建立控gIDP<br><br>  IDh控g的标识,创徏控g前必d为它讄一个ID受?br><br>  打开资源中的“String Table”Q在I白行上双击鼠标Q这时会弹出一个ID属性对话框Q在其中的ID~辑框中输入IDQ如QIDC_MYBUTTONQ在Caption中输入控件标题或注解Q注QCaption框不能ؓI,为空会导致创建失败)Q这里我输入的是按钮上要昄的文?-动态按钮?br><br>  2.建立控g对象Q?br><br>  不同U类的控件应创徏不同的类对象Q?br><br>  ·按钮控g CButton Q包括普通按钮、单选按钮和复选按钮)<br>  ·~辑控g CEdit<br>  ·静态文本控?CStatic<br>  ·标签控g CTabCtrl<br>  ·旋{控g CSpinButtonCtrl<br>  ·滑标控g CSliderCtrl<br>  ·多信息编辑控?CRichEditCtrl<br>  ·q度条控?CProgressCtrl<br>  ·滚动条控?CSrcollBar<br>  ·l合框控?CComboBox<br>  ·列表框控?CListBox<br>  ·囑փ列表控g CImageCtrl<br>  ·树状控g CTreeCtrl<br>  ·动画控g CAnimateCtrl<br><br>  本例中我们创Z个CButtoncȝ普通按钮。注意不能直接定义CButton对象Q如QCButton m_MyBut;q种定义只能用来l静态控件定义控制变量,不能用于动态控件?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>  然后用CButtoncȝCreate()函数创徏Q该函数原型如下Q?br><br> <table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tbody> <tr> <td>BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );</td> </tr> </tbody> </table> <br>  lpszCaption是按钮上昄的文本;dwStyle指定按钮风格Q可以是按钮风格与窗口风格的l合Q取值有Q?br><br>  H口风格Q?br><br>  ·WS_CHILD 子窗口,必须?br>  ·WS_VISIBLE H口可见Q一般都?br>  ·WS_DISABLED 用H口Q创建初始状态ؓ灰色不可用的按钮时?br>  ·WS_TABSTOP 可用Tab键选择<br>  ·WS_GROUP 成组Q用于成l的单选按钮中的第一个按?br><br>  按钮风格Q?br><br>  ·BS_PUSHBUTTON 下压式按钮,也即普通按?br>  ·BS_AUTORADIOBUTTON 含自动选中状态的单选按?br>  ·BS_RADIOBUTTON 单选按钮,不常?br>  ·BS_AUTOCHECKBOX 含自动选中状态的复选按?br>  ·BS_CHECKBOX 复选按钮,不常?br>  ·BS_AUTO3STATE 含自动选中状态的三态复选按?br>  ·BS_3STATE 三态复选按钮,不常?br> <br>  以上风格指定了创建的按钮cdQ不能同时用,但必L其一?br><br>  ·BS_BITMAP 按钮上将昄位图<br>  ·BS_DEFPUSHBUTTON 讄为默认按钮,只用于下压式按钮Q一个对话框中只能指定一个默认按?br>  ·rect指定按钮的大和位置Q?br>  ·pParentWnd指示拥有按钮的父H口Q不能ؓNULLQ?br>  ·nID指定与按钮关联的IDP用上一步创建的ID受?br><br>  不同控gcȝCreate()函数略有不同Q可参考相兌料?br><br>  例:p_MyBut->Create( "动态按?, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20,10,80,40), this, IDC_MYBUTTON );<br>q样Q我们就在当前对话框中的(20,10)处创Z?0Q高30Q按钮文字ؓ“动态按?#8221;的下压式按钮?br><br>  Z使创E更方便易用Q我定义了如下函敎ͼ<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->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 )是从字符串表中读取按钮文本,q样在创建按钮IDӞ应该把文本设|好Q参数nStyle为除必须风格外的额外风格?br><br>  以下Q我调用该函数创Z个按钮,q指定第一个按钮ؓ默认按钮Q按钮的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>Q?br><br>  动态控件的响应函数不能用ClassWizarddQ只能手动添加。仍以上面的按钮ZQ我们制作按钮的单击响应函数?br><br>  1.在MESSAGE_MAP中添加响应函敎ͼ<br><br>  MESSAGE_MAP表中定义了消息响应函敎ͼ其格式ؓQ消息名(ID,函数?Q当我们用ClassWizardd函数Ӟ会自动添加在AFX_MSG_MAP括v的区间内Q如Q?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>  手工d时不要添加到AFX_MSG_MAP区间内,以防ClassWizard不能正常工作Q如Q?<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是按钮单L息?br><br>  2.在头文g中添加函数定义:<br><br>  用ClassWizardd函数Ӟ会在头文件的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>  我们模仿q种形式Q只是把函数定义d到AFX_MSG区间外就行了Q?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.~写消息响应函数Q?br><br>  以上是把消息和函数关联v来了Q具体在单击按钮后应做的工作在函C完成Q?<br><br> <table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tbody> <tr> <td>void CTextEditorView::OnMybut1()<br>{<br>MessageBox( "哈!你单M动态按钮? );<br>}<br>void CTextEditorView::OnMybut2()<br>{<br>……<br>}<br>void CTextEditorView::OnMybut3()<br>{<br>……<br>} </td> </tr> </tbody> </table> <br>  除了按钮的响应函数外Q你q可以用上面获得的指针访问按钮,如:<br><br>  修改按钮的大和位置Qp_MyBut[0]->MoveWindow(……);<br><br>  修改按钮文本Qp_MyBut[0]->SetWindowText(……);<br><br>  昄/隐藏按钮Qp_MyBut[0]->ShowWindow(……);{等?br>三、回收资源:<br><br>  ׃动态控件对象是由new生成的,它不会被E序自动释放Q所以需手工释放。在控g不再使用时可以删除它Q?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>  以上是按钮控g动态生成的Ҏ。下面,再看一下单选按钮的动态生成问题?四、实例:单选按钮组的动态生?br><br>  单选按钮也属于CButtonc,但由于单选按钮L成组使用的,所以它在制作和使用上与普通按钮有一定区别?br><br>  假设有三个单选按钮组成一l,初始ӞW一个单选按钮处于选中状态?br><br>  我们先来看静态制作方法:在对话框中放|三个单选按钮,讄属性如下:<br><br>  ·Radio1属性:Visible、Group、Tab stop、Auto<br>  ·Radio2属性:Visible、Tab stop、Auto<br>  ·Radio3属性:Visible、Tab stop、Auto<br><br>  q样的属性设|就把三个单选按钮分成了一l,它们一ơ只能有一个被选中Q若对话框中q有其它成组的单选按钮,使用时也会互不干扰。但q时q没有ɽW一个按钮处于选中状态?br><br>  接着qClassWizardl单选按钮添加变量,q里只需为第一个单选按钮添加变量即可。设变量名ؓm_RadioQ类型选ؓint型。在构造函CClassWizard把m_Radio的D|ؓ-1Q我们把它改?Q这样在q行E序时可以看到第一个单选按钮处于选中状态了。之后,q应该用ClassWizardZ个单选按钮添加单d应函敎ͼ在里面修改m_Radio的值对应三个单选按钮就可以了?br><br>  以上是通常制作单选按钮组的办法,现我们欲改ؓ动态生成,主要要解x钮分l和单击控制问题。以下ؓ制作步骤Q?br><br>  1.定义三个单选按钮的IDQ?br><br>  打开资源中的“String Table”Q在其中d三个ID|<br><br>  ·W一个:ID为IDC_MYRADIO1QCaption为单?<br>  ·W二个:ID为IDC_MYRADIO2QCaption为单?<br>  ·W三个:ID为IDC_MYRADIO3QCaption为单?<br><br>  其中Caption为按钮上要显C的文字Q可Ҏ需要设|?br><br>  2.用CButtoncȝCreate()函数生成三个单选按钮:<br><br>  为方便v见,先定义一个函数生成单选按钮: <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->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”中读取按钮文本,Create()函数中设定了单选按钮必ȝ属性,其中包括了Visible、Tab stop、Auto属性?br><br>  参数nID为单选按钮IDPrect为单选按钮尺寸,nStyle为除必要属性外的其它属性。返回gؓ指向新徏按钮的指针?br><br>  有了q个函数后,创徏单选按钮组时只要依ơ调用该函数卛_Q其中单选按钮组的第一个单选按钮必L定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.定义单选按钮组的控制变量,讄W一个单选按钮ؓ选中状态:<br><br>  q里不能用ClassWizardd变量Q也不要在DoDataExchange()中添加控制变量,因ؓ动态控件一开始ƈ不存在,在DoDataExchange()中添加控制变量会造成q行错误。这里我们只需在头文g中随意定义一个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>  在构造函C讄其初gؓ0Qm_SelRadio = 0;<br><br>  在上面的创徏按钮的语句中Q用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]->SetCheck(1); //讄W一个单选ؓ选中状?</td> </tr> </tbody> </table> <br>  在SetCheck()函数中,参数?表示讄为选中状态,?表示未选中状态?br><br>  4.d鼠标单击响应函数Q?br><br>  鼠标单击某单选按钮后Q其状态已l能自动改变Q这里我们还需修改控制变量m_SelRadio的|以便跟踪选中的单选按钮?br><br>  首先在MESSAGE_MAP中把鼠标单击消息与响应函数联pv来: <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) //单选按?<br>ON_BN_CLICKED(IDC_MYRADIO2, OnMyRadio2) //单选按?<br>ON_BN_CLICKED(IDC_MYRADIO3, OnMyRadio3) //单选按?<br>END_MESSAGE_MAP() </td> </tr> </tbody> </table> <br>  然后在头文g的MESSAGE_MAP中定义单d敎ͼ<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(); //单选按?<br>afx_msg void OnMyRadio2(); //单选按?<br>afx_msg void OnMyRadio3(); //单选按?<br>DECLARE_MESSAGE_MAP() </td> </tr> </tbody> </table> <br>  q里注意不要把函数加在AFX_MSG区间内,以防影响ClassWizard的用?br><br>  定义具体的响应函敎ͼq里是用手工加入的,不是用ClassWizard加入的)Q?br><br> <table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tbody> <tr> <td>//单击单选按? void CTextEditorView::OnMyRadio1() <br>{<br>m_SelRadio=0;<br>} <br><br>//单击单选按? void CTextEditorView::OnMyRadio2() <br>{<br>m_SelRadio=1;<br>} <br><br>//单击单选按? void CTextEditorView::OnMyRadio3() <br>{<br>m_SelRadio=2;<br>}</td> </tr> </tbody> </table> <br>  5.回收资源Q?br><br>  在析构函CQ回收创建的单选按钮(也可以在不用单选按钮时立即回收Q:<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<3; i++)<br>{<br>if(p_MyRadio[i])<br>delete p_MyRadio[i];<br>}<br>}</td> </tr> </tbody> </table> <br>  以上是动态控件的生成和响应方法,各种不同的控件做法略有不同,但思\和步骤都是类似的Q希望以上实例对你能够有所帮助?<br><br><br><br><br> <img src ="http://www.shnenglu.com/qiaodong/aggbug/22640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2007-04-23 14:44 <a href="http://www.shnenglu.com/qiaodong/archive/2007/04/23/22640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用ITaskbarList接口操纵Windowsd栏程序按钮的状?http://www.shnenglu.com/qiaodong/archive/2007/04/22/22606.html乔栋乔栋Sun, 22 Apr 2007 14:45:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/04/22/22606.htmlhttp://www.shnenglu.com/qiaodong/comments/22606.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/04/22/22606.html#Feedback2http://www.shnenglu.com/qiaodong/comments/commentRss/22606.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/22606.htmlclass CXDlg : public CDialog
{
    ......
    public:
        typedef ITaskbarList *LPITaskbarList;
        LPITaskbarList pTaskbar;
    ......
};

Step 2: 初始?d栏COM 对象

BOOL CXDlg::OnInitDialog()
{
    ......
    // Initializes the Component Object Model(COM)
    CoInitialize(0);
    // We call below function since we only need to create one object
    CoCreateInstance(
        CLSID_TaskbarList,
        0,
        CLSCTX_INPROC_SERVER,
        IID_ITaskbarList,
        (void**)&pTaskbar
    );
    // Below function will initialize the taskbar list object
    pTaskbar->HrInit();
    ......
}

Step 3: 使用Q删?昄 d栏程序按?/u>

void CXDlg::OnBnClickedButtonHide()
{
    pTaskbar->DeleteTab(this->GetSafeHwnd());
}

void CXDlg::OnBnClickedButtonShow()
{
    pTaskbar->AddTab(this->GetSafeHwnd());
}






乔栋 2007-04-22 22:45 发表评论
]]>
޹㽶þþþþ| ŷƷרþ| ŷþһwwwwww.| ŷղþ99| 99þҹɫƷվ| ɫվwwwþþ| þþþùһ| ƷŮٸaѾþ| ŷ޹Ʒþø| Ʒþþþ龫Ʒ| 9þ9þþƷ| þҹɫƷŷ| ۺϾþþƷ| þþþƷձһ | ŷպĻþ| ŷһþþƷ| Ʒ˾þþþӰԺ | Сڵþþþþ| þŮcc98cm| þĻԴվ| ƷȾþþø| þúݺݸ߳޾Ʒ| 99þҹɫƷվ| ŷһþþƷ| պľþ| þþɫۺϾɫ99| Ʒ99þþþþլ| ŷ㽶þۺվ| þþþþþۺձ | ƷþþӰ㽶 | þþƷž޾Ʒ| ҹþþþþþþþ| ޳avƬþ| ɫþþþSWAGƷ| þþþþüƷþþ| þù| ޹Ʒ˾þ | Ʒþøһ| þþƷAV㽶| þþþavר| ˮϵþþƷ|