首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > ATL窗口添加功能的5种方法
【标  题】:ATL窗口添加功能的5种方法
【关键字】:ATL
【来  源】:http://www.cppblog.com/wlwlxj/archive/2006/01/02/2358.html

ATL窗口添加功能的5种方法

C++鍗氬 - 涓囨槦鏄?- ATL绐楀彛娣诲姞鍔熻兘鐨?绉嶆柟娉?/title> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="keywords" content="鍗氬 blog C++ cppblog"> <link id="MainStyle" type="text/css" rel="stylesheet" href="/Skins/WinXPBlue/style.css"></link> <link id="RSSLink" title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cppblog.com/wlwlxj/rss.aspx"></link> </HEAD> <body> <form name="Form1" method="post" action="2358.html" id="Form1"> <input type="hidden" name="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATE" value="" /> <script language="javascript" type="text/javascript"> <!-- function __doPostBack(eventTarget, eventArgument) { var theform; if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) { theform = document.Form1; } else { theform = document.forms["Form1"]; } theform.__EVENTTARGET.value = eventTarget.split("$").join(":"); theform.__EVENTARGUMENT.value = eventArgument; theform.submit(); } // --> </script> <script language=JavaScript> function ctlent() { if(event.ctrlKey && event.keyCode == 13) { try { TempSave('AnonymousPostComment1_tbComment'); } catch(ex) { } finally { __doPostBack('AnonymousPostComment1:btnSubmit','') } } }</script> <div id="top"> <div> <table> <tr> <td class="HeaderTitles"> <h1 class="HeaderTitle"><a id="Header1_HeaderTitle" class="HeaderMainTitle" href="http://www.cppblog.com/wlwlxj/">涓囨槦鏄?/a></h1> <p id="tagline">澶╂墠锛燂紵涓嶆槸锛屾槸鍕ゅ...</p> </td> </tr> </table> </div> <div class="HeaderBar"> <table id="HeaderBar" class="HeaderBar"> <tr> <td class="HeaderBarTab" nowrap> <img id="Header1_StartButton" src="../../../../../Skins/WinXPBlue/Images/BlueTabRight.gif" alt="" align="AbsMiddle" border="0" /> <a id="Header1_MyLinks1_HomeLink" href="http://www.cppblog.com/">C++鍗氬</a><img id="Header1_MyLinks1_Divider1" src="../../../../../Skins/WinXPBlue/Images/divider.gif" alt="" align="AbsMiddle" border="0" /> <a id="Header1_MyLinks1_MyHomeLink" href="http://www.cppblog.com/wlwlxj/">棣栭〉</a><img id="Header1_MyLinks1_Image1" src="../../../../../Skins/WinXPBlue/Images/divider.gif" alt="" align="AbsMiddle" border="0" /> <a id="Header1_MyLinks1_NewPostLink" href="http://www.cppblog.com/wlwlxj/admin/EditPosts.aspx?opt=1">鏂伴殢绗?/a><img id="Header1_MyLinks1_Image2" src="../../../../../Skins/WinXPBlue/Images/divider.gif" alt="" align="AbsMiddle" border="0" /> <a id="Header1_MyLinks1_ContactLink" accesskey="9" href="http://www.cppblog.com/wlwlxj/contact.aspx">鑱旂郴</a><img id="Header1_MyLinks1_Divider2" src="../../../../../Skins/WinXPBlue/Images/divider.gif" alt="" align="AbsMiddle" border="0" /> <a id="Header1_MyLinks1_Syndication" href="http://www.cppblog.com/wlwlxj/Rss.aspx" target="_blank">鑱氬悎</a><img id="Header1_MyLinks1_Divider3" src="../../../../../Skins/WinXPBlue/Images/divider.gif" alt="" align="AbsMiddle" border="0" /> <!--<a id="Header1_MyLinks1_Syndication2" href="../../../../../Atom.aspx" target="_blank">Syndicate this Site (Atom)</a><img id="Header1_MyLinks1_Divider6" src="../../../../../Skins/WinXPBlue/Images/divider.gif" alt="" align="AbsMiddle" border="0" /> <a id="Header1_MyLinks1_XMLLink" class="XMLLink" href="http://www.cppblog.com/wlwlxj/Rss.aspx" target="_blank"></a>--> <a id="Header1_MyLinks1_Admin" href="http://www.cppblog.com/wlwlxj/admin/default.aspx">绠$悊</a><img id="Header1_MyLinks1_Divider5" src="../../../../../Skins/WinXPBlue/Images/divider.gif" alt="" align="AbsMiddle" border="0" /> </td> <td class="HeaderBarTabBack" nowrap width="100%"> <div class="BlogStatsBar"> <table class="BlogStatsBar"> <tr> <td width="100%"> </td> <td class="BlogStatsBar" nowrap>   9 Posts :: 0 Stories :: 31 Comments :: 0 Trackbacks </td> </tr> </table> </div> </td> </tr> </table> </div> </div> <div id="leftmenu" style="display:none"> <H3>鐣欒█绨?/H3> <ul> <li> <a id="SingleColumn1__fe521b4e30776bc7_lnkMessages" href="http://www.cppblog.com/wlwlxj/Contact.aspx?id=1">缁欐垜鐣欒█</a> <li> <a id="SingleColumn1__fe521b4e30776bc7_lnkPublicMsgView" href="http://www.cppblog.com/wlwlxj/default.aspx?opt=msg">鏌ョ湅鍏紑鐣欒█</a> <li> <a id="SingleColumn1__fe521b4e30776bc7_lnkPrivateMsgView" href="http://www.cppblog.com/wlwlxj/admin/MyMessages.aspx">鏌ョ湅绉佷汉鐣欒█</a> </li> </ul> <h3>闅忕瑪鍒嗙被</h3> <ul> <li><a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl1_RssLink" title="Subscribe to ATL&nbsp;(2)" href="http://www.cppblog.com/wlwlxj/category/610.html/rss"><img border='0' src='/Skins/WinXPBlue/Images/xml.gif' align='center'></a> <a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl1_Link" href="http://www.cppblog.com/wlwlxj/category/610.html">ATL (2)</a></li> <li><a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl2_RssLink" title="Subscribe to WTL&nbsp;(1)" href="http://www.cppblog.com/wlwlxj/category/591.html/rss"><img border='0' src='/Skins/WinXPBlue/Images/xml.gif' align='center'></a> <a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl2_Link" href="http://www.cppblog.com/wlwlxj/category/591.html">WTL (1)</a></li> <li><a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl3_RssLink" title="Subscribe to 涔变竷鍏碂&nbsp;(5)" href="http://www.cppblog.com/wlwlxj/category/652.html/rss"><img border='0' src='/Skins/WinXPBlue/Images/xml.gif' align='center'></a> <a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl3_Link" href="http://www.cppblog.com/wlwlxj/category/652.html">涔变竷鍏碂 (5)</a></li> <li><a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl4_RssLink" title="Subscribe to 灏忎綔鍝?amp;nbsp;(1)" href="http://www.cppblog.com/wlwlxj/category/611.html/rss"><img border='0' src='/Skins/WinXPBlue/Images/xml.gif' align='center'></a> <a id="SingleColumn1_Categories_CatList__ctl0_LinkList__ctl4_Link" href="http://www.cppblog.com/wlwlxj/category/611.html">灏忎綔鍝?nbsp;(1)</a></li> </ul> <h3>闅忕瑪妗f</h3> <ul> <li> <a id="SingleColumn1_Categories_CatList__ctl1_LinkList__ctl1_Link" href="http://www.cppblog.com/wlwlxj/archive/2006/01.html">2006骞?鏈?(1)</a></li> <li> <a id="SingleColumn1_Categories_CatList__ctl1_LinkList__ctl2_Link" href="http://www.cppblog.com/wlwlxj/archive/2005/12.html">2005骞?2鏈?(8)</a></li> </ul> <h3>鏂囩珷妗f</h3> <ul> </ul> <h3>鐩稿唽</h3> <ul> <li> <a id="SingleColumn1_Categories_CatList__ctl3_LinkList__ctl1_Link" href="http://www.cppblog.com/wlwlxj/gallery/730.html">BlogImg (1)</a></li> </ul> <script language="JavaScript"> function SearchGoogle(key,evt,site) { if(evt.keyCode==13 || evt.keyCode==0) { key.focus(); var keystr = encodeURIComponent(key.value); //url ="http://www.google.com/custom?domains="+site+"&q="; //url += keystr+"&sitesearch="+site+"&client=pub-4210569241504288&forid=1&ie=UTF-8&oe=GB2312&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23EEEEFF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AEEEEFF%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A28%3BLW%3A100%3BL%3Ahttp%3A%2F%2Fwww.cnblogs.com%2Fimages%2Fsearchlogo.gif%3BS%3Ahttp%3A%2F%2Fwww.cnblogs.com%3BLP%3A1%3BFORID%3A1%3B&hl=zh-CN"; url = "http://www.google.com/search?q="; url = url+keystr; url += "&ie=UTF-8&oe=GB2312&hl=zh-CN&domains=cppblog.com&sitesearch=http://www.cppblog.com/wlwlxj/"; window.location=url; return false; } } </script> <H3>鎼滅储</H3> <ul> <li> <li><input style="WIDTH: 130px" type="text" name="q" id="q" onkeydown="return SearchGoogle(document.getElementById('q'),event,'http://www.cppblog.com/wlwlxj/')"> <input onclick="SearchGoogle(document.getElementById('q'),event,'http://www.cppblog.com/wlwlxj/')" type="button" value="鎼滅储" name="sa"> </li> </ul> <h3>鏈鏂拌瘎璁? <a id="SingleColumn1__febd1daec7ce7be3_RSSHyperlink1" href="http://www.cppblog.com/wlwlxj/CommentsRSS.aspx"><img src="/images/xml.gif" alt="" border="0" /></a></h3> <div class="RecentComment"> <ul> <li style="word-break:break-all"> <a id="SingleColumn1__febd1daec7ce7be3_CommentList__ctl1_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2006/01/12/1905.html#2601">1.聽re: ATL绐楀彛缁ф壙瀹炵幇鏈哄埗</a> </li> <li style="word-break:break-all"> 鍏跺疄杩欎釜鎶宸у嵆鏄痑tl internal閲屼粙缁嶇殑妯℃嫙鍔ㄦ佺粦瀹氾紝涔熷彨鍋歮ix-in绫汇傚ソ涔呮病鏈夌湅杩噖tl浜嗭紝鍑烘潵宸ヤ綔鍚庨兘鍙樻噿浜嗐備氦涓湅鍙?:) <br> qq-87901181 </li> <li style="text-align:right;margin-right:4px"> --benny</li> <li style="word-break:break-all"> <a id="SingleColumn1__febd1daec7ce7be3_CommentList__ctl2_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2006/01/09/1914.html#2521">2.聽re: 涓涓皬鍨嬬粯鍥剧▼搴?/a> </li> <li style="word-break:break-all"> 鑰佸﹩锛屼綘鎬庝箞鐏屼袱涓紵锛燂紵璋㈣阿鍜紒锛侊紒锛? </li> <li style="text-align:right;margin-right:4px"> --涓囪繛鏂?/li> <li style="word-break:break-all"> <a id="SingleColumn1__febd1daec7ce7be3_CommentList__ctl3_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2006/01/09/1914.html#2517">3.聽re: 涓涓皬鍨嬬粯鍥剧▼搴?/a> </li> <li style="word-break:break-all"> 璧瀪~ </li> <li style="text-align:right;margin-right:4px"> --lxj</li> <li style="word-break:break-all"> <a id="SingleColumn1__febd1daec7ce7be3_CommentList__ctl4_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2006/01/09/1914.html#2516">4.聽re: 涓涓皬鍨嬬粯鍥剧▼搴?/a> </li> <li style="word-break:break-all"> 鍛靛懙锛屾殏涓涓紒鐭ラ亾鎴戞槸璋佸悧锛熷懙鍛? </li> <li style="text-align:right;margin-right:4px"> --lxjwlw</li> <li style="word-break:break-all"> <a id="SingleColumn1__febd1daec7ce7be3_CommentList__ctl5_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2006/01/06/1914.html#2465">5.聽re: 涓涓皬鍨嬬粯鍥剧▼搴?/a> </li> <li style="word-break:break-all"> 姣曚笟浜嗕箞锛岃浣犳潵甯垜鍧愮偣浜嬫儏濡備綍锛熶綘鍦ㄥ摢閲岋紵 <br>aaa_skychen@163.com </li> <li style="text-align:right;margin-right:4px"> --ddd</li> </ul> </div> <h3>闃呰鎺掕姒?/h3> <div class="RecentComment"> <ul style="word-break:break-all"> <li> <a id="SingleColumn1__febd1984ce27830f_TopList__ctl1_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/20/1914.aspx">1.聽涓涓皬鍨嬬粯鍥剧▼搴?246)</a> </li> <li> <a id="SingleColumn1__febd1984ce27830f_TopList__ctl2_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/25/2070.aspx">2.聽鎴戝績涓渶缇庣殑杞欢妗嗘灦(210)</a> </li> <li> <a id="SingleColumn1__febd1984ce27830f_TopList__ctl3_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2006/01/02/2358.aspx">3.聽ATL绐楀彛娣诲姞鍔熻兘鐨?绉嶆柟娉?114)</a> </li> <li> <a id="SingleColumn1__febd1984ce27830f_TopList__ctl4_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/20/1905.aspx">4.聽ATL绐楀彛缁ф壙瀹炵幇鏈哄埗(105)</a> </li> <li> <a id="SingleColumn1__febd1984ce27830f_TopList__ctl5_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/24/2040.aspx">5.聽VC6鍛戒护琛岀紪璇戝伐绋嬫柟娉?87)</a> </li> </ul> </div> <h3>璇勮鎺掕姒?/h3> <div class="RecentComment"> <ul style="word-break:break-all"> <li> <a id="SingleColumn1__fec9173a179306a6_TopList__ctl1_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/20/1914.aspx">1.聽涓涓皬鍨嬬粯鍥剧▼搴?12)</a> </li> <li> <a id="SingleColumn1__fec9173a179306a6_TopList__ctl2_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/25/2070.aspx">2.聽鎴戝績涓渶缇庣殑杞欢妗嗘灦(11)</a> </li> <li> <a id="SingleColumn1__fec9173a179306a6_TopList__ctl3_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/20/1905.aspx">3.聽ATL绐楀彛缁ф壙瀹炵幇鏈哄埗(6)</a> </li> <li> <a id="SingleColumn1__fec9173a179306a6_TopList__ctl4_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/24/2040.aspx">4.聽VC6鍛戒护琛岀紪璇戝伐绋嬫柟娉?1)</a> </li> <li> <a id="SingleColumn1__fec9173a179306a6_TopList__ctl5_Hyperlink1" href="http://www.cppblog.com/wlwlxj/archive/2005/12/28/2220.aspx">5.聽Web寮鍙戣呭悜妗岄潰搴旂敤寮鍙戣浆鍨嬩箣鏁版嵁缁撴瀯瀛︿範(1)</a> </li> </ul> </div> <!-- <br><br> <p align="center"> <a href="http://www.WebHost4Life.com/default.asp?refid=MarkHWagner"> <img src="http://www.WebHost4Life.com/images/banner3.gif" width="120" height="60" border="0" alt="Join WebHost4Life.com"></a> </p> --> </div> <div id="main"> <div class="post"> <div class="postTitle"> <a id="viewpost1_TitleUrl" href="http://www.cppblog.com/wlwlxj/archive/2006/01/02/2358.html">ATL绐楀彛娣诲姞鍔熻兘鐨?绉嶆柟娉?/a> </div> <P>1銆佹秷鎭槧灏勭殑閾炬帴<BR><BR>濡傛灉杩欎釜绫绘槸ATL绐楀彛绫伙紝鎴戜滑鍙互浠庤繖涓獥鍙g被娲剧敓鑷繁鐨勭被锛屽氨璞ase Class Chaining涓弿杩扮殑涓鏍枫?BR>class CBase : public CWindowImpl<CBase>  <BR>{<BR>public:<BR> BEGIN_MSG_MAP(CBase)<BR>  MESSAGE_HANDLER(WM_DESTROY, OnDestroy)<BR>  MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown)<BR>  ALT_MSG_MAP(100)<BR>  MESSAGE_HANDLER(WM_DESTROY, OnDestroy)<BR>  MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown2)<BR> END_MSG_MAP()<BR>public:<BR> CBase();<BR> virtual ~CBase();<BR> <BR> LRESULT OnDestroy(UINT, WPARAM, LPARAM, BOOL&)<BR> {<BR>  PostQuitMessage(0);<BR>  return 0;<BR> }<BR> LRESULT OnButtonDown(UINT, WPARAM, LPARAM, BOOL&)<BR> {<BR>  MessageBox("baseclass : button down\n");<BR>  return 0;<BR> }<BR> LRESULT OnButtonDown2(UINT, WPARAM, LPARAM, BOOL&)<BR> {<BR>  MessageBox("baseclass : button down2\n");<BR>  return 0;<BR> }<BR>};<BR><BR>class CDerived: public CBase<BR>{<BR> BEGIN_MSG_MAP(CDerived)<BR>  MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown)<BR>  CHAIN_MSG_MAP_ALT(CBase, 100) //閾炬帴鍒板熀绫?BR> END_MSG_MAP()<BR> <BR> LRESULT OnButtonDown(UINT, WPARAM, LPARAM, BOOL& bHandle)<BR> {<BR>  MessageBox("derivedclass : button down\n");<BR>  bHandle = FALSE; //鍐冲畾鏄惁缁х画浼犳秷鎭?BR>  return 0;<BR> }<BR>};<BR><BR>2銆佽秴绫诲寲<BR><BR>濡傛灉鎴戜滑鎯虫墿灞曚竴涓瀹氫箟鐨勭獥鍙g被锛堝鎸夌航绫绘垨鍒楄〃妗嗙被锛夌殑鍔熻兘锛屾垜浠彲浠ヨ秴绫诲寲瀹冦傚氨鏄垱寤轰竴涓熀浜庤繖涓瀹氫箟绫荤殑鏂扮被锛屽苟鍦ㄦ秷鎭槧灏勮〃涓坊鍔犳秷鎭槧灏勪互澧炲己瀹冪殑鍔熻兘銆傝繖涓湪浣跨敤MFC寮鍙戜娇鐢ㄦ渶澶氥?BR>class CBeepButton : public CWindowImpl<CBeepButton>  <BR>{<BR>public:<BR> CBeepButton();<BR> virtual ~CBeepButton();<BR> <BR> DECLARE_WND_SUPERCLASS(_T("BeepButton"), _T("Button"))<BR>  BEGIN_MSG_MAP(CBeepButton)<BR>  MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)<BR> END_MSG_MAP()</P> <P><BR> LRESULT OnLButtonDown(UINT, WPARAM, LPARAM, BOOL& bHandled)<BR> {<BR>  MessageBeep(MB_ICONASTERISK);<BR>  bHandled = FALSE; //缁х画璋冪敤鍩虹被鐨勫嚱鏁?BR>  return 0;<BR>   }<BR>};</P> <P>3銆佸瓙绫诲寲<BR><BR>鏈変簺鏃跺欙紝鎴戜滑闇瑕佹敼鍙樹竴涓凡缁忓瓨鍦ㄧ殑绐楀彛瀹炰緥鐨勮涓猴紝鑰屼笉鏄竴涓獥鍙g被鈥斺旀垨璁告垜浠璁╀竴涓璇濇涓婄殑缂栬緫妗嗗仛鐐逛粈涔堢壒鍒殑浜嬫儏銆傚湪杩欑鎯呭喌涓嬶紝鎴戜滑鍙互鍐欎竴涓柊鐨凙TL绐楀彛绫伙紝骞跺瓙绫诲寲杩欎釜宸茬粡瀛樺湪鐨勭紪杈戞銆備换浣曟湰璇ュ彂閫佸埌杩欎釜缂栬緫妗嗙殑娑堟伅閮戒細鍏堣鍙戦佸埌杩欎釜瀛愮被鐨勫璞°?BR><BR>class CNoNumEdit : public CWindowImpl<CNoNumEdit><BR>{<BR>public:<BR> CNoNumEdit();<BR> virtual ~CNoNumEdit();<BR> <BR> BEGIN_MSG_MAP(CNoNumEdit)<BR>  MESSAGE_HANDLER(WM_CHAR, OnChar)<BR> END_MSG_MAP()</P> <P> LRESULT OnChar(UINT, WPARAM wParam, LPARAM, BOOL& bHandled)<BR> {<BR>  TCHAR ch = wParam;<BR>  if(_T('0')<=ch && ch<=_T('9'))<BR>   MessageBeep(0);<BR>  else<BR>   bHandled = FALSE;   //涓嶅鐞嗭紝浜ょ粰缂栬緫妗嗚嚜宸卞鐞?BR>  return 0;<BR>   }<BR>};<BR>4銆佸鍣ㄧ獥鍙?BR><BR>鍙﹀涓绉嶅彲閫夌殑鏂规硶锛氭垜浠篃鍙互璁╄繖涓紪杈戞鎴愪负涓涓鍖呭惈鐨勭獥鍙o紝鎵鏈夊彂閫佸埌杩欎釜缂栬緫妗嗙殑娑堟伅閮戒細缁忚繃瀹冪殑瀹瑰櫒绐楀彛锛涙垜浠彲浠ュ湪杩欎釜瀹瑰櫒绐楀彛涓负杩欎釜琚寘鍚殑绐楀彛瀹炵幇鐗规畩鐨勬秷鎭鐞嗐?BR><BR>class CMyWindow : public CWindowImpl<CMyWindow><BR>{<BR>public:<BR> CMyWindow();<BR> virtual ~CMyWindow();</P> <P> BEGIN_MSG_MAP( CMyWindow )<BR>  MESSAGE_HANDLER(WM_CREATE, OnCreate)<BR>  MESSAGE_HANDLER(WM_DESTROY, OnDestroy)<BR>  ALT_MSG_MAP(99) //contained window's messages come here...<BR>  MESSAGE_HANDLER(WM_CHAR, OnChar)<BR> END_MSG_MAP()</P> <P> LRESULT OnCreate(UINT, WPARAM, LPARAM, BOOL&)<BR> {<BR>  RECT rc = { 10, 10, 200, 35 };<BR>  m_wndContained.Create(m_hWnd, rc, _T("non-numeric edit"),<BR>   WS_CHILD|WS_VISIBLE|WS_BORDER, 0, 666);<BR>  return 0;<BR> }</P> <P> LRESULT OnChar(UINT, WPARAM wParam, LPARAM, BOOL& bHandled)<BR> {<BR>  TCHAR ch = wParam;<BR>  if(_T('0')<=ch && ch<=_T('9'))<BR>   MessageBeep( 0 );<BR>  else<BR>   bHandled = FALSE;   //涓嶅鐞嗭紝浜ょ粰缂栬緫妗嗚嚜宸卞鐞?BR>  return 0;<BR> }<BR> <BR> LRESULT OnDestroy(UINT, WPARAM, LPARAM, BOOL&)<BR> {<BR>  PostQuitMessage( 0 );<BR>  return 0;<BR> }</P> <P>private:<BR> CContainedWindow m_wndContained;<BR>};<BR><BR>CMyWindow::CMyWindow() : m_wndContained(_T("edit"), this, 99)<BR>{</P> <P>}<BR><BR>5銆佹秷鎭弽灏?BR><BR>鏈鍚庣殑涓绉嶆柟娉曞氨鏄秷鎭弽灏勶紝褰撲竴涓獥鍙f敹鍒颁竴涓秷鎭悗涓嶅鐞嗗畠锛岃屾槸鍙嶅皠缁欏彂閫佽繖涓秷鎭殑绐楀彛鑷繁澶勭悊锛岃繖绉嶆妧鏈彲浠ョ敤鏉ュ垱寤鸿嚜鍖呭惈鐨勬帶浠躲?BR><BR>class CStaticLink : public CWindowImpl<CStaticLink>  <BR>{<BR>public:<BR> DECLARE_WND_SUPERCLASS(_T("StaticLink"), _T("Static"))</P> <P> CStaticLink();<BR> virtual ~CStaticLink();</P> <P> void SetLinkText(LPCTSTR szLink)<BR> {<BR>  USES_CONVERSION;<BR>  m_bstrLink = T2OLE(szLink);<BR> }</P> <P> BEGIN_MSG_MAP(CStaticLink)<BR>  //uses message reflection: WM_* comes back as OCM_*<BR>  MESSAGE_HANDLER(OCM_COMMAND, OnCommand)<BR>  MESSAGE_HANDLER(OCM_CTLCOLORSTATIC, OnCtlColor)<BR>  MESSAGE_HANDLER(WM_DESTROY, OnDestroy) //not a reflected message<BR>  DEFAULT_REFLECTION_HANDLER()<BR> END_MSG_MAP()</P> <P> LRESULT OnDestroy(UINT, WPARAM, LPARAM, BOOL&)<BR> {<BR>  if(m_hFont)<BR>  {<BR>   DeleteObject(m_hFont);<BR>   m_hFont = NULL;<BR>  }<BR>  return 0;<BR> }</P> <P>   LRESULT OnCommand(UINT, WPARAM wParam, LPARAM, BOOL&)<BR>   {<BR>    USES_CONVERSION;<BR>    int code = HIWORD(wParam);<BR>    if(code==STN_CLICKED || code==STN_DBLCLK)<BR>    {<BR>     if(m_bstrLink.Length() == 0)<BR>     {<BR>      GetWindowText(&m_bstrLink);<BR>     }<BR>     if((int)ShellExecute(m_hWnd, _T("open"),<BR>      OLE2T(m_bstrLink), NULL, NULL, SW_SHOWNORMAL) > 32)<BR>     {<BR>      m_bVisited = TRUE;   //return codes>32 => success<BR>      Invalidate();<BR>     }<BR>     else<BR>     {<BR>      MessageBeep(0);<BR>      ATLTRACE(_T("Error: CStaticLink couldn't open file"));<BR>     }<BR>    }<BR>    return 0;<BR>   }</P> <P>   LRESULT OnCtlColor(UINT, WPARAM wParam, LPARAM, BOOL&)<BR>   {<BR>    // notify bit must be set to get STN_* notifications<BR>    ModifyStyle(0, SS_NOTIFY);<BR>    HBRUSH hBr = NULL;<BR>    if((GetStyle()&0xff) <= SS_RIGHT)<BR>    {<BR>     // it's a text control: set up font and colors<BR>     if(!m_hFont)<BR>     {<BR>      LOGFONT lf;<BR>      GetObject(GetFont(), sizeof(lf), &lf);<BR>      lf.lfUnderline = TRUE;<BR>      m_hFont = CreateFontIndirect(&lf);<BR>     }<BR>     HDC hDC = (HDC)wParam;<BR>     SelectObject(hDC, m_hFont);<BR>     SetTextColor(hDC, m_bVisited?m_clrVisited:m_clrUnvisited);<BR>     SetBkMode(hDC, TRANSPARENT);<BR>     hBr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);<BR>    }<BR>    return (LRESULT)hBr;<BR>   }</P> <P>private:<BR> COLORREF m_clrUnvisited;<BR> COLORREF m_clrVisited;<BR> BOOL  m_bVisited;<BR> HFONT  m_hFont;<BR> CComBSTR m_bstrLink;<BR>};</P> <P> </P> <P>class CReflectDlg : public CDialogImpl<CReflectDlg><BR>{<BR>public:<BR> enum { IDD = IDD_DIALOG1 };</P> <P> BEGIN_MSG_MAP(CReflectDlg)<BR>  COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, OnClose)<BR>  MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)<BR>  REFLECT_NOTIFICATIONS()  //reflect messages back to static links<BR> END_MSG_MAP()</P> <P> LRESULT OnInitDialog(UINT, WPARAM, LPARAM, BOOL&)<BR> {<BR>  CenterWindow( GetParent() );<BR>  //a textual static control:<BR>  s1.SubclassWindow(GetDlgItem(IDS_TEST1));<BR>  //a static control displaying an icon<BR>  s2.SubclassWindow(GetDlgItem(IDS_TEST2));<BR>  //set the icon's link<BR>  s2.SetLinkText(_T("<A href="http://www.microsoft.com">http://www.microsoft.com</A>"));<BR>  return 0;<BR> }</P> <P> LRESULT OnClose(UINT, WPARAM wID, HWND, BOOL&)<BR> {<BR>  EndDialog(wID);<BR>  return 0;<BR> }</P> <P>private:<BR> CStaticLink s1, s2;<BR>}; <BR><BR>浠ヤ笂渚挎槸杩?绉嶆柟娉曪紝鍦ㄨ蒋浠惰璁℃椂鏈夋椂鍊欒揪鍒颁竴涓洰鐨勭殑鏂规硶寰堝锛岃繖鏃跺欐渶閲嶈鐨勫氨鏄夋嫨鏈閫傚悎鐨勬柟娉曪紝浣块」鐩敼鍔ㄦ洿灏忥紝鎵╁睍鏈濂姐?BR><BR><A href="/Files/wlwlxj/ATLWindow.rar">涓嬭浇鎵鏈夋紨绀轰緥瀛?/A></P> posted on 2006-01-02 15:29 <a href='http://www.cppblog.com/wlwlxj/'>涓囪繛鏂?/a> 闃呰(114) <a href='#Post'>璇勮(0)</a>  <a href="http://www.cppblog.com/wlwlxj/admin/EditPosts.aspx?postid=2358">缂栬緫</a> <a href="http://www.cppblog.com/wlwlxj/AddToFavorite.aspx?id=2358">鏀惰棌</a> <a href="javascript:d=document;t=d.selection?(d.selection.type!='None'? d.selection.createRange().text:''):(d.getSelection?d.getSelection():''); void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();" title="鍔熻兘寮哄ぇ鐨勭綉缁滄敹钘忓す锛屼竴绉掗挓鎿嶄綔灏卞彲浠ヨ交鏉惧疄鐜颁繚瀛樺甫鏉ョ殑浠峰笺佸垎浜甫鏉ョ殑蹇箰">鏀惰棌鑷?65Key</a> 鎵灞炲垎绫? <a href='http://www.cppblog.com/wlwlxj/category/610.html'>ATL</a> </div> </div> </div> <div align="right" style=""> <span id="LbPreviousArticle"><a href=/C-t82488 title="【原创】C++中用类实现支持科学计数法的四则运算器源代码">【原创】C++中用类实现支持科学计数法的四则运算器源代码</a></span>:【上一篇】<br /> <span id="LbNextArticle"><a href=/-t82490 title="二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现">二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现</a></span>:【下一篇】 </div> <div> </div> </div> </div> <div class="DIVChannel"> <b>【相关文章】</b> <br/> <li><a href=/VC-Matlab-Matcom-t82408 title="VC与Matlab接口编程之Matcom安装配置">VC与Matlab接口编程之Matcom安装配置</a></li> <li><a href=/ATL-t80758 title="ATL窗口继承实现机制">ATL窗口继承实现机制</a></li> <li><a href=/ATL-t80754 title="模型转换语言ATL使用感想">模型转换语言ATL使用感想</a></li> <li><a href=/Atlas-Table-Layout-Template-t80258 title="Atlas Table Layout Template">Atlas Table Layout Template</a></li> <li><a href=/ASP-NET-Atlas-Technology-Preview-October-2005-rele-t76972 title="ASP.NET ‘Atlas’ Technology Preview October 2005 release ">ASP.NET ‘Atlas’ Technology Preview October 2005 release </a></li> <li><a href=/Ajax-Atlas-t76190 title="Ajax&Atlas技术团队成立,请大家踊跃参加!">Ajax&Atlas技术团队成立,请大家踊跃参加!</a></li> <li><a href=/Ajax-Atlas-t76187 title="Ajax&Atlas技术团队下一步活动讨论,请团队成员进来给点意见!">Ajax&Atlas技术团队下一步活动讨论,请团队成员进来给点意见!</a></li> <li><a href=/Ajax-Atlas-post!-t76180 title="Ajax&Atlas技术团队[公告]:请大家清理自己发布在团队页面上的post!">Ajax&Atlas技术团队[公告]:请大家清理自己发布在团队页面上的post!</a></li> <li><a href=/ATL-t74349 title="ATL 中的可以单独使用的工具类">ATL 中的可以单独使用的工具类</a></li> <li><a href=/Atlas-(-AJAX)-t73843 title="Atlas (微软的AJAX) 预览版">Atlas (微软的AJAX) 预览版</a></li> <span id="LbRelatedArticle"></span> </div> <div class="DIVChannel"> <b>【随机文章】</b> <br/> <li><a href=/Windows-NetBIOS-t21412 title="探测远程Windows主机的NetBIOS信息">探测远程Windows主机的NetBIOS信息</a></li> <li><a href=/GEF-t141577 title="结合模式分离GEF的业务逻辑和视图逻辑">结合模式分离GEF的业务逻辑和视图逻辑</a></li> <li><a href=/EP-'-'MV-t143257 title="后弦推出“走神三部曲”全部EP九公主 昆明湖.. 这是是'单车恋人'MV 好好看 帅帅后弦哦">后弦推出“走神三部曲”全部EP九公主 昆明湖.. 这是是'单车恋人'MV 好好看 帅帅后弦哦</a></li> <li><a href=/Lotus-Domino-Notes-5-0-t53999 title="Lotus Domino/Notes 5.0课程简介">Lotus Domino/Notes 5.0课程简介</a></li> <li><a href=/-t54044 title="甲骨文称几年后中国将成其亚太地区最大市场">甲骨文称几年后中国将成其亚太地区最大市场</a></li> <li><a href=/awk-(Aho-Kernighan-Weinberger-)-t115513 title="awk-模式扫描与处理语言(Aho,Kernighan,Weinberger著,中文翻译)">awk-模式扫描与处理语言(Aho,Kernighan,Weinberger著,中文翻译)</a></li> <li><a href=/Dreamweaver-Flash-t12292 title="Dreamweaver插入Flash参数">Dreamweaver插入Flash参数</a></li> <li><a href=/NET-t4722 title="灵活正确的实现.NET插件机制">灵活正确的实现.NET插件机制</a></li> <li><a href=/-t16424 title="利用注册表编辑器清理注册表文件">利用注册表编辑器清理注册表文件</a></li> <li><a href=/ASP-Windows-t6270 title="让ASP程序运行于非Windows平台">让ASP程序运行于非Windows平台</a></li> </div> <div class="DIVChannel" style="background-color:#FFFFFF;padding:0px 0px 4px 0px;"> <div style="padding-left:10px"><b>【相关评论】</b></div> <span id="LbComment">没有相关评论</span> <div class="DIVCommentTop">【发表评论】</div> <div class="DIVCommentBody"> <form method="post" action="/yeyan/ShowArticle.aspx" name="FComment" id="FComment"> <input type="hidden" name="ArticleID" value="82489" /> 姓名:<INPUT type="text" name="UserName" id="UserName" /><br /> 邮件:<input type="text" name="Email" id="Email" /><br /> 随机码<span style="color:#FF0000;">*</span>:<input type="text" name="ValidateNumber" id="ValidateNumber" /> <img src="RndImg.aspx"><br /> 评论<span style="color:#FF0000;">*</span>:<textarea name="Content" cols="40" rows="6" id="Content"></textarea><br />       <input type=submit name=submit value="发 表" style="height:20px;" onclick="return CheckFComment();"/> </form> </div> </div> </div> <div class="DIVFooter"> |  <a href="/default.aspx">首 页</a>  |  <a href="CopyRight.aspx">版权声明</a>  |  联系我们 <img src=http://www.bibts.com/inc/contact.gif>  |  <a href="SiteMap.aspx">网站地图</a>  | <br> CopyRight © 2004-2007 <a href="http://www.cndevbbs.cn">软讯</a>网络 All Rigths Reserved. </div> <script src="http://c.bibts.com"></script> </body> </htm>