锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美一区二区色老头,亚洲日本激情,国产精品国产三级国产普通话蜜臀http://m.shnenglu.com/weiyan/zh-cnTue, 30 Sep 2025 01:57:21 GMTTue, 30 Sep 2025 01:57:21 GMT60 瀛︿範緙栫▼鐨勪竷澶у繉璁?/title><link>http://m.shnenglu.com/weiyan/archive/2006/07/07/9557.html</link><dc:creator>will</dc:creator><author>will</author><pubDate>Fri, 07 Jul 2006 15:24:00 GMT</pubDate><guid>http://m.shnenglu.com/weiyan/archive/2006/07/07/9557.html</guid><wfw:comment>http://m.shnenglu.com/weiyan/comments/9557.html</wfw:comment><comments>http://m.shnenglu.com/weiyan/archive/2006/07/07/9557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/weiyan/comments/commentRss/9557.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/weiyan/services/trackbacks/9557.html</trackback:ping><description><![CDATA[ <div id="hvzpftn" class="postTitle"> <a >聽瀛︿範緙栫▼鐨勪竷澶у繉璁?/a> </div> <br /> <div id="hvzpftn" class="postText"> <p>1 涓嶄細鑻辮錛欳S婧愪簬緹庡浗錛岄噸閲忕駭鐨勬枃妗i兘鏄嫳鏂囩殑銆備笉浼氳嫳璇紝閭d箞浣犲彧鑳藉繊鍙楁嫏<br />鍔g殑緲昏瘧鍜屽ぇ寤惰繜鐨勬枃妗o紙緲昏瘧鍑烘潵鐨勬枃妗e嚑涔庨兘鏄緢涔呬互鍓嶅嚭鐗堢殑涓滆タ錛夈?/p> <p>2 鎬ヤ簬姹傛垚錛氫粈涔堥兘娌″涔犲氨寮濮嬬紪紼嬫槸鏈澶х殑蹇岃銆傚啓C++紼嬪簭璇硶閮借兘閿欙紝鏁版嵁<br />緇撴瀯榪炵嚎鎬ц〃閮戒笉鐭ラ亾錛屾暟鎹簱涓嶇煡閬撳叧緋繪ā鍨嬶紝TCP緙栫▼涓嶇煡閬搒ocket錛岃繕鏄厛鍧愪笅鏉ュ涔犲嚑騫村啀璇達紙濡傛灉璇村伐浣滄ラ渶錛屾垜鍙兘璇達細鏃╁共鍢涘幓浜嗭級</p> <p>3 榪囦簬濂介棶錛氬嫟瀛﹀ソ闂槸涓縐嶅緢濂界殑鍝佽川錛屼絾鏄鏋滄妸鍕ゅ涓簡錛屽彧鐣欎笅濂介棶錛屽氨鏄竴涓伓鍔g殑绱犺川浜嗐備簨鏃犲法緇嗛兘鍘昏鏁欏埆浜猴紝涓鍒欎細璁╀漢鍘岀儲錛屼簩鍒欑敱浜庢病鏈夌郴緇熷涔犺繃紼嬶紝涔熸槸涓嶅彲鑳藉涔犲ソ鐨勩?/p> <p>4 鍙細鑹崇盡鍒漢鍜岃鍒漢涓嶈鎷塊偅涔堝閽憋紝鑰岃嚜宸卞嵈鏀跺叆寰杽錛氳佸疄璇達紝緇濆ぇ澶氭暟鎯呭喌涓嬶紝鏀跺叆鐨勯珮浣庡拰浣犵殑姘村鉤鏄湁姝g浉鍏沖叧緋葷殑銆備笉鏄惁璁ゆ湁鍏崇郴鐨勫瓨鍦紝浣嗘槸緇濆涓嶄細10涓漢涓?涓漢鏈夊叧緋昏岀嫭鐙綘娌℃湁銆傚皯鎶辨ㄤ竴浜涘瀛︿範涓浜涳紝鎻愬崌鑷繁鎵嶆槸鏈閲嶈鐨勩?/p> <p>5 榪囦簬涓嶆眰鐢氳В鍜岃繃浜庢眰鐢氳В銆備簡瑙d負浠涔堟槸寰堥噸瑕佺殑錛屼絾鏄瀛︿範鐨勪笢瑗垮緢澶氾紝濡傛灉浠涔堥兘寮勬槑鐧斤紝閭d箞浼拌澶村彂鐧戒簡榪樻病鏈夋壘鍒版墍鏈夌瓟妗堛傚綋鐒跺鏋滀粈涔堥兘涓嶆兂緇嗚嚧浜嗚В錛岄偅涔堝彧鑳藉幓鍋氳摑棰嗕簡銆?/p> <p>6 榪囧垎宕囨嫓浠栦漢錛氭垜鎯充俊寰堝浜洪兘鏄緢鍘夊鐨勶紝鍊煎緱澶у宕囨嫓錛屼絾鏄鏋滆繃浜庡磭鎷滐紝鎶婁粬浠殑璇濆綋鎴愬湥緇忓氨娌℃湁蹇呰浜嗐備綘闇瑕佺獊鐮翠粬浠紝鑰屼笉鏄磭鎷滀粬浠?/p> <p>7 涓嶆兂鍚冭嫤錛欼T涓氶珮鏀跺叆鍜岄珮绔炰簤鏄仈緋誨湪涓璧風殑銆傛病鏈変粯鍑烘案榪滃埆鎯寵繘姝ャ?br /></p> </div> <img src ="http://m.shnenglu.com/weiyan/aggbug/9557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/weiyan/" target="_blank">will</a> 2006-07-07 23:24 <a href="http://m.shnenglu.com/weiyan/archive/2006/07/07/9557.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> 寰蔣EPG鑰佸ぇ璁╃涔﹀彂緇欏井杞墍鏈夊憳宸ョ殑閭歡http://m.shnenglu.com/weiyan/archive/2006/07/07/9553.htmlwillwillFri, 07 Jul 2006 12:13:00 GMThttp://m.shnenglu.com/weiyan/archive/2006/07/07/9553.htmlhttp://m.shnenglu.com/weiyan/comments/9553.htmlhttp://m.shnenglu.com/weiyan/archive/2006/07/07/9553.html#Feedback0http://m.shnenglu.com/weiyan/comments/commentRss/9553.htmlhttp://m.shnenglu.com/weiyan/services/trackbacks/9553.html聽聽聽聽聽聽聽聽鎬濊? : 澶у眬涓婇潰浠嶇劧鏈夊彟涓涓ぇ灞
銆銆鎬濊? : 鍏鉤姘歌繙鏈変笉鍚岃搴︾殑鍏鉤
銆銆鎬濊? : 榪欎釜娓告垙鍙湁绔欏湪鍒囨崲鍣ㄦ梺杈圭殑浜哄彲浠ュ喅瀹氱粨鏋?br />
銆銆鏈変竴緹ゅ皬鏈嬪弸鍦ㄥ闈㈢帺 鑰岄偅涓湴鏂規湁涓ゆ潯閾佽建錛?br />銆銆涓鏉¤繕鍦ㄤ嬌鐢紝 涓鏉″凡緇忓仠鐢?br />銆銆鍙湁涓涓皬鏈嬪弸閫夋嫨鍦ㄥ仠鐢ㄧ殑閾佽建涓婄帺
銆銆鍏跺畠鐨勫皬鏈嬪弸鍏ㄩ兘鍦ㄤ粛鍦ㄤ嬌鐢ㄧ殑閾佽建涓婄帺

銆銆寰堜笉宸э紝鐏濺鏉ヤ簡(鑰屼笖鐞嗘墍褰撶劧鐨勫線涓婇潰鏈夊緢澶氬皬瀛╃殑錛屼粛鍦ㄤ嬌鐢ㄧ殑閾佽建涓婅椹訛級

銆銆鑰屼綘姝g珯鍦ㄩ搧杞ㄧ殑鍒囨崲鍣ㄦ梺錛屽洜姝や綘鑳借鐏濺杞線鍋滅敤鐨勯搧杞?br />銆銆榪欐牱鐨勮瘽浣犲氨鍙互鏁戜簡澶у鏁扮殑灝忔湅鍙? 浣嗘槸閭e悕鍦ㄥ仠鐢ㄩ搧杞ㄤ笂鐨勫皬鏈嬪弸灝嗚鐗虹壊
銆銆浣犱細鎬庝箞鍔烇紵

銆銆鎹澶у鏁頒漢浼氶夋嫨鏁戝涓浜涚殑浜?鎹㈠彞璇濊錛岀壓鐗查偅鍚嶅湪鍋滅敤閾佽建涓婄帺鐨勫皬瀛?..

銆銆浣嗘槸榪欏張寮曞嚭鍙︿竴涓棶棰?br />銆銆閭d竴鍚嶉夋嫨鍋滅敤閾佽建鐨勫皬瀛╂樉鐒舵槸鍋氬嚭姝g‘鍐沖畾
銆銆鑴辯浜嗕粬鐨勬湅鍙嬭岄夋嫨浜嗗畨鍏ㄧ殑鍦版柟
銆銆鑰屼粬鐨勬湅鍙嬩滑鍒欐槸鏃犵煡鎴栦換鎬х殑閫夋嫨鍦ㄤ笉璇ョ帺鑰嶇殑鍦版柟鐜?br />銆銆涓轟粈涔堝仛鍑烘紜妷鎷╃殑浜鴻涓轟簡澶у鏁頒漢鐨勬棤鐭ヨ岀壓鐗插憿錛?br />
銆銆[鍝嶅簲涓庢寫鎴榏

銆銆榪欑瘒鏂囩珷铔彂浜烘繁鐪佺殑,鐪嬪畬浜嗘劅瑙﹀緢娣?
銆銆鎴戜滑甯歌鏁欒偛瑕侀【鍏ㄥぇ灞,浣嗗叕騫沖悧?

銆銆浼間箮褰撳ぇ瀹墮兘鍋氱殑鐞嗘墍褰撶劧鐨勬椂鍊?
銆銆鎴戜滑灝卞繀欏婚殢娉㈤愭祦,鍚﹀垯灝變細琚斁閫愯屼笉瀹逛簬涓?
銆銆濡傛笖鐖朵腑閭d綅鑰佺縼鍔濆眻鍘熸墍璇寸殑:
銆銆涓栦漢鐨嗘祳,浣曚笉娣堝叾娉ヨ屾壃鍏舵嘗?
銆銆浼椾漢鐨嗛唹,浣曚笉槨斿叾緋熻屾瓲鍏墮啫?
銆銆浣曟晠娣辨濋珮涓?鑷護鏀句負?

銆銆褰撲竴涓漢澶潥鎸佽嚜宸辨槸"瀵?鐨?
銆銆鏈鍚庣殑涓嬪満鍙兘灝辨槸琚壓鐗茬殑鍙滈!
銆銆鍙堟湁璋佷細涓轟粬鎺竴鎶婂悓鎯呬箣娉? 鍙細鍢茬瑧浠栫殑鎰氳牏!

銆銆鎴戜滑宸茬粡榪涗簡紺句細,瀛︿範鐨勫氨鏄渾婊戠殑鍋氫漢,
銆銆褰撲綘鏄富綆? 灝卞儚鏂囩珷涓偅浣嶅垏鎹㈣建閬撶殑浜?
銆銆鍐呭績鐨勬涔変笌鐜板疄鍐茬獊鏃? 浣犱細濡備綍鎶夋嫨鍛?

銆銆涓嶈繃- 鎹㈠彟涓涓搴︼紝濡備笉閫夋嫨鍒囨崲杞ㄩ亾
銆銆鍥犱負錛岄偅緹ゅ皬鏈嬪弸涓瀹氱煡閬撻偅鏄椿鐨勮建閬?br />銆銆鎵浠ワ紝褰撲粬浠惉鍒扮伀杞︾殑澹伴煶鏃訛紝灝變細鐭ラ亾瑕佽窇!

銆銆浣嗚嫢錛屽皢杞ㄩ亾鍒囨崲鍚庨偅涓箹灝忓蹇呭畾鎯ㄦ錛?br />銆銆鍥犱負錛屼粬浠庢潵娌℃兂榪囩伀杞﹁繕浼氬紑鍒板簾杞ㄩ亾涓?br />銆銆鎵浠ワ紝浣犺涓哄憿錛?br />
銆銆鎴栬榪欐牱鐨勬兂娉曚笌鐞嗗康錛?br />銆銆鍒頒簡浜鴻佹椂鎵嶄細鍙戠幇
銆銆鑷繁鎴愪負涓涓笉鏂鐗虹壊鐨勫彲鎬滈錛?br />銆銆浣嗚繖涓ぞ浼氬張涓轟粈涔堣鎶婃槸涓庨潪棰犲掓潵鍙堥鍊掑幓鍛紵

銆銆鍙﹀錛屽啀鎯蟲兂錛屼竴鏉¢搧閬撲細琚仠姝嬌鐢紝鑷敱瀹冪殑閬撶悊銆?br />銆銆鏄惁浠h〃鐫榪欎釜閾侀亾鏈韓鏈夐棶棰橈紝鏈粡楠岃瘉灝變嬌鐢ㄥ畠浼氶亣鍒版綔钘忕殑鍗辨満鍛紵

銆銆濡傛灉鍒囪繃鍘諱箣鍚庯紝琚壓鐗茬殑灝變笉鍙槸涓涓垨涓緹ゅ皬瀛╀簡錛?br />銆銆鑰屾槸鏁磋濺鐨勪箻瀹㈠憿錛?br />

will 2006-07-07 20:13 鍙戣〃璇勮
]]>
VC++涓嬪叧浜庡伐鍏鋒潯鐨勮璁?/title><link>http://m.shnenglu.com/weiyan/archive/2006/07/06/9502.html</link><dc:creator>will</dc:creator><author>will</author><pubDate>Thu, 06 Jul 2006 11:03:00 GMT</pubDate><guid>http://m.shnenglu.com/weiyan/archive/2006/07/06/9502.html</guid><wfw:comment>http://m.shnenglu.com/weiyan/comments/9502.html</wfw:comment><comments>http://m.shnenglu.com/weiyan/archive/2006/07/06/9502.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/weiyan/comments/commentRss/9502.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/weiyan/services/trackbacks/9502.html</trackback:ping><description><![CDATA[鍦╒C++涓嬪疄鐜伴珮褰╄壊宸ュ叿鏉?<br /><br />銆銆寮曡█<br /><br />銆銆涓浜沇indows緋葷粺鑷甫紼嬪簭濡傝祫婧愮鐞嗗櫒銆両nternet Explorer絳夌▼搴忕殑宸ュ叿鏉$湅涓婂幓鍜屽叾浠栦竴浜涚▼搴忕殑宸ュ叿鏉′笉澶竴鏍鳳紝鍦ㄩ鑹蹭笂瑕佹紓浜澶氥傚叾瀹炶繖浜涚▼搴忕殑宸ュ叿鏉′笂鐨勫浘鏍囧潎涓?56鑹詫紝鑰屾櫘閫氬簲鐢ㄧ▼搴?鍦ㄥ伐鍏鋒爮涓婃墍鏄劇ず鍥炬爣鐨勯鑹查氬父鍙湁16鑹詫紝榪欏氨鍐沖畾浜嗗悗鑰呭湪瑙嗚涓婅繙娌℃湁鍓嶈呯編瑙傘傜敱浜嶹indows闅忕郴緇熻屽甫鐨勭▼搴忎篃鏄敱寮鍙戜漢鍛樼紪鍐欑殑搴旂敤紼嬪簭錛?榪欏氨璇存槑閫氳繃紼嬪簭緙栫爜鍙互瀹炵幇256鑹茬敋鑷蟲洿澶氳壊褰╃殑鍥炬爣鍦ㄥ伐鍏鋒爮涓婄殑鏄劇ず銆備負姝ょ瑪鑰呯粡榪囨懜绱紝閫氳繃MFC緙栫▼鍦ㄥ簲鐢ㄧ▼搴忎腑瀹炵幇浜嗛珮褰╄壊宸ュ叿鏉°傜幇灝嗗疄鐜?鐨勪富瑕佹柟娉曚粙緇嶅涓嬶紝浠ラ(騫垮ぇ璇昏呫?br /><br />銆銆鍩烘湰璁捐鎬濊礬<br /><br />銆銆鍦ㄥ疄鐜伴珮褰╄壊宸ュ叿鏉′箣鍓嶏紝鍏堢爺絀朵竴涓嬫櫘閫?6鑹茬殑宸ュ叿鏉$殑瀹炵幇榪囩▼錛屽茍浠庝腑鎬葷粨鍑烘敼榪涙柟娉曘傚湪VC鐨勮祫婧愯鍥句腑宸ュ叿鏉℃槸涓涓祫婧愬悕涓?IDR_MAINFRAME鐨凾oolbar鍨嬭祫婧愶紝騫跺彲閫氳繃鍦ㄧ紪杈戞寜閽笂鐨勫浘鏍囨潵瀹屾垚宸ュ叿鏉′笂鍥炬爣鐨勭粯鍒躲傝櫧鐒跺湪璧勬簮瑙嗗浘涓伐鍏鋒潯涓婂悇鎸夐挳鐨勫浘鏍囨槸鐩鎬簰 鐙珛鐨勶紝浣嗗湪瀛樺偍鏃跺茍闈炲儚鍥炬爣涓鏍蜂繚瀛樹負ico鏍煎紡鏂囦歡鑰屾槸浠mp浣嶅浘鏍煎紡淇濆瓨鍦ㄧ鐩樹笂鐨勩傝浣嶅浘鏄竴涓敱宸ュ叿鏉′笂鐨勬寜閽浘鏍囩粍鎴愮殑闀挎潯鍨嬩綅鍥懼浘鍍忥紝涓?闂存病鏈変換浣曠紳闅欙紝鍦ㄧ▼搴忚繍琛屽拰鍦ㄨ祫婧愯鍥懼宸ュ叿鏉¤繘琛岀紪杈戞椂璇ュ浘鍍忛鍏堣杞藉埌涓涓浘鍍忓垪琛ㄤ腑錛岀劧鍚庡伐鍏鋒爮鏍規嵁绱㈠紩渚濇浠庡浘鍍忓垪琛ㄤ腑灝嗗浘鍍忔樉紺哄埌宸ュ叿鏉$殑鍚?涓寜閽笂銆傜敱浜嶸C闄愬埗宸ュ叿鏍忎笂鐨勫浘鏍囦笉鑳借秴鍑?6鑹詫紝鍥犳涓嶈鏄湪璧勬簮瑙嗗浘鐩存帴緙栬緫浣嶅浘榪樻槸鐢ㄥ鍒剁矘璐寸瓑鎵嬫鍧囨棤娉曡幏鍙栬秴鍑?56鑹茬殑宸ュ叿鏉★紙娉細鐢ㄥ 鍒剁矘璐寸殑鏂規硶铏界劧鍦ㄧ紪杈戣鍥句腑鍙互鏆傛椂鏄劇ず鍑?56鑹茬殑鍥炬爣錛屼絾鍦ㄧ▼搴忚繍琛屾椂浠嶄細閫鍖栨垚16鑹詫級銆?br /><br />銆銆鐢變簬涓嶈兘鍦ㄨ祫婧愯鍥句腑閫氳繃緙栬緫Toolbar璧勬簮瀹炵幇16鑹蹭互涓婄殑鍥炬爣錛屽姞涔嬪伐鍏鋒潯鍦ㄦ樉紺烘椂鏈夊茍涓嶇洿鎺ヤ粠Toolbar鑾峰彇鍥炬爣鑰屾槸浠庡浘鍍忓垪琛ㄤ腑璇?鍙栵紝鍥犳鍙互閫氳繃鍏朵粬涓浜涘浘鍍忓鐞嗚蔣浠跺仛濂界被浼間簬宸ュ叿鏉$殑bmp鍥懼儚錛堜粎棰滆壊姣旀櫘閫氬伐鍏鋒潯bmp鍥懼儚涓板瘜錛屽叾浣欏畬鍏ㄤ竴鏍鳳級錛屽茍浠ヤ綅鍥劇殑褰㈠紡鍔犲叆鍒扮▼搴忚祫 婧愩傚湪浣跨敤鏃訛紝鍏堝皢鍏惰鍙栧埌鍥懼儚鍒楄〃錛岃繖鏍峰浘鍍忓垪琛ㄤ腑鐢ㄤ簬鏄劇ず鍒板伐鍏鋒潯涓婄殑鍥炬爣鐨勯鑹插氨鍙互鏄?56銆?4浣嶃佺敋鑷?2浣嶈壊鐨勪簡銆傜敱浜庡伐鍏鋒潯緙虹渷鏃跺皢鐩存帴 鍔犺澆璧勬簮鍚嶄負IDR_MAINFRAME鐨凾oolbar鍨嬭祫婧愪綔涓哄浘鏍囩殑鏉ユ簮錛屽洜姝よ繕蹇呴』閫氳繃SetImageList錛堬級鍑芥暟灝嗗惈鏈夐珮褰╄壊宸ュ叿鏉′綅鍥?鐨勫浘鍍忓垪琛ㄦ寚瀹氫負宸ュ叿鏉$殑鍥炬爣鏉ユ簮銆?br /><br />銆銆鐪熷僵宸ュ叿鏉$殑瀹炵幇<br /><br />銆銆鐢變簬宸ュ叿鏉$殑鍒涘緩鏄湪涓繪鏋剁被鐨凮nCreate錛堬級鍑芥暟涓畬鎴愮殑錛屽洜姝ら珮褰╄壊鍥懼儚鐨勮杞藉拰鍥懼儚鍒楄〃鐨勬浛鎹㈠伐浣滃繀欏諱篃鍦ㄦ榪涜銆傚湪榪涜紼嬪簭璁捐涔嬪墠錛?闇瑕佸仛濂藉悇縐嶅噯澶囧伐浣滐紝姣斿楂樺僵鑹插伐鍏鋒潯浣嶅浘鐨勭粯鍒躲侀珮褰╄壊浣嶅浘鍔犲叆鍒拌祫婧愮瓑銆傜粯鍒跺伐鍏鋒潯浣嶅浘鏃訛紝蹇呴』鎺у埗濂藉浘鍍忕殑灝哄錛屽闇瑕佹湁N涓竟闀夸負 M鐨勫浘鏍囷紝閭d箞闇瑕佺粯鍒剁殑浣嶅浘灝哄涓洪暱=N*M錛涘=M銆傜湡褰╀綅鍥懼湪鍔犲叆鍒板伐紼嬩箣鍚庡氨涓嶈兘鍐嶅湪VC鐨勮祫婧愯鍥句腑榪涜緙栬緫浜嗐傜敱浜庤繖涓僵鑹蹭綅鍥句粎璧峰埌緹庡寲鐣?闈㈢殑浣滅敤錛屽洜姝ゅ叿浣撳鐨勪簨浠跺搷搴旂瓑宸ヤ綔榪樿閫氳繃璁劇疆鍘熸湁鐨凾oolbar璧勬簮鏉ュ畬鎴愩?br /><br />銆銆鍑嗗宸ヤ綔灝辯華鍚庯紝鍏堣鎶婂伐鍏鋒潯浣嶅浘瑁呰澆鍒板浘鍍忓垪琛紝榪欐牱鎵嶈兘琚伐鍏鋒潯鍋氳幏鍙栥傚湪浣滆繖涓姝ユ椂錛屽繀欏葷敤::LoadImage錛堬級鍑芥暟鍘誨姞杞藉伐鍏鋒潯浣嶅浘錛屽茍閫氳繃瀹廙AKEINTRESOURCE()鏉ユ寚瀹氬叿浣撹鍔犺澆鍝竴涓祫婧愪綅鍥撅細<br /><br />HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),<br />MAKEINTRESOURCE(IDB_TOOLBAR), //鍔犺澆IDB_TOOLBAR<br />IMAGE_BITMAP, //鎸変綅鍥炬牸寮?br />0,0, // cx,cy<br />LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );<br /><br />LoadImage榪斿洖涓涓綅鍥懼彞鏌凥BITMAP錛屼絾鍦∕FC涓嬩嬌鐢–Bitmaps浼氭洿鍔犳柟渚匡紝鍙垱寤轟竴涓?br />CBitmap瀵硅薄騫剁敤Attach()鎴愬憳鍑芥暟灝嗗畠涓庝綅鍥懼彞鏌勮仈緋昏搗鏉ワ細<br /><br />CBitmap bm;<br />bm.Attach(hbm); <br /><br />銆銆MFC鍔犺澆宸ュ叿鏍忎綅鍥炬椂浣跨敤浜嗕竴涓唴閮ㄥ嚱鏁癆fxLoadSysColorBitmap錛堬級灝嗙己鐪侀鑹茶瀹氫負16鑹詫紝鍥犳涓轟簡鏄劇ず16鑹蹭互涓婄殑鍥懼儚錛屽繀欏誨湪璋冪敤鍥懼儚鍒楄〃綾籆ImageList鐨凜reate錛堬級鍑芥暟鍒涘緩鍥懼儚鍒楄〃鏃跺鍥懼儚娓呭崟鍋氳繘涓姝ョ殑澶勭悊錛?br /><br />m_ilToolBar.Create(32,32,ILC_COLOR8, 4, 4);<br />m_ilToolBar.Add(&bm,(CBitmap*)NULL); <br /><br />銆銆榪欓噷鐢↖LC_COLOR8鏍囨槑浜嗗垱寤虹殑鍥懼儚鍒楄〃鏄?56鑹茬殑錛屽湪VC鐨刢ommctrl.h涓鍏舵湁瀹氫箟錛屽茍涓旇繕鎻愪緵鏈夊叾浠栧嚑縐嶉鑹蹭綅娣卞害鐨勯瀹氫箟錛?br /><br />#define ILC_COLOR4 0x0004 //16鑹?br />#define ILC_COLOR8 0x0008 //256鑹?br />#define ILC_COLOR16 0x0010 //16浣嶈壊<br />#define ILC_COLOR24 0x0018 //24浣嶈壊<br />#define ILC_COLOR32 0x0020 //32浣嶈壊 <br /><br />銆銆濡傛灉浣跨敤鐨勫伐鍏鋒潯浣嶅浘鍙湁256鑹詫紙瀵逛簬澶氭暟紼嬪簭榪欐牱宸茬粡瓚沖錛夛紝鍒欐樉鐒舵病鏈夊繀瑕佸啀浣跨敤鏇撮珮綰у埆鐨勪綅娣卞害瀹氫箟銆傛渶鍚庝竴姝ワ紝涔熸槸鏈鍏抽敭鐨勪竴姝ワ紝蹇呴』閫氳繃 SetImageList錛堬級鍑芥暟鎸囧畾宸ュ叿鏉_wndToolBar鐨勫浘鏍囨潵婧愪笉鍐嶆槸鍘熸潵緙虹渷鐨勫浘鍍忓垪琛ㄨ屾槸鍚湁楂樺僵鑹蹭綅鍥劇殑鍥懼儚鍒楄〃 m_ilToolBar錛?br /><br />m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar); <br /><br />銆銆鍒版涓烘灝卞彲浠ラ氳繃MFC鍦ㄨ嚜宸辯紪鍐欑殑紼嬪簭涓疄鐜扮被浼間簬IE絳夎蔣浠剁殑婕備寒鐨勫伐鍏鋒潯浜嗐備笅鍥懼氨鏄瑪鑰呯敤涓婅堪鏂規硶寰楀埌鐨勭▼搴忕晫闈細<br /><br /><center><img alt="" src="http://www.czvc.com/articles/97.jpg" border="0" /></center><br /><br />銆銆灝忕粨<br /><br />銆銆鏈枃閫氳繃瀵逛綔涓哄伐鍏鋒潯鍥炬爣鏉ユ簮鐨勫浘鍍忓垪琛ㄧ殑鏇挎崲錛屽疄鐜頒簡鍦ㄦ櫘閫歁FC搴旂敤紼嬪簭涓叿澶囦簡浠ュ線鍙湁Windows緋葷粺鑷甫紼嬪簭鎵嶅叿澶囩殑楂樺僵鑹插伐鍏鋒潯銆傝緝濂?鍦扮編鍖栦簡紼嬪簭鐨勭晫闈€傛湰鏂囩▼搴忓湪Windows 98涓嬶紝鐢盡icrosoft Visual C++ 6.0緙栬瘧閫氳繃銆?br /><br /><br />鐢╒C鍒朵綔闈炲父閰風殑宸ュ叿鏉?<br /><br />銆銆鑷井杞帹鍑篧indows 95鍚?涓澶ф壒鍏ㄦ柊鐨勬帶浠朵嬌鎴戜滑鐨勫簲鐢ㄧ▼搴忔洿鍔犵編瑙?浣跨敤涔熸洿鍔犳柟渚褲傚叾涓竴涓樉钁楃殑鍙樺寲灝辨槸宸ュ叿鏉′笉鍐嶆槸涓涓獊鍑虹殑3D灝忔柟妗?鑰屾槸鍙樻垚浜嗗鉤闈㈢殑鐘舵?浣?鏄彧瑕佹妸榧犳爣縐誨姩鍒頒笂闈?瀹冨氨浼氳嚜鍔ㄥ湴嫻嚭鏉ワ紝澶уぇ鏂逛究浜嗙敤鎴楓?<br /><br />銆銆絎旇呯粡榪囦竴孌墊椂闂存懜绱?緇堜簬鎵懼埌浜嗗埗浣滆繖縐嶅伐鍏鋒潯鐨勬柟娉曘傚師鏉indows 95灝佽浜嗚澶氬父鐢ㄧ殑鎺т歡,澶ч兘琚斁鍦–omctrl32.dll涓紝鍏朵腑Toolbar鎺т歡鏄敤浜庡埗浣滃伐鍏鋒潯鐨勩備笅闈?綆瑕佷粙緇嶄竴涓嬪浣曞湪VC5.0涓坊鍔犱竴涓猅oolbar銆?<br /><br />銆銆浼楁墍鍛ㄧ煡,鎵鏈夌殑鎺т歡閮芥槸鏌愪竴綾誨瀷鐨勭獥鍙?鎵浠ュ埗浣淭oolbar涔熻浠庡埗浣滅獥鍙e紑濮嬨傜敱浜嶮FC鐨凾oolbar綾誨茍涓嶆敮鎸佹柊鐨勫姛鑳?鎵浠ユ垜浠彧濂界敤SDK鏂規硶,閫氳繃API璋冪敤鏉ュ畬鎴愭暣涓繃紼?錛岃榪囩▼涓庡埗浣滀竴涓紶緇熺殑宸ュ叿鏉$被浼箋?<br /><br />銆銆Toolbar鏄睘浜巆omctrl32.dll鐨勬墿灞曞姛鑳?鎵浠ヨ鍏堣皟鐢↖nitCommonControlsEx()鐨勫嚱 鏁般傝鍑芥暟鏈変竴涓噸瑕佺殑鍙傛暟鍐沖畾浜嗗Toolbar鐨勬敮鎸?瀹冪殑涓昏浣滅敤鏄敞鍐孴oolbar紿楀彛,浠?渚垮湪浠ュ悗鐨勭▼搴忎腑鍒朵綔榪欑紿楀彛,鑰屾櫘閫氱殑宸ュ叿鏉″垯瑕佽皟鐢↖nitCommandControls()銆傞渶瑕佹敞鎰忕殑鏄繖涓や釜鍑芥暟鐨勫啓娉曘?<br /><br />INITCOMMONCONTROLSEX icex; <br />DWORD dwStyle; <br />icex.dwSize = sizeof(INITCOMMONCONTROLSEX); <br /><br />//娉ㄦ剰涓嬮潰榪欎袱涓弬鏁板喅瀹氫簡鏄惁娉ㄥ唽Toolbar <br /><br />icex.dwICC=ICC_COOL_CLASSES|ICC_BAR_ CLASSES; <br />InitCommonControlsEx(錛唅cex); <br /><br /><br /><br />銆銆鐒跺悗灝卞彲浠ヨ皟鐢–reateWindowEx榪欎釜鍑芥暟鏉ュ緩绔婽oolbar紿楀彛: <br /><br />HWND hwndTB = CreateWindowEx( <br />WS_EX_TOOLWINDOW, //鎵╁睍宸ュ叿鏉¢鏍?<br />TOOLBARCLASSNAME, //Toolbar綾誨悕 <br />NULL, <br />WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT錛?//紿楀彛椋庢牸 <br />0,0,0,0, //澶у皬 <br />AfxGetApp()錛嶏紴GetMainWnd(), //鐖剁獥鍙e悕 <br />NULL, <br />AfxGetInstanceHandle(), //瀹炰緥 <br />NULL); <br /><br /><br /><br />銆銆鍒ゆ柇涓涓嬬獥鍙e彞鏌?濡傛灉涓嶄負絀?灝辮〃紺虹獥鍙e緩绔嬫垚鍔熴傛鏃剁殑Toolbar涓嶈繃鏄竴涓┖絀虹殑紿楀彛錛屾垜浠彲浠ユ牴鎹渶瑕佸悜閲岄潰娣誨姞鎸夐挳銆傚悜Toolbar 涓坊鍔犳寜閽槸閫氳繃鍚戝畠鍙戦佹秷鎭潵 瀹炵幇鐨?浠ヤ笅榪囩▼涓庡埗浣滀紶緇熺殑宸ュ叿鏉″熀鏈竴鑷淬傞鍏?寤虹珛涓涓狪mageList鎺т歡,鐒跺悗閫氳繃瀹氫箟鎸夐挳鐨勬暟鎹粨鏋勬潵紜畾姣忎釜鎸夐挳鐨勭被鍨嬨?<br />// 寤虹珛涓涓狪magelist 鎺т歡, <br /><br />HWND himl; <br />//MYICON_CX,MYICON_CY鏄瘡涓寜閽殑澶у皬 <br />himl= ImageList_Create(MYICON_CX,MYICON_CY,ILC_COLOR4,0,4); <br /><br />//鍔犲叆浜嬪厛浣滃ソ鐨勫伐鍏鋒潯浣嶅浘IDB_BITMAP2 <br />ImageList_Add( himl, <br />LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP2)),NULL); <br /><br />//閫氳繃娑堟伅鎶婁綅鍥懼姞鍏ュ埌Toolbar涓?<br />SendMessage(hwndTB, TB_SETIMAGELIST, 0, (LPARAM)himl); <br /><br />銆銆涓嬮潰鍔犲叆5涓櫘閫氱殑鎸夐挳: <br /><br />TBBUTTON tbArray[5]; //鎸夐挳鐨勬暟鎹粨鏋?<br />for(i=0;i錛?;i錛嬶紜)<br />{ <br />tbArray[i].iBitmap = i; //絎琲涓綅鍥?<br />tbArray[i].idCommand = IDM_BUTTONSTART錛媔; <br />//鍛戒護ID <br />tbArray[i].fsState = TBSTATE_ENABLED; <br />tbArray[i].fsStyle = TBSTYLE_BUTTON; <br />//鎸夐挳椋庢牸 <br />tbArray[i].dwData = 0; <br />tbArray[i].iString = i; //鏄劇ず鐨勫瓧絎︿覆 <br />} <br /><br />//璁劇疆鎸夐挳緇撴瀯鐨勫ぇ灝?<br /><br />::SendMessage(hwndTB,TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); <br />//娣誨姞鎸夐挳鍒癟oolbar涓?<br />::SendMessage(hwndTB,TB_ADDBUTTONS,(UINT)5, (LPARAM)tbArray); <br /><br /><br /><br />銆銆鑷蟲,涓涓緢閰風殑宸ュ叿鏉″熀鏈笂鍒朵綔瀹屾垚,鏈鍚庡啀璋冪敤鍑芥暟ShowWindow()鍗沖彲: ShowWindow(hwndTB, SW_SHOWMAXIMIZED); <br /><br />銆銆褰撶偣鍑繪寜閽椂,Toolbar灝辨妸娑堟伅浼犻佸埌鐖剁獥鍙d腑,鐢辯埗紿楀彛鍝嶅簲娑堟伅銆俆oolbar涓寜閽殑ID鍖呭惈鍦ㄦ秷鎭嚱鏁扮殑wParam鍙傛暟涓?鍙互璁劇疆 瀹冩潵璋冨害涓嶅悓鐨勬ā鍧椼傝繖鏃跺彲浠ラ噸杞界埗紿楀彛鐨凮 nCommand()鍑芥暟,鏍規嵁wParam鍙傛暟鍒ゆ柇鐐瑰嚮浜嗗摢涓寜閽傚亣瀹氱埗紿楀彛鏄富紿楀彛妗嗘灦,浠g爜濡備笅: <br /><br />BOOL CMainFrame::OnCommand(WPARAM wParam,LPARAM lParam) <br />{ <br />switch(wParam)<br />{ <br />case IDM_BUTTONSTART錛?: <br />AfxMessageBox(鈥滀綘鐐逛腑浜嗙涓涓寜閽?!", MB_ICONINFORMATION); <br />break; <br />case IDM_BUTTONSTART錛?: <br />AfxMessageBox(鈥滀綘鐐逛腑浜嗙浜屼釜鎸夐挳!!",MB_ICONINFORMATION); <br />break; <br />case IDM_BUTTONSTART錛?: <br />AfxMessageBox(鈥滀綘鐐逛腑浜嗙涓変釜鎸夐挳!!", MB_ICONINFORMATION); <br />break; <br />} <br />return CMainFrame::OnCommand(wParam,lParam); <br />} <br /><br />Visual C++ 鐗堟湰6涓伐鍏鋒潯鐨勬柊鐗硅壊 <br /><br />Dave Schmi<br /><br /><br />銆銆寰蔣鍦╳ww.microsoft.com/visualc宸茬粡鎺ㄥ嚭Visual C++6.0棰勮鐗堝嚑涓湀浜嗐傛寮忕増棰勮鍒頒粖騫村勾搴曞彂甯冦傚悓鏃訛紝棰勮鐗堟樉紺哄嚭鐗堟湰6灝嗗寘鍚ぇ閲忕殑鏀硅繘鍜屾彁楂橈紝鍖呮嫭鏀寔Internet鎺т歡,渚嬪鎵佸鉤宸ュ叿 鏉$瓑銆傝櫧鐒舵敼榪涚殑鎺т歡鍖呬笌Internet鏃犲叧錛屼絾瀹冮鍏堝嚭鐜板湪Internet Explorer涓紝鍥犳瀹冨氨琚彇鍋氳繖涓悕瀛椾簡銆備簨瀹炰笂錛屽畼鏂瑰彂甯冪殑棰勮鐗堢殑鏍囬鏄滈拡瀵笽nternet Explorer 4.0鐨刅isual C++ 5.0鎶鏈瑙堚濄?br /><br />銆銆鍦ㄤ互鍓嶅叧浜嶮FC宸ュ叿鏉$被鐨勮璁轟笓棰樹腑錛屾垜鏇劇瓟搴旀彁渚涗竴涓湪鐗堟湰6涓伐鍏鋒潯鐨勫瑙傛紨紺恒傛湁涓涓緢濂界殑娑堟伅錛岄偅灝辨槸浣犵幇鍦ㄧ敤CToolBar鎵浣滅殑鎵鏈?宸ヤ綔鍦ㄦ柊鐨勭増鏈腑閮芥槸鏈夋晥鐨勶紝鍖呮嫭閭d簺鍦ㄤ互鍓嶇殑鏍忕洰涓墍鎻忚堪鐨勪竴浜涙墿灞曞姛鑳姐傚洜姝わ紝浣犲皢寰堝鏄撲慨鏀圭幇瀛樼殑紼嬪簭浠ヨ幏寰楄薄Internet Explorer鍜孷isual Studio涓偅鏍封滈叿鈥濈殑鐣岄潰銆傛澶栵紝騫舵病鏈変粈涔堝潖娑堟伅銆?br /><br />宸ュ叿鏉$殑鏂扮壒鑹?br /><br />銆銆鏃╁湪鐗堟湰4涓紝CToolBar灝卞凡琚玀FC搴撳畬鍏ㄥ疄鐜頒簡銆備竴鏃﹀叕鐢ㄦ帶浠跺姩鎬侀摼鎺ュ簱錛堝懡鍚嶄負comctl32.dll錛夊彉寰楁棤鎵涓嶅湪浜嗭紝 CToolBar灝辨垚浜嗗浠婂凡鍖呭惈鍦ㄦ搷浣滅郴緇熶腑鐨勫伐鍏鋒潯鎺т歡鐨勪唬鍚嶈瘝浜嗐傜劧鑰岋紝CToolBar騫舵病鏈夋彮紺哄叕鐢ㄥ伐鍏鋒潯鎺т歡鐨勬墍鏈夎兘鍔涖傚浠婏紝閫氳繃 CreateEx()鍑芥暟錛屽畠鎴愬姛浜嗐?br /><br />銆銆鍏敤鎺т歡鍔ㄦ侀摼鎺ュ簱鐜板湪鍖呭惈浜嗚嚦灝戜笁綾婚鏍鹼細鏈鍒濈殑銆佸湪Internet Explorer3.0涓姞鍏ョ殑浠ュ強鍦↖nternet Explorer 4.0涓姞鍏ョ殑銆傝櫧鐒惰繖浜涚増鏈悊璁轟笂鏄悜涓嬪吋瀹圭殑錛屼絾鏌愪簺涓撲笟浜哄憳鏇懼啓鍑轟竴浜涗笉鑳藉湪鍚庢潵鐗堟湰涓甯歌繍琛岀殑搴旂敤紼嬪簭錛岃繖鍙兘鏄繖浜涚▼搴忛噰鐢ㄤ簡涓浜涙病鏈夊叕寮鐨?鍔熻兘錛岃岃繖浜涘姛鑳藉茍娌℃湁琚寘鍚湪鎵鏈夌殑鐗堟湰涓?<br /><br />銆銆Visual C++紼嬪簭鍛樻病鏈夎繖鏍風殑緇忓巻錛屽洜涓哄湪Visual C++4.0鎴?.0涓璫omctl32.dll騫朵笉鏄竴涓彲浠ュ啀鍒嗗彂鐨勭粍浠訛紝瀹冨湪瀹夎Internet Explorer鏃惰鏇存柊錛屽洜姝FC紼嬪簭鍛樻棤娉曚緷闈犳渶鏂扮増鏈殑鏌愪簺鍔熻兘鏉ョ敤浜庝粬浠殑紼嬪簭銆傝繖灝辨槸CToolBar浠呬粎鍏鋒湁鏈鍒濈殑DLL鐨勬湁闄愬姛鑳界殑鍘?鍥犮侰ToolBar鑳藉瀹炵幇鏈鏂扮殑鐗硅壊鎰忓懗鐫寰蔣灝嗗湪Visual C++6.0涓寘鍚渶鏂扮殑DLL騫跺皢鍏朵綔涓轟竴涓彲浠ュ啀鍒嗗彂鐨勭粍浠躲?br /><br />銆銆緇濆ぇ澶氭暟鏂扮壒鑹插皢鐢卞湪璋冪敤CreateEx()鍜屽叾瀹僀ToolBar鎴愬憳鍑芥暟鏃舵寚瀹氱殑鏂扮殑椋庢牸鏍囧織鏉ョ‘瀹氥備笅闈㈡槸commctrl.h鐨勪竴閮ㄥ垎錛屽畠瀹氫箟浜員BSTYLE綾繪爣璇嗙錛?br /><br /><br />#define TBSTYLE_BUTTON 0x0000<br />#define TBSTYLE_SEP 0x0001<br />#define TBSTYLE_CHECK 0x0002<br />#define TBSTYLE_GROUP 0x0004<br />#define TBSTYLE_CHECKGROU TBSTYLE_GROUP | TBSTYLE_CHECK)<br />#if (_WIN32_IE $#@62;= 0x0300)<br />銆銆#define TBSTYLE_DROPDOWN 0x0008<br />#endif<br />#if (_WIN32_IE $#@62;= 0x0400)<br />銆銆#define TBSTYLE_AUTOSIZE 0x0010<br />銆銆#define TBSTYLE_NOPREFIX 0x0020 <br />#endif<br /><br />#define TBSTYLE_TOOLTIPS 0x0100<br />#define TBSTYLE_WRAPABLE 0x0200<br />#define TBSTYLE_ALTDRAG 0x0400<br />#if (_WIN32_IE $#@62;= 0x0300)<br />銆銆#define TBSTYLE_FLAT 0x0800<br />銆銆#define TBSTYLE_LIST 0x1000<br />銆銆#define TBSTYLE_CUSTOMERASE 0x2000<br />#endif<br />#if (_WIN32_IE $#@62;= 0x0400)<br />銆銆#define TBSTYLE_REGISTERDROP 0x4000<br />銆銆#define TBSTYLE_TRANSPARENT 0x8000<br />銆銆#define TBSTYLE_EX_DRAWDDARROWS 0x00000001<br />#endif<br /><br /><br /><br />銆銆浣犱細娉ㄦ剰鍒板叾涓殑涓浜涢噰鐢ㄤ簡鏉′歡緙栬瘧錛屼緷璧栦簬_WIN32_IE鐨勫鹼紝瀹冪己鐪佹寚鐨勬槸Internet Explorer 4.0錛堝嵆鍙栧間負0x0400錛夈傚浜嶪nternet Explorer 3.0錛堝嵆鍙栧間負0x0300錛変互鍓嶇殑鐗堟湰錛屽ぇ澶氭暟鐨凾BSTYLE鏍囪瘑絎︽寚鐨勬槸鎸夐挳鎴栨槸涓緇勬寜閽侷nternet Explorer3.0寮曞叆浜嗘墎騫抽挳銆佹枃鏈爣絳俱佷笅鎷夊垪琛ㄥ拰鑷畾涔夌粯鍒躲侷nternet Explorer 4.0澧炲己浜嗕笅鎷夊垪琛ㄥ拰鑷畾涔夌粯鍒跺姛鑳斤紝騫朵笖澧炲姞浜嗘敮鎸丱LE鎷栧姩鐩爣鍒頒竴涓伐鍏鋒潯銆?br /><br />鎵佸鉤閽拰鎶婃墜<br /><br />銆銆鍦ㄨ繃鍘葷殑18涓湀涓垜甯稿父琚棶鍙婅濡備綍鑾峰緱璞nternet Explorer鍜孷isual Studio涓殑宸ュ叿鏉′竴鏍蜂笉浣跨敤嫻洉鎸夐挳鑰屾槸鐢ㄦ墎騫抽挳騫朵笖甯︽湁渚夸簬縐誨姩鍜屽畾浣嶇殑鎶婃墜閭f牱閰風殑鐣岄潰銆傝繖浜涚壒鑹插茍涓嶈MFC鎵鏀寔錛屽洜姝ゆ渶綆鍗曡幏鍙栫殑鏂規硶灝?鏄喘涔頒竴涓墿灞曞簱銆傝屽浜嶸isual C++ 6.0鏉ヨ鍗存棤欏誨姝や竴涓撅紝鍥犱負瀹冧嬌寰桟ToolBar綾誨疄鐜頒簡瀵規墎騫抽挳銆佹妸鎵嬪拰鍏跺畠鏂扮殑瑙嗚鏁堟灉鐨勬敮鎸併?br /><br />銆銆鍦ㄩ瑙堢増涓紝AppWizard騫朵笉浼氳嚜鍔ㄥ寘鎷繖浜涙柊鐗硅壊錛屼絾瀹冧滑鍗村緢瀹規槗琚姞鍏ャ傝〃1鏄劇ず浜咥ppWizard鍒涘緩鐨勪富妗嗘灦紿楀彛鐨凮nCreate ()鍑芥暟錛岃〃2鏄劇ず浜嗛渶瑕佸仛鍝簺淇敼浠ヨ幏寰楀叿鏈夋墎騫抽挳鍜屾妸鎵嬬殑宸ュ叿鏉°傚浘1鏄劇ず浜嗚〃1鍒涘緩鍑虹殑宸ュ叿鏉★紝鑰屽浘2鏄劇ず鍑轟簡琛?瀹炵幇鐨勫伐鍏鋒潯銆?<br /><br /><br />琛?1: CMainFrame::OnCreate as generated by AppWizard<br />int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<br />{<br />if(CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)<br />銆銆return -1;<br /><br />if(!m_wndToolBar.Create(this)||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))<br />銆銆{<br />銆銆銆TRACE0("Failed to create toolbar\n");<br />銆銆銆return -1; // fail to create<br />銆銆}<br /><br />if(!m_wndStatusBar.Create(this) ||<br />銆銆!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators))) <br />銆銆鍥? <br />琛?: Adding flat buttons and the gripper<br />int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<br />{<br />if(CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)<br />銆銆return -1;<br /><br />if(!m_wndToolBar.CreateEx(this)||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))<br />銆銆{<br />銆銆銆TRACE0("Failed to create toolbar\n");<br />銆銆銆return -1; // fail to create<br />銆銆}<br /><br />if(!m_wndStatusBar.Create(this)||!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))<br />{<br />TRACE0("Failed to create status bar\n");<br />return -1; // fail to create<br />}<br /><br />// TODO: Remove this if you dont want tool tips or a resizeable toolbar<br />m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |<br />CBRS_GRIPPER | CBRS_BORDER_3D | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);<br /><br />// TODO: Delete these three lines if you dont want the toolbar to<br />// be dockable<br />m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);<br />EnableDocking(CBRS_ALIGN_ANY);<br />DockControlBar(&m_wndToolBar);<br /><br />return 0;<br />} <br />鍥? <br /><br />銆銆涓轟簡浣滃嚭鎵佸鉤鎸夐挳鎴戝繀欏諱嬌鐢–reateEx()鏉ヤ唬鏇緾reate()銆傝繖涓柊鐨勫嚱鏁板湪afxext.h涓0鏄庯細<br /><br />BOOL CreateEx<br />(<br />CWnd* pParentWnd, // parent window<br />DWORD dwCtrlStyle = TBSTYLE_FLAT, // extended style<br />DWORD dwStyle = // style<br />WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,<br />CRect rcBorders = CRect(0,0,0,0), // border rectangle<br />UINT nID = AFX_IDW_TOOLBAR // identifier<br />); <br /><br /><br />銆銆鍥犱負鎵╁睍椋庢牸緙虹渷鎸囩殑灝辨槸TBSTYLE_FLAT錛屽洜姝ゆ垜瑕佸緱鍒版墎騫蟲寜閽氨鍙渶瑕佺畝鍗曞湴灝咥ppWizard褰㈡垚鐨勪唬鐮佷腑鐨凜reate()鏀逛負 CreateEx()鍗沖彲銆傛垜灝嗗湪鍚庨潰瀹炵幇鍏跺畠鐨勬墿灞曢鏍箋備負浜嗚幏寰楁妸鎵嬶紝鎴戝繀欏誨湪璋冪敤SetBarStyle()鍑芥暟鏃跺寘鍚獵BRS_GRIPPER鏍?蹇楋紝鍙傜湅琛?銆傝繖鏄疌ControlBar綾葷殑涓涓柊椋庢牸錛岃孋ToolBar綾繪槸浠庡畠緇ф壙鑰屾潵鐨勩傝娉ㄦ剰鍒版垜涔熷姞鍏ヤ簡CBRS_BORDER_3D鏍?蹇楋紝榪欐槸涓轟簡淇涓涓湭鐭ョ殑緇樺埗闂錛岃闂灝嗕細鍦ㄥ伐鍏鋒潯鐨勮竟緙樼粯鍒朵竴浜涘浣欑殑鐐廣傝繖涔熻鎰忓懗鐫棰勮鐗堢‘瀹炴湁榪欎釜闂錛屽洜涓轟竴鏃︽垜灝?D鏍囧織鍔犲叆灝辯珛鍗寵В 鍐充簡騫朵笖涔熶技涔庢病鏈夊獎鍝嶅埌鍒殑浠涔堛?br /><br />銆銆涓婇潰鎵浣滅殑涓や釜綆鍗曠殑鏀瑰彉鏄嬌寰椾竴涓凡瀛樼▼搴忚幏寰楅叿鐣岄潰鐨勬渶鐪佸姏鐨勬柟娉曘傚湪涓涓▼搴忓叿鏈変簡鎵佸鉤閽拰鎶婃墜鐨勫悓鏃訛紝瀹冧篃涓嶄細鍙戠敓涓嶅簲鏈夌殑鍏跺畠鏀瑰彉銆?br /><img src ="http://m.shnenglu.com/weiyan/aggbug/9502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/weiyan/" target="_blank">will</a> 2006-07-06 19:03 <a href="http://m.shnenglu.com/weiyan/archive/2006/07/06/9502.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> C/C+璇█struct娣卞眰鎺㈢儲http://m.shnenglu.com/weiyan/archive/2006/07/06/9500.htmlwillwillThu, 06 Jul 2006 10:42:00 GMThttp://m.shnenglu.com/weiyan/archive/2006/07/06/9500.htmlhttp://m.shnenglu.com/weiyan/comments/9500.htmlhttp://m.shnenglu.com/weiyan/archive/2006/07/06/9500.html#Feedback0http://m.shnenglu.com/weiyan/comments/commentRss/9500.htmlhttp://m.shnenglu.com/weiyan/services/trackbacks/9500.html C/C+璇█struct娣卞眰鎺㈢儲

鍑哄錛歅Conline

1. struct鐨勫法澶т綔鐢?br />銆銆闈㈠涓涓漢鐨勫ぇ鍨婥/C++紼嬪簭鏃訛紝鍙湅鍏跺struct鐨勪嬌鐢ㄦ儏鍐墊垜浠氨鍙互瀵瑰叾緙栧啓鑰呯殑緙栫▼緇忛獙榪涜璇勪及銆傚洜涓轟竴涓ぇ鍨嬬殑C/C++紼嬪簭錛屽娍蹇呰娑夊強涓浜?鐢氳嚦澶ч噺)榪涜鏁版嵁緇勫悎鐨勭粨鏋勪綋錛岃繖浜涚粨鏋勪綋鍙互灝嗗師鏈剰涔夊睘浜庝竴涓暣浣撶殑鏁版嵁緇勫悎鍦ㄤ竴璧楓備粠鏌愮紼嬪害涓婃潵璇達紝浼氫笉浼氱敤struct錛屾庢牱鐢╯truct鏄尯鍒竴涓紑鍙戜漢鍛樻槸鍚﹀叿澶囦赴瀵屽紑鍙戠粡鍘嗙殑鏍囧織銆?/font>

銆銆鍦ㄧ綉緇滃崗璁侀氫俊鎺у埗銆佸祵鍏ュ紡緋葷粺鐨凜/C++緙栫▼涓紝鎴戜滑緇忓父瑕佷紶閫佺殑涓嶆槸綆鍗曠殑瀛楄妭嫻侊紙char鍨嬫暟緇勶級錛岃屾槸澶氱鏁版嵁緇勫悎璧鋒潵鐨勪竴涓暣浣擄紝鍏惰〃鐜板艦寮忔槸涓涓粨鏋勪綋銆?/font>

銆銆緇忛獙涓嶈凍鐨勫紑鍙戜漢鍛樺線寰灝嗘墍鏈夐渶瑕佷紶閫佺殑鍐呭渚濋『搴忎繚瀛樺湪char鍨嬫暟緇勪腑錛岄氳繃鎸囬拡鍋忕Щ鐨勬柟娉曚紶閫佺綉緇滄姤鏂囩瓑淇℃伅銆傝繖鏍峰仛緙栫▼澶嶆潅錛屾槗鍑洪敊錛岃屼笖涓鏃︽帶鍒舵柟寮忓強閫氫俊鍗忚鏈夋墍鍙樺寲錛岀▼搴忓氨瑕佽繘琛岄潪甯哥粏鑷寸殑淇敼銆?/font>

銆銆涓涓湁緇忛獙鐨勫紑鍙戣呭垯鐏墊椿榪愮敤緇撴瀯浣擄紝涓句竴涓緥瀛愶紝鍋囪緗戠粶鎴栨帶鍒跺崗璁腑闇瑕佷紶閫佷笁縐嶆姤鏂囷紝鍏舵牸寮忓垎鍒負packetA銆乸acketB銆乸acketC錛?/font>

struct structA
{
int a;
char b;
};

struct structB
{
char a;
short b;
};

struct structC
{
int a;
char b;
float c;
}
銆銆浼樼鐨勭▼搴忚璁¤呰繖鏍瘋璁′紶閫佺殑鎶ユ枃錛?/font>

struct CommuPacket
{
int iPacketType;銆銆//鎶ユ枃綾誨瀷鏍囧織
union銆銆銆銆銆銆//姣忔浼犻佺殑鏄笁縐嶆姤鏂囦腑鐨勪竴縐嶏紝浣跨敤union
{
聽 struct structA packetA;
聽 struct structB packetB;
聽 struct structC packetC;
}
};
銆銆鍦ㄨ繘琛屾姤鏂囦紶閫佹椂錛岀洿鎺ヤ紶閫乻truct CommuPacket涓涓暣浣撱?/font>

銆銆鍋囪鍙戦佸嚱鏁扮殑鍘熷艦濡備笅錛?/font>

// pSendData錛氬彂閫佸瓧鑺傛祦鐨勯鍦板潃錛宨Len錛氳鍙戦佺殑闀垮害
Send(char * pSendData, unsigned int聽 iLen);
鍙戦佹柟鍙互鐩存帴榪涜濡備笅璋冪敤鍙戦乻truct CommuPacket鐨勪竴涓疄渚媠endCommuPacket錛?br />Send( (char *)&sendCommuPacket , sizeof(CommuPacket) );
鍋囪鎺ユ敹鍑芥暟鐨勫師褰㈠涓嬶細
// pRecvData錛氬彂閫佸瓧鑺傛祦鐨勯鍦板潃錛宨Len錛氳鎺ユ敹鐨勯暱搴?br />//榪斿洖鍊鹼細瀹為檯鎺ユ敹鍒扮殑瀛楄妭鏁?br />unsigned int Recv(char * pRecvData, unsigned int聽 iLen)錛?br />銆銆鎺ユ敹鏂瑰彲浠ョ洿鎺ヨ繘琛屽涓嬭皟鐢ㄥ皢鎺ユ敹鍒扮殑鏁版嵁淇濆瓨鍦╯truct CommuPacket鐨勪竴涓疄渚媟ecvCommuPacket涓細

Recv( (char *)&recvCommuPacket , sizeof(CommuPacket) );
銆銆鎺ョ潃鍒ゆ柇鎶ユ枃綾誨瀷榪涜鐩稿簲澶勭悊錛?/font>

switch(recvCommuPacket. iPacketType)
{
聽聽聽 case PACKET_A:
聽聽聽 鈥β犅犅?//A綾繪姤鏂囧鐞?br />聽聽聽 break;
聽聽聽 case PACKET_B:
聽聽聽 鈥︺聽 //B綾繪姤鏂囧鐞?br />聽聽聽 break;
聽聽聽 case PACKET_C:
聽聽聽 鈥β犅?//C綾繪姤鏂囧鐞?br />聽聽聽 break;
}
銆銆浠ヤ笂紼嬪簭涓渶鍊煎緱娉ㄦ剰鐨勬槸

Send( (char *)&sendCommuPacket , sizeof(CommuPacket) );
Recv( (char *)&recvCommuPacket , sizeof(CommuPacket) );
銆銆涓殑寮哄埗綾誨瀷杞崲錛?char *)&sendCommuPacket銆?char *)&recvCommuPacket錛屽厛鍙栧湴鍧錛屽啀杞寲涓篶har鍨嬫寚閽堬紝榪欐牱灝卞彲浠ョ洿鎺ュ埄鐢ㄥ鐞嗗瓧鑺傛祦鐨勫嚱鏁般?/font>

銆銆鍒╃敤榪欑寮哄埗綾誨瀷杞寲錛屾垜浠繕鍙互鏂逛究紼嬪簭鐨勭紪鍐欙紝渚嬪瑕佸sendCommuPacket鎵澶勫唴瀛樺垵濮嬪寲涓?錛屽彲浠ヨ繖鏍瘋皟鐢ㄦ爣鍑嗗簱鍑芥暟memset()錛?/font>

memset((char *)&sendCommuPacket,0, sizeof(CommuPacket));

2. struct鐨勬垚鍛樺榻?br />銆銆Intel銆佸井杞瓑鍏徃鏇劇粡鍑鴻繃涓閬撶被浼肩殑闈㈣瘯棰橈細
1. #include <iostream.h>
2. #pragma pack(8)
3. struct example1
4. {
5. short a;
6. long b;
7. };
8. struct example2
9. {
10. char c;
11. example1 struct1;
12. short e;聽聽聽
13. };
14. #pragma pack()
15. int main(int argc, char* argv[])
16. {
17. example2 struct2;
18. cout << sizeof(example1) << endl;
19. cout << sizeof(example2) << endl;
20. cout << (unsigned int)(&struct2.struct1) - (unsigned int)(&struct2) << endl;
21. return 0;
22. }
銆銆闂▼搴忕殑杈撳叆緇撴灉鏄粈涔堬紵
銆銆絳旀鏄細
8
16
4
銆銆涓嶆槑鐧斤紵榪樻槸涓嶆槑鐧斤紵涓嬮潰涓涓閬撴潵錛?br />2.1 鑷劧瀵圭晫
銆銆struct鏄竴縐嶅鍚堟暟鎹被鍨嬶紝鍏舵瀯鎴愬厓绱犳棦鍙互鏄熀鏈暟鎹被鍨嬶紙濡俰nt銆乴ong銆乫loat絳夛級鐨勫彉閲忥紝涔熷彲浠ユ槸涓浜涘鍚堟暟鎹被鍨嬶紙濡俛rray銆乻truct銆乽nion絳夛級鐨勬暟鎹崟鍏冦傚浜庣粨鏋勪綋錛岀紪璇戝櫒浼氳嚜鍔ㄨ繘琛屾垚鍛樺彉閲忕殑瀵歸綈錛屼互鎻愰珮榪愮畻鏁堢巼銆傜己鐪佹儏鍐典笅錛岀紪璇戝櫒涓虹粨鏋勪綋鐨勬瘡涓垚鍛樻寜鍏惰嚜鐒跺鐣岋紙natural alignment錛夋潯浠跺垎閰嶇┖闂淬傚悇涓垚鍛樻寜鐓у畠浠澹版槑鐨勯『搴忓湪鍐呭瓨涓『搴忓瓨鍌紝絎竴涓垚鍛樼殑鍦板潃鍜屾暣涓粨鏋勭殑鍦板潃鐩稿悓銆?br />銆銆鑷劧瀵圭晫(natural alignment)鍗抽粯璁ゅ榻愭柟寮忥紝鏄寚鎸夌粨鏋勪綋鐨勬垚鍛樹腑size鏈澶х殑鎴愬憳瀵歸綈銆?br />銆銆渚嬪錛?br />struct naturalalign
{
char a;
short b;
char c;
};
銆銆鍦ㄤ笂榪扮粨鏋勪綋涓紝size鏈澶х殑鏄痵hort錛屽叾闀垮害涓?瀛楄妭錛屽洜鑰岀粨鏋勪綋涓殑char鎴愬憳a銆乧閮戒互2涓哄崟浣嶅榻愶紝sizeof(naturalalign)鐨勭粨鏋滅瓑浜?錛?br />銆銆濡傛灉鏀逛負錛?br />struct naturalalign
{
char a;
int b;
char c;
};
銆銆鍏剁粨鏋滄樉鐒朵負12銆?/font>

2.2鎸囧畾瀵圭晫
銆銆涓鑸湴錛屽彲浠ラ氳繃涓嬮潰鐨勬柟娉曟潵鏀瑰彉緙虹渷鐨勫鐣屾潯浠訛細
銆銆路 浣跨敤浼寚浠?pragma pack (n)錛岀紪璇戝櫒灝嗘寜鐓涓瓧鑺傚榻愶紱
銆銆路 浣跨敤浼寚浠?pragma pack ()錛屽彇娑堣嚜瀹氫箟瀛楄妭瀵歸綈鏂瑰紡銆?br />銆銆娉ㄦ剰錛氬鏋?pragma pack (n)涓寚瀹氱殑n澶т簬緇撴瀯浣撲腑鏈澶ф垚鍛樼殑size錛屽垯鍏朵笉璧蜂綔鐢紝緇撴瀯浣撲粛鐒舵寜鐓ize鏈澶х殑鎴愬憳榪涜瀵圭晫銆?br />銆銆渚嬪錛?br />#pragma pack (n)
struct naturalalign
{
char a;
int b;
char c;
};
#pragma pack ()
銆銆褰搉涓?銆?銆?6鏃訛紝鍏跺榻愭柟寮忓潎涓鏍鳳紝sizeof(naturalalign)鐨勭粨鏋滈兘絳変簬12銆傝屽綋n涓?鏃訛紝鍏跺彂鎸ヤ簡浣滅敤錛屼嬌寰梥izeof(naturalalign)鐨勭粨鏋滀負8銆?br />銆銆鍦╒C++ 6.0緙栬瘧鍣ㄤ腑錛屾垜浠彲浠ユ寚瀹氬叾瀵圭晫鏂瑰紡錛屽叾鎿嶄綔鏂瑰紡涓轟緷嬈¢夋嫨projetct > setting > C/C++鑿滃崟錛屽湪struct member alignment涓寚瀹氫綘瑕佺殑瀵圭晫鏂瑰紡銆?br />銆銆鍙﹀錛岄氳繃__attribute((aligned (n)))涔熷彲浠ヨ鎵浣滅敤鐨勭粨鏋勪綋鎴愬憳瀵歸綈鍦╪瀛楄妭杈圭晫涓婏紝浣嗘槸瀹冭緝灝戣浣跨敤錛屽洜鑰屼笉浣滆緇嗚瑙c?/font>

2.3 闈㈣瘯棰樼殑瑙g瓟
銆銆鑷蟲錛屾垜浠彲浠ュIntel銆佸井杞殑闈㈣瘯棰樿繘琛屽叏闈㈢殑瑙g瓟銆?br />銆銆紼嬪簭涓2琛?pragma pack (8)铏界劧鎸囧畾浜嗗鐣屼負8錛屼絾鏄敱浜巗truct example1涓殑鎴愬憳鏈澶ize涓?錛坙ong鍙橀噺size涓?錛夛紝鏁卻truct example1浠嶇劧鎸?瀛楄妭瀵圭晫錛宻truct example1鐨剆ize涓?錛屽嵆絎?8琛岀殑杈撳嚭緇撴灉錛?br />銆銆struct example2涓寘鍚簡struct example1錛屽叾鏈韓鍖呭惈鐨勭畝鍗曟暟鎹垚鍛樼殑鏈澶ize涓?錛坰hort鍙橀噺e錛夛紝浣嗘槸鍥犱負鍏跺寘鍚簡struct example1錛岃宻truct example1涓殑鏈澶ф垚鍛榮ize涓?錛宻truct example2涔熷簲浠?瀵圭晫錛?pragma pack (8)涓寚瀹氱殑瀵圭晫瀵箂truct example2涔熶笉璧蜂綔鐢紝鏁?9琛岀殑杈撳嚭緇撴灉涓?6錛?br />銆銆鐢變簬struct example2涓殑鎴愬憳浠?涓哄崟浣嶅鐣岋紝鏁呭叾char鍙橀噺c鍚庡簲琛ュ厖3涓┖錛屽叾鍚庢墠鏄垚鍛榮truct1鐨勫唴瀛樼┖闂達紝20琛岀殑杈撳嚭緇撴灉涓?銆?br />



will 2006-07-06 18:42 鍙戣〃璇勮
]]>
UML 涓昏鐨勫嚑縐嶅浘http://m.shnenglu.com/weiyan/archive/2006/07/06/9497.htmlwillwillThu, 06 Jul 2006 10:21:00 GMThttp://m.shnenglu.com/weiyan/archive/2006/07/06/9497.htmlhttp://m.shnenglu.com/weiyan/comments/9497.htmlhttp://m.shnenglu.com/weiyan/archive/2006/07/06/9497.html#Feedback0http://m.shnenglu.com/weiyan/comments/commentRss/9497.htmlhttp://m.shnenglu.com/weiyan/services/trackbacks/9497.html

Class Diagrams
Class diagrams are the backbone of almost every object oriented method, including UML. They describe the static structure of a system.

Object Diagrams
Object diagrams describe the static structure of a system at a particular time. They can be used to test class diagrams for accuracy.


Use Case Diagrams
Use case diagrams model the functionality of system using actors and use cases.



Activity Diagrams
Activity diagrams illustrate the dynamic nature of a system by modeling the flow of control from activity to activity. An activity represents an operation on some class in the system that results in a change in the state of the system. Typically, activity diagrams are used to model workflow or business processes and internal operation.


Sequence Diagrams
Sequence diagrams describe interactions among classes in terms of an exchange of messages over time.



Collaboration Diagrams
Collaboration diagrams represent interactions between objects as a series of sequenced messages. Collaboration diagrams describe both the static structure and the dynamic behavior of a system.


Statechart Diagrams
Statechart diagrams describe the dynamic behavior of a system in response to external stimuli. Statechart diagrams are especially useful in modeling reactive objects whose states are triggered by specific events.


Component Diagrams
Component diagrams describe the organization of physical software components, including source code, run-time (binary) code, and executables.


Deployment Diagrams
Deployment diagrams depict the physical resources in a system, including nodes, components, and connections.


Package Diagrams
Package diagrams are a subset of class diagrams, but developers sometimes treat them as a separate technique. Package diagrams organize elements of a system into related groups to minimize dependencies between packages

will 2006-07-06 18:21 鍙戣〃璇勮
]]>
鏁版嵁搴撲腑瀛樺彇BMP鍥懼儚http://m.shnenglu.com/weiyan/archive/2006/07/06/9482.htmlwillwillThu, 06 Jul 2006 03:56:00 GMThttp://m.shnenglu.com/weiyan/archive/2006/07/06/9482.htmlhttp://m.shnenglu.com/weiyan/comments/9482.htmlhttp://m.shnenglu.com/weiyan/archive/2006/07/06/9482.html#Feedback1http://m.shnenglu.com/weiyan/comments/commentRss/9482.htmlhttp://m.shnenglu.com/weiyan/services/trackbacks/9482.html浜岃繘鍒跺ぇ瀵硅薄BLOB(Binary Large Object)
鍏跺瓨鍙栫殑鏂瑰紡涓庢櫘閫氭暟鎹湁鎵鍖哄埆銆傛湰鏂囧皢浠嬬粛鍒╃敤ADO鍦ㄦ暟鎹簱涓瓨鍙朆LOB鏁版嵁鐨勫叿浣撳疄鐜拌繃紼嬶紝騫剁粰鍑哄疄鐜板浘鍍忓瓨鍙栨樉紺虹殑瀹屾暣紺轟緥宸ョ▼銆?

浜屻佸墠鏈熷噯澶?

棣栧厛鎴戜滑寤虹珛涓寮犲悕涓簎serinfo鐨勮〃錛屽寘鍚笁涓瓧孌?id,username,old,photo,鍏朵腑photo鏄竴涓彲浠ュ瓨鍌ㄤ簩榪涘埗鏁版嵁鐨勫瓧孌點?

2.1 鍦⊿QL SERVER涓垜浠彲浠ュ湪Query Analyzer涓洿鎺ヨ緭鍏ュ涓嬭鍙ュ垱寤猴細

CREATE TABLE [dbo].[userphoto] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[username] [varchar] (50) NULL ,
[old] [int] NULL ,
[photo] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
鍏朵腑photo鎴戜滑瀹氫箟涓篿mage綾誨瀷鐨勫瓧孌點?

2.2 鍦ˋCCESS涓垱寤虹殑鏂規硶濡備笅錛?

寤虹珛涓寮犳柊琛ㄥ寘鎷琲d,username,old,photo鍥涗釜瀛楁錛岀劧鍚庢墦寮琛紝閫夎鍥捐彍鍗曚腑璁捐瑙嗗浘錛屽皢id璁劇疆涓鴻嚜鍔ㄧ紪鍙風殑閫掑闀挎暣鍨嬶紝username涓烘枃鏈紝old涓烘暟瀛楋紝photo涓篛LE瀵硅薄銆?
鍦ㄦ垜浠殑紺轟緥宸ョ▼涓凡緇忓寘鍚簡涓涓緩绔嬪ソ鐨凙CCESS2000鐨勫簱錛屼綘鍙互鐩存帴鎷挎潵浣跨敤銆?

涓夈佸叿浣撴楠?

3.1 BLOB鏁版嵁鐨勪繚瀛?

BLOB綾誨瀷鐨勬暟鎹棤娉曠敤鏅氱殑鏂瑰紡榪涜瀛樺偍錛屾垜浠渶瑕佷嬌鐢ˋppendChunk鍑芥暟錛孉ppendChunk鍖呭惈鍦‵ield瀵硅薄涓紝鍘熷瀷濡備笅錛?
HRESULT AppendChunk (const _variant_t & Data );
浠庡嚱鏁板師鍨嬩腑鍙互鐪嬪埌鍏抽敭鐨勯棶棰樻槸鎴戜滑闇鎶婁簩榪涘埗鏁版嵁璧嬪肩粰VARIANT綾誨瀷鐨勫彉閲忥紝涓嬮潰鎴戜滑緇欏嚭鍏蜂綋鐨勪唬鐮佸茍浣滅畝鍗曠殑鍒嗘瀽:

///鍋囪m_pBMPBuffer鎸囬拡鎸囧悜涓鍧楅暱搴︿負m_nFileLen鐨勪簩榪涘埗鏁版嵁,騫朵笖宸茬粡鎴愬姛鎵撳紑浜嗚褰曢泦瀵硅薄m_pRecordset///

char *pBuf = m_pBMPBuffer ;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];

m_pRecordset->AddNew(); ///娣誨姞鏂拌褰?
m_pRecordset->PutCollect("username",_variant_t("灝忔潕")); ///涓烘柊璁板綍濉厖username瀛楁
m_pRecordset->PutCollect("old",_variant_t((long)28); ///濉厖old瀛楁

if(pBuf){
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = m_nFileLen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound); ///鍒涘緩SAFEARRAY瀵硅薄

for (long i = 0; i < (long)m_nFileLen; i++)
SafeArrayPutElement (psa, &i, pBuf++); ///灝唒Buf鎸囧悜鐨勪簩榪涘埗鏁版嵁淇濆瓨鍒癝AFEARRAY瀵硅薄psa涓?

varBLOB.vt = VT_ARRAY | VT_UI1;///灝唙arBLOB鐨勭被鍨嬭緗負BYTE綾誨瀷鐨勬暟緇?

varBLOB.parray = psa; ///涓簐arBLOB鍙橀噺璧嬪?

m_pRecordset->GetFields()->GetItem("photo")->AppendChunk(varBLOB); ///鍔犲叆BLOB綾誨瀷鐨勬暟鎹?
}

m_pRecordset->Update(); ///淇濆瓨鎴戜滑鐨勬暟鎹埌搴撲腑

鑷蟲鎴戜滑鐨勬暟鎹凡緇忔垚鍔熷湴淇濆瓨鍒頒簡鏁版嵁搴撲腑,鎺ヤ笅鏉ユ垜浠墍瑕佸仛鐨勫伐浣滀究鏄皢璇ユ暟鎹彁鍙栧嚭鏉?璁╂垜浠戶緇惂!

3.2 BLOB鏁版嵁鐨勮鍙?

瀵瑰簲浜庝繚瀛樻暟鎹椂鎴戜滑鎵浣跨敤鐨凙ppendChunk鍑芥暟錛岃鍙栨暟鎹簲璇ヤ嬌鐢℅etChunk鍑芥暟,GetChunk鐨勫師鍨嬪涓?
_variant_t GetChunk (long Length );
緇欏嚭鏁版嵁鐨勯暱搴﹀悗GetChunk灝嗚繑鍥炲寘鍚暟鎹殑VARIANT綾誨瀷鍙橀噺,鐒跺悗鎴戜滑鍙互鍒╃敤SafeArrayAccessData鍑芥暟寰楀埌VARIANT鍙橀噺涓寚鍚戞暟鎹殑char *綾誨瀷鐨勬寚閽?浠ユ柟渚挎垜浠殑澶勭悊錛屽叿浣撲唬鐮佸涓嬶細

long lDataSize = m_pRecordset->GetFields()->GetItem("photo")->ActualSize;
///寰楀埌鏁版嵁鐨勯暱搴?

if(lDataSize > 0)
{
_variant_t varBLOB;

varBLOB = m_pRecordset->GetFields()->GetItem("photo")->GetChunk(lDataSize);

if(varBLOB.vt == (VT_ARRAY | VT_UI1)) ///鍒ゆ柇鏁版嵁綾誨瀷鏄惁姝g‘
{
銆銆 char *pBuf = NULL;
銆銆 SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
銆銆 ///寰楀埌鎸囧悜鏁版嵁鐨勬寚閽?/*****鍦ㄨ繖閲屾垜浠彲浠ュpBuf涓殑鏁版嵁榪涜澶勭悊*****/
銆銆 SafeArrayUnaccessData (varBLOB.parray);
銆銆 }

}

浠ヤ笂鎴戜滑鎴愬姛瀹炵幇浜咮LOB鏁版嵁鍦ㄦ暟鎹簱涓殑瀛樺彇錛屼負浜嗚澶у鏈夌幇鎴愮殑渚嬪瓙鍙互鍙傝冿紝鏈枃鎻愪緵浜嗙ず渚嬪伐紼嬶紝鍦ㄧず渚嬪伐紼嬩腑鎴戜滑鍦ㄦ暟鎹簱涓繚瀛樺浘鍍忔暟鎹紝騫跺彲浠ュ榪欎簺鍥懼儚榪涜嫻忚銆佷慨鏀癸紝璇ヤ緥瀛愯繕娑夊強鍒板浣曠敤char *鎸囧悜鐨凚MP鏂囦歡鏁版嵁鍒涘緩BITMAP瀵硅薄鐒跺悗鏄劇ず鍑烘潵銆?br />



will 2006-07-06 11:56 鍙戣〃璇勮
]]>
SAFEARRAY浣跨敤鏂規硶紺轟緥http://m.shnenglu.com/weiyan/archive/2006/07/05/9452.htmlwillwillWed, 05 Jul 2006 12:09:00 GMThttp://m.shnenglu.com/weiyan/archive/2006/07/05/9452.htmlhttp://m.shnenglu.com/weiyan/comments/9452.htmlhttp://m.shnenglu.com/weiyan/archive/2006/07/05/9452.html#Feedback0http://m.shnenglu.com/weiyan/comments/commentRss/9452.htmlhttp://m.shnenglu.com/weiyan/services/trackbacks/9452.html l聽聽聽聽聽聽聽聽 鍒涘緩

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 long i = 0;

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 VARIANT va = {0};

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 va . vt = VT_BSTR ;

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SAFEARRAYBOUND bounds [1] = {0};

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 bounds [0]. cElements = 5;

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SAFEARRAY * psa = SafeArrayCreate ( VT_VARIANT , 1, bounds );

l聽聽聽聽聽聽聽聽 瀛樺叆鍏冪礌

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for ( i = 0; i < 5; i ++)

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 va . bstrVal = SysAllocString (L "test" );

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SafeArrayPutElement ( psa , & i , & va );

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }

l聽聽聽聽聽聽聽聽 鑾峰彇鍏冪礌

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for ( i = 0; i < 5; i ++)

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 va . bstrVal = SysAllocString (L "test" );

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SafeArrayGetElement ( psa , & i , & va );

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SysFreeString ( va . bstrVal );

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }

l聽聽聽聽聽聽聽聽 閿姣?/span>

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SafeArrayDestroy ( psa );

l聽聽聽聽聽聽聽聽 鐢熸垚 VARIANT 鍙橀噺

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 VARIANT vsa = {0};

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 vsa . vt = VT_ARRAY | VT_BSTR ;

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 vsa . parray = psa ;



will 2006-07-05 20:09 鍙戣〃璇勮
]]>
閲庢寚閽?/title><link>http://m.shnenglu.com/weiyan/archive/2006/07/05/9409.html</link><dc:creator>will</dc:creator><author>will</author><pubDate>Tue, 04 Jul 2006 16:32:00 GMT</pubDate><guid>http://m.shnenglu.com/weiyan/archive/2006/07/05/9409.html</guid><wfw:comment>http://m.shnenglu.com/weiyan/comments/9409.html</wfw:comment><comments>http://m.shnenglu.com/weiyan/archive/2006/07/05/9409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/weiyan/comments/commentRss/9409.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/weiyan/services/trackbacks/9409.html</trackback:ping><description><![CDATA[聽聽聽聽聽聽聽聽聽閲庢寚閽堬紝涔熷氨鏄寚鍚戜笉鍙敤鍐呭瓨鍖哄煙鐨勬寚閽堛傞氬父瀵硅繖縐嶆寚閽堣繘琛屾搷浣滅殑璇濓紝灝嗕細浣跨▼搴忓彂鐢熶笉鍙鐭ョ殑閿欒銆備絾鏄紝鎴戝湪鏂囦腑瑕佽鐨勶紝灝辨槸閲庢寚閽堢殑鈥滃畨鍏ㄢ濅嬌鐢ㄦ柟娉曚互鍙婂叾鍐呴儴鐨勫師鍥?<br /><br /><p>棣栧厛璇瘋浣嶇湅浠ヤ笅涓孌碘滃嵄闄┾濈殑C++浠g爜錛?/p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code><font color="blue">void</font>聽function(聽<font color="blue">void</font>聽)<br />{<br />聽聽聽聽<font color="blue">char</font>*聽str聽=聽<font color="blue">new</font>聽<font color="blue">char</font>[100];<br />聽聽聽聽<font color="blue">delete</font>[]聽str;<br />聽聽聽聽<font color="green">//聽Do聽something</font><br />聽聽聽聽strcpy(聽str,聽"Dangerous!!"聽);<br />}</code></td></tr></tbody></table><p>涔嬫墍浠ヨ鍏跺嵄闄╋紝鏄洜涓鴻繖鏄竴孌靛畬鍏ㄥ悎涔庤娉曠殑浠g爜錛岀紪璇戠殑鏃跺欏畬緹庡緱涓鐐歸敊璇篃涓嶄細鏈夛紝鐒惰屽綋榪愯鍒皊trcpy涓鍙ョ殑鏃跺欙紝闂灝變細鍑虹幇錛屽洜涓哄湪榪欎箣鍓嶏紝str鐨勭┖闂村凡緇忚delete鎺変簡錛屾墍浠trcpy褰撶劧涓嶄細鎴愬姛銆傚浜庤繖縐嶇被浼肩殑鎯呭喌錛屽湪鏋楅攼鍗氬+鐨勪功涓湁榪囦粙緇嶏紝縐板叾涓衡滈噹鎸囬拡鈥濄?/p><p>閭d箞錛岃浣嶆湁娌℃湁瑙佽繃瀹夊叏鐨勨滈噹鎸囬拡鈥濆憿錛熶笅闈㈣鐪嬫垜鐨勪竴孌礐++紼嬪簭錛岀伒鎰熸潵鑷狢SDN涓婄殑涓嬈¤璁恒傚湪姝わ紝鎴戝彧闇瑕丆++鐨勨滅被鈥濓紝C++鐨勫叾浣欎竴姒備笉闇瑕侊紝鍥犳鎴戞病鏈変嬌鐢ㄤ換浣曠殑C++鏍囧噯搴擄紝榪炶緭鍑洪兘鏄敤printf瀹屾垚鐨勩?/p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code><font color="blue">#include</font>聽<stdio.h><br /><br /><font color="blue">class</font>聽CTestClass<br />{<br /><font color="blue">public</font>:<br />聽聽聽聽CTestClass(聽<font color="blue">void</font>聽);<br />聽聽聽聽<font color="blue">int</font>聽m_nInteger;<br />聽聽聽聽<font color="blue">void</font>聽Function(聽<font color="blue">void</font>聽);<br />};<br /><br />CTestClass::CTestClass(聽<font color="blue">void</font>聽)<br />{<br />聽聽聽聽m_nInteger聽=聽0;<br />}<br /><br /><font color="blue">void</font>聽CTestClass::Function(聽<font color="blue">void</font>聽)<br />{<br />聽聽聽聽printf(聽"This聽is聽a聽test聽function.\n"聽);<br />}<br /><br /><font color="blue">void</font>聽main(聽<font color="blue">void</font>聽)<br />{<br />聽聽聽聽CTestClass*聽p聽=聽<font color="blue">new</font>聽CTestClass;<br />聽聽聽聽<font color="blue">delete</font>聽p;<br />聽聽聽聽p->Function();<br />}</code></td></tr></tbody></table><p>OK錛岀▼搴忓埌姝や負姝紝璇鎬綅鍙互緙栬瘧榪愯涓涓嬬湅鐪嬬粨鏋滃浣曘備綘涔熻浼氭儕寮傚湴鍙戠幇錛氭病鏈変換浣曠殑鍑洪敊淇℃伅錛屽睆騫曚笂绔熺劧涔栦箹鍦板嚭鐜頒簡榪欎箞涓琛屽瓧絎︿覆錛?/p><p>This is a test function.</p><p>濂囨悧錛熶笉瑕佹ワ紝榪樻湁鏇村鎬殑鍛紝浣犲彲浠ユ妸涓誨嚱鏁頒腑鍔犱笂涓鍙ユ洿涓嶅彲鐞嗗柣鐨勶細</p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code>((CTestClass*)NULL)->Function();</code></td></tr></tbody></table><p>榪欎粛鐒舵病鏈夐棶棰橈紒錛?/p><p>鎴戣繖榪樻湁鍛紝鍝堝搱銆傜幇鍦ㄤ綘鍦ㄤ富鍑芥暟涓繖涔堝啓錛屽樿涓婁竴鍙ヤ笉鍙悊鍠伙紝閭d箞浠ヤ笅鍙互鍙仛鏃犳硶鏃犲ぉ浜嗭細</p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code><font color="blue">int</font>聽i聽=聽888;<br />CTestClass*聽p2聽=聽(CTestClass*)&i;<br />p2->Function();</code></td></tr></tbody></table><p>浣犵湅鍒頒簡浠涔堬紵鏄殑錛屸淭his is a test function.鈥濆綰﹁岃嚦錛屾病鏈変換浣曠殑閿欒銆?/p><p>浣犱篃璁歌闂負浠涔堬紝浣嗘槸鍦ㄦ垜瑙g瓟浣犱箣鍓嶏紝璇蜂綘鍦ㄤ富鍑芥暟涓姞鍏ュ涓嬩唬鐮侊細</p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code>printf(聽"%d,聽%d",聽<font color="blue">sizeof</font>(聽CTestClass聽),聽<font color="blue">sizeof</font>(聽<font color="blue">int</font>聽)聽);</code></td></tr></tbody></table><p>榪欐椂浣犲氨浼氱湅鍒扮湡鐩鎬簡錛氳緭鍑虹粨鏋滄槸鈥斺斿緱鍒扮殑涓や釜鍗佽繘鍒舵暟鐩哥瓑銆傚錛岀敱sizeof寰楀埌鐨凜TestClass鐨勫ぇ灝忓叾瀹炲氨鏄畠鐨勬垚鍛榤_nInteger鐨勫ぇ灝忋備害鍗蟲槸璇達紝瀵逛簬CTestClass鐨勪竴涓疄渚嬪寲鐨勫璞★紙璁句負a錛夎岃█錛屽彧鏈塧.m_nInteger鏄睘浜巃榪欎釜瀵硅薄鐨勶紝鑰宎.Function()鍗存槸灞炰簬CTestClass榪欎釜綾葷殑銆傛墍浠ヤ互涓婄湅浼煎嵄闄╃殑鎿嶄綔鍏跺疄閮芥槸鍙涓旀棤璇殑銆?/p><p>鐜板湪浣犳槑鐧戒負浠涔堟垜鐨勨滈噹鎸囬拡鈥濇槸瀹夊叏鐨勪簡錛岄偅涔堜互涓嬫垜鎵鍒楀嚭鐨勶紝灝辨槸鍦ㄤ粈涔堟儏鍐典笅錛屾垜鐨勨滈噹鎸囬拡鈥濅笉瀹夊叏錛?/p><ol><li>鍦ㄦ垚鍛樺嚱鏁癋unction涓鎴愬憳鍙橀噺m_nInteger榪涜鎿嶄綔錛? </li><li>灝嗘垚鍛樺嚱鏁癋unction澹版槑涓鴻櫄鍑芥暟錛坴irtual錛夈?</li></ol><p>浠ヤ笂鐨勪袱縐嶆儏鍐碉紝鐩殑灝辨槸寮鴻揩閲庢寚閽堜嬌鐢ㄥ睘浜庤嚜宸辯殑涓滆タ瀵艱嚧涓嶅畨鍏紝姣斿絎竴縐嶆儏鍐典腑鎿嶄綔鏈韓鐨刴_nInteger錛岀浜岀鎯呭喌涓彉涓鴻櫄鍑芥暟鐨凢unction鎴愪負浜嗗睘浜庡璞$殑鍑芥暟錛堣繖涓鐐瑰彲浠ヤ粠sizeof鐪嬪嚭鏉ワ級銆?/p><p>鍏跺疄錛屽畨鍏ㄧ殑閲庢寚閽堝湪瀹為檯鐨勭▼搴忚璁′腑鏄嚑涔庢鏃犵敤澶勭殑銆傛垜鍐欒繖涓綃囨枃绔狅紝鎰忓浘騫朵笉鏄儚瀛斾箼宸變竴鏍峰幓鐞㈢(鍥炲瓧鏈夊嚑縐嶅啓娉曪紝鑰屾槸鎯抽氳繃榪欎釜灝忎緥瀛愬悜璇鎬綅鍐欐槑鐧紺++鐨勫璞″疄渚嬪寲鏈川錛屽笇鏈涘ぇ瀹朵笉浣嗚鏄庣櫧what鍜宧ow錛屾洿瑕佹槑鐧絯hy銆傛潕椹簩闆墮浂涓夊勾浜屾湀浜屽崄鏃ヤ綔浜庤嚜瀹呫?/p><p><br /><b>鍏充簬鎴愬憳鍑芥暟CTestClass::Function鐨勮ˉ鍏呰鏄?/b><br /><br /></p><p>榪欎釜鍑芥暟鏄竴涓櫘閫氱殑鎴愬憳鍑芥暟錛屽畠鍦ㄧ紪璇戝櫒鐨勫鐞嗕笅錛屼細鎴愪負綾諱技濡備笅鐨勪唬鐮侊細</p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code><font color="blue">void</font>聽Function(聽<font color="blue">const</font>聽CTestClass聽*聽<font color="blue">this</font>聽)聽<font color="green">//聽鈶?/font><br />{<br />聽聽聽聽printf("This聽is聽a聽test聽function.\n");<br />}</code></td></tr></tbody></table><p>閭d箞p->Function();涓鍙ュ皢琚紪璇戝櫒瑙i噴涓猴細</p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code>Function( p ); </code></td></tr></tbody></table><p>榪欏氨鏄錛屾櫘閫氱殑鎴愬憳鍑芥暟蹇呴』緇忕敱涓涓璞℃潵璋冪敤錛堢粡鐢眛his鎸囬拡嬋媧燴憽錛夈傞偅涔堢敱涓婁緥鐨刣elete涔嬪悗錛宲鎸囬拡灝嗕細鎸囧悜涓涓棤鏁堢殑鍦板潃錛岀劧鑰宲鏈韓鏄竴涓湁鏁堢殑鍙橀噺錛屽洜姝ょ紪璇戣兘澶熼氳繃銆傚茍涓斿湪緙栬瘧閫氳繃涔嬪悗錛岀敱浜嶤TestClass::Function鐨勫嚱鏁頒綋鍐呭茍鏈榪欎釜浼犲叆鐨則his鎸囬拡榪涜浠諱綍鐨勬搷浣滐紝鎵浠ュ湪榪欓噷錛屸滈噹鎸囬拡鈥濅究鎴愪簡涓涓湅浼煎畨鍏ㄧ殑涓滆タ銆?/p><p>鐒惰岃嫢榪欐牱鏀瑰啓CTestClass::Function錛?/p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code><font color="blue">void</font>聽CTestClass::Function(聽<font color="blue">void</font>聽)<br />{<br />聽聽聽聽m_nInteger聽=聽0;<br />}</code></td></tr></tbody></table><p>閭d箞瀹冨皢浼氳緙栬瘧鍣ㄨВ閲婁負錛?/p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code><font color="blue">void</font>聽Function(聽<font color="blue">const</font>聽CTestClass聽*聽<font color="blue">this</font>聽)<br />{<br />聽聽聽聽<font color="blue">this</font>->m_nInteger聽=聽0;<br />}</code></td></tr></tbody></table><p>浣犵湅鍒頒簡錛屽湪p->Function();鐨勬椂鍊欙紝緋葷粺灝嗕細灝濊瘯鍦ㄤ紶鍏ョ殑榪欎釜鏃犳晥鍦板潃涓鎵緈_nInteger鎴愬憳騫跺皢鍏惰祴鍊間負0錛屽墿涓嬬殑鎴戜笉鐢ㄨ浜嗏斺旈潪娉曟搷浣滃嚭鐜頒簡銆?/p><p>鑷充簬virtual铏氬嚱鏁幫紝濡傛灉鍦ㄧ被瀹氫箟涔嬩腑灝咰TestClass澹版槑涓鴻櫄鍑芥暟錛?/p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code><font color="blue">class</font>聽CTestClass<br />{<br /><font color="blue">public</font>:<br />聽聽聽聽<font color="green">//聽...</font><br />聽聽聽聽<font color="blue">virtual</font>聽<font color="blue">void</font>聽Function(聽<font color="blue">void</font>聽);<br />};</code></td></tr></tbody></table><p>閭d箞C++鍦ㄦ瀯寤篊TestClass綾葷殑瀵硅薄妯″瀷鏃訛紝灝嗕細涓轟箣鍒嗛厤涓涓櫄鍑芥暟琛╲ptr錛堝彲浠ヤ粠sizeof鐪嬪嚭鏉ワ級銆倂ptr鏄竴涓寚閽堬紝瀹冩寚鍚戜竴涓嚱鏁版寚閽堢殑鏁扮粍錛屾暟緇勪腑鐨勬垚鍛樺嵆鏄湪CTestClass涓0鏄庣殑鎵鏈夎櫄鍑芥暟銆傚湪璋冪敤铏氬嚱鏁扮殑鏃跺欙紝蹇呴』緇忕敱榪欎釜vptr錛岃繖涔熷氨鏄負浠涔堣櫄鍑芥暟杈冧箣鏅氭垚鍛樺嚱鏁拌娑堣椾竴浜涙垚鏈殑緙樻晠銆備互鏈緥鑰岃█錛宲->Function();涓鍙ュ皢琚紪璇戝櫒瑙i噴涓猴細</p><p></p><table class="codetable" cellspacing="1" border="0"><tbody><tr><td><code>(*p->vptr[1])(聽p聽);聽<font color="green">//聽璋冪敤vptr琛ㄤ腑绱㈠紩鍙蜂負1鐨勫嚱鏁幫紙鍗矲unction錛夆憿</font></code></td></tr></tbody></table><p>涓婇潰鐨勪唬鐮佸凡緇忚鏄庝簡錛屽鏋減鎸囧悜涓涓棤鏁堢殑鍦板潃錛岄偅涔堝繀鐒朵細鏈夐潪娉曟搷浣溿?/p><p>澶囨敞錛?/p><p>鈶犲叧浜庡嚱鏁扮殑鍛藉悕錛屾垜閲囩敤浜嗗師鍚嶈屾病鏈夊彉鍖栥備簨瀹炰笂緙栬瘧鍣ㄤ負浜嗛伩鍏嶅嚱鏁伴噸杞介犳垚鐨勯噸鍚嶆儏鍐碉紝浼氬鍑芥暟鐨勫悕瀛楄繘琛屽鐞嗭紝浣夸箣鎴愪負鐙竴鏃犱簩鐨勫悕縐般?br />鈶″皢鎴愬憳鍑芥暟澹版槑涓簊tatic錛屽彲浠ヤ嬌鎴愬憳鍑芥暟涓嶇粡鐢眛his鎸囬拡渚垮彲璋冪敤銆?br />鈶ptr琛ㄤ腑錛岀儲寮曞彿0涓虹被鐨則ype_info銆?/p><br /><br /><img src ="http://m.shnenglu.com/weiyan/aggbug/9409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/weiyan/" target="_blank">will</a> 2006-07-05 00:32 <a href="http://m.shnenglu.com/weiyan/archive/2006/07/05/9409.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VISUAL C++杞歡寮鍙戜腑鍑犱釜甯哥敤鍔熻兘http://m.shnenglu.com/weiyan/archive/2006/07/05/9408.htmlwillwillTue, 04 Jul 2006 16:26:00 GMThttp://m.shnenglu.com/weiyan/archive/2006/07/05/9408.htmlhttp://m.shnenglu.com/weiyan/comments/9408.htmlhttp://m.shnenglu.com/weiyan/archive/2006/07/05/9408.html#Feedback0http://m.shnenglu.com/weiyan/comments/commentRss/9408.htmlhttp://m.shnenglu.com/weiyan/services/trackbacks/9408.html涓銆佽緗▼搴忚嚜鍔ㄨ繍琛屻偮犅?br />聽聽聽聽聽聽聽寰堝鐩戞帶杞歡瑕佹眰杞歡鑳藉鍦ㄧ郴緇熼噸鏂板惎鍔ㄥ悗涓嶇敤鐢ㄦ埛鍘葷偣鍑誨浘鏍囧惎鍔ㄩ」鐩紝鑰屾槸鐩存帴鑳藉鍚姩榪愯錛屾柟娉曟槸鍐欐敞鍐岃〃Software\\Microsoft\\Windows\\CurrentVersion\\Run銆傚弬鑰冪▼搴忓彲浠ヨ涓嬶細(鏌ユ壘紼嬪簭鐩綍鐨勬墽琛屾枃浠訛紝瀛樺湪鍒欒繘琛屾坊鍔犳敞鍐岃〃鎿嶄綔)聽
聽聽聽聽聽聽聽聽 HKEY RegKey;聽
聽聽聽聽聽聽聽聽 CString sPath;聽
聽聽聽聽聽聽聽聽 GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);聽
聽聽聽聽聽聽聽聽 sPath.ReleaseBuffer();聽
聽聽聽聽聽聽聽聽 int nPos;聽
聽聽聽 nPos=sPath.ReverseFind(鈥橽\鈥?;聽
聽聽聽 sPath=sPath.Left(nPos);聽
聽聽聽 CString lpszFile=sPath+"\\****.exe";//榪欓噷鍔犱笂浣犺鏌ユ壘鐨勬墽琛屾枃浠跺悕縐奧?
聽聽聽 CFileFind fFind;聽
聽聽聽 BOOL bSuccess;聽
聽聽聽 bSuccess=fFind.FindFile(lpszFile);聽
聽聽聽 fFind.Close();聽
聽聽聽 if(bSuccess)聽
聽聽聽 {聽
聽聽聽聽聽聽聽 CString fullName;聽
聽聽聽聽聽聽聽 fullName=lpszFile;聽
聽聽聽聽聽聽聽 RegKey=NULL;聽
聽聽聽聽聽聽聽 RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&RegKey);聽
聽聽聽聽聽聽聽 RegSetValueEx(RegKey,"*****",0,REG_SZ,(const unsigned char*)(LPCTSTR)fullName,fullName.GetLength());//榪欓噷鍔犱笂浣犻渶瑕佸湪娉ㄥ唽琛ㄤ腑娉ㄥ唽鐨勫唴瀹孤?
聽聽聽聽聽聽聽 this->UpdateData(FALSE);聽
聽聽聽 }聽
聽聽聽 else聽
聽聽聽 {聽
聽聽聽聽聽聽聽 theApp.SetMainSkin();聽
聽聽聽聽聽聽聽 ::AfxMessageBox("娌℃壘鍒版墽琛岀▼搴忥紝鑷姩榪愯澶辮觸");聽
聽聽聽聽聽聽聽 exit(0);聽
聽聽聽 }聽

浜屻佽嚜鍔ㄩ厤緗暟鎹簮聽
聽聽聽 寰堝鐨勭▼搴忛兘瑕佺敤鍒版暟鎹簱緇撳悎鐨勬搷浣滐紝榪欓噷涓句緥ACCESS錛屽洜涓篈CCESS鍦ㄤ腑灝忓瀷VC緋葷粺寮鍙戜腑鏄渶甯哥敤鍒扮殑錛屽鏋滅▼搴忕殑縐繪錛屽鏋滃浜庡緢鍒濈駭鐨勭敤鎴鋒潵璇達紝浣犺繕闇瑕佷粬鍒伴厤緗潰鏉夸腑榪涜鏁版嵁婧愰厤緗殑璇濓紝閭e氨鏈夌偣璇翠笉榪囧幓浜嗐偮?
聽聽聽聽聽聽聽聽 #include <odbcinst.h>聽
聽聽聽聽聽聽聽聽 //閰嶇疆鏁版嵁婧愶紝鏁版嵁搴撳湪搴旂敤紼嬪簭鐩綍涓?榪欓噷姣斿鏁版嵁搴撴枃浠跺悕涓?**.mdb錛岀▼搴忚繍琛屾椂鍊欏彲浠ュ皢鏁版嵁搴撴枃浠舵嫹璐濆埌紼嬪簭鐩綍涓嬮潰銆偮?
聽聽聽 CString sPath;聽
聽聽聽 GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);聽
聽聽聽 sPath.ReleaseBuffer();聽
聽聽聽 int nPos;聽
聽聽聽 nPos=sPath.ReverseFind(鈥橽\鈥?;聽
聽聽聽 sPath=sPath.Left(nPos);聽
聽聽聽 CString lpszFileName = sPath + "\\***.mdb";//榪欓噷淇敼鎴愪綘鐨勬暟鎹簱鏂囦歡鍚嶇О聽
聽聽聽 CFileFind聽 fFind;聽
聽聽聽 if(!fFind.FindFile(lpszFileName))聽
聽聽聽 {聽
聽聽聽聽聽聽聽 ::AfxMessageBox("娌℃湁鎵懼埌鏁版嵁搴?);聽
聽聽聽聽聽聽聽 exit(0);聽
聽聽聽 }聽聽
聽聽聽 CString szDesc;聽
聽聽聽 szDesc.Format( "DSN=****;Description=****;DESCRIPTION=The DataBase For ***;FIL=MicrosoftAccess;DEFAULTDIR=%s;DBQ=%s;" ,sPath,lpszFileName);//榪欓噷***鍙峰彲浠ユ坊鍔犳垚浣犵殑鎻忚堪聽

聽聽聽 //娣誨姞鏁版嵁婧惵?
聽聽聽 if(!::SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",(LPCSTR)szDesc))聽
聽聽聽 {聽
聽聽聽聽聽聽聽 ::AfxMessageBox("32浣峅DBC鏁版嵁婧愰厤緗敊璇?");聽
聽聽聽聽聽聽聽 exit(0);聽
聽聽聽 }聽

涓夈佽緗樉紺烘ā寮忥細聽
聽聽聽 寰堝鐨勭▼搴忕殑縐繪鐨勮繍琛岀幆澧冩槸鏀瑰彉鐨勩傛湁鍙兘浣犵殑鍘熸潵寮鍙戠幆澧冩槸1024X768錛屼絾鏄埌浜嗛偅浜涙樉紺哄櫒澶т簬17鐨勬椂鍊欙紙鍒嗚鯨鐜囪秴榪囦綘鐨勫紑鍙戞椂鐨勫垎杈ㄧ巼鏃訛級錛岀▼搴忕殑鏄劇ず鍙兘灝變笉濂界湅浜嗐偮?
聽聽聽聽聽聽聽聽 DEVMODE lpDevMode;聽
聽聽聽 lpDevMode.dmPelsHeight=768;//Y鏂瑰悜璞$礌鐐孤?
聽聽聽 lpDevMode.dmPelsWidth=1024;//X鏂瑰悜璞$礌鐐孤?
聽聽聽 lpDevMode.dmDisplayFrequency=85;//灞忓箷鍒鋒柊鐜嚶?
聽聽聽 lpDevMode.dmFields=DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY;聽
聽聽聽 ChangeDisplaySettings(&lpDevMode,0);聽

鍥涖佸湪浣犵殑紼嬪簭涓棿鍔犺澆鍏朵粬搴旂敤紼嬪簭錛毬?
聽聽聽 浣犵殑紼嬪簭闄や簡璋冪敤鍒板悇涓ā鍧楄繘琛屽崗鍚屽伐浣滃錛圖LL錛夛紝榪樻湁鍙兘璋冪敤涓嶆槸鍚屼竴涓紑鍙戠幆澧冧笅鐨勫簲鐢ㄧ▼搴忥紝姣斿VC鐜涓嬭皟鐢―ELPHI錛孷B寮鍙戠殑鎵ц紼嬪簭錛屼綘灝卞彲浠ョ敤鍒頒笅闈㈢殑鏂規硶錛堝皢璋冪敤鐨勫簲鐢ㄧ▼搴忔嫹璐濈▼搴忕洰褰曚腑錛夛細聽
聽聽聽聽聽聽聽聽 CString sPath;聽
聽聽聽 GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);聽
聽聽聽 sPath.ReleaseBuffer();聽
聽聽聽 int nPos;聽
聽聽聽 nPos=sPath.ReverseFind(鈥橽\鈥?;聽
聽聽聽 sPath=sPath.Left(nPos);聽
聽聽聽 CString lpszFileName = sPath + "\\***.exe";//榪欓噷淇敼鎴愪綘鐨勮皟鐢ㄥ簲鐢ㄧ▼搴忕殑鏂囦歡鍚嶇О聽
聽聽聽 CFileFind聽 fFind;聽
聽聽聽 if(!fFind.FindFile(lpszFileName))聽
聽聽聽 {聽
聽聽聽聽聽聽聽 ::AfxMessageBox("娌℃湁鎵懼埌璋冪敤鐨勫簲鐢ㄧ▼搴忥紒");聽聽
聽聽聽聽聽聽聽 return FALSE;聽
聽聽聽 }聽
聽聽聽 else聽
聽聽聽聽聽聽聽 ShellExecute(NULL,NULL,_T("***.exe"),NULL,sPath,NULL);聽聽

浜斻佺粨鏉熻繘紼嬶細聽
聽聽聽 鍦ㄤ綘鐨勭▼搴忎腑緇撴潫鍒殑紼嬪簭榪涚▼錛岄噰鐢ㄧ殑鏂規硶鏄繘琛岃繘紼嬪垪涓撅紝鐒跺悗閲囩敤鏌ユ壘鐨勬柟娉曡繘琛岋細聽
聽聽聽聽聽聽聽聽 #include "TLHELP32.H"聽
聽聽聽聽聽聽聽聽 DWORD ProcessID[50];聽
聽聽聽 CString kkk[50];聽
聽聽聽 HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);聽聽
聽聽聽 PROCESSENTRY32* info=new PROCESSENTRY32;聽
聽聽聽 PROCESSENTRY32 ProcessInfo;//澹版槑榪涚▼淇℃伅鍙橀噺聽
聽聽聽 ProcessInfo.dwSize=sizeof(ProcessInfo);//璁劇疆ProcessInfo鐨勫ぇ灝徛?
聽聽聽 //榪斿洖緋葷粺涓涓涓繘紼嬬殑淇℃伅聽
聽聽聽 BOOL Status=Process32First(SnapShot,&ProcessInfo);聽
聽聽聽 int m_nProcess=0;聽聽
聽聽聽 while(Status)聽
聽聽聽 {聽
聽聽聽聽聽聽聽 CString s,str1,str2;聽
聽聽聽聽聽聽聽 s.Format("%d",ProcessInfo.cntThreads);聽
聽聽聽聽聽聽聽 str1.Format("%s",ProcessInfo.szExeFile);聽
聽聽聽聽聽聽聽 str1=ProcessInfo.szExeFile;聽
聽聽聽聽聽聽聽 kkk[m_nProcess]=ProcessInfo.szExeFile;聽聽
聽聽聽聽聽聽聽 ProcessID[m_nProcess]=ProcessInfo.th32ProcessID;聽聽
聽聽聽聽聽聽聽 if(str1=="***.exe")//***.exe灝辨槸浣犺緇撴潫鐨勮繘紼嬬殑鍚嶇О聽
聽聽聽聽聽聽聽 {聽
聽聽聽聽聽聽聽聽聽聽聽 HANDLE ProcessHandle;聽
聽聽聽聽聽聽聽聽聽聽聽 ProcessHandle=OpenProcess (PROCESS_ALL_ACCESS,FALSE,ProcessID[m_nProcess]);聽
聽聽聽聽聽聽聽聽聽聽聽 TerminateProcess(ProcessHandle,0);聽聽聽聽聽
聽聽聽聽聽聽聽 }聽
聽聽聽聽聽聽聽 Status=Process32Next(SnapShot,&ProcessInfo);聽
聽聽聽聽聽聽聽 m_nProcess++;聽
聽聽聽 }聽



will 2006-07-05 00:26 鍙戣〃璇勮
]]>
WTL涔嬬埗Nenad Stefanovic璁胯皥褰?/title><link>http://m.shnenglu.com/weiyan/archive/2006/07/05/9407.html</link><dc:creator>will</dc:creator><author>will</author><pubDate>Tue, 04 Jul 2006 16:14:00 GMT</pubDate><guid>http://m.shnenglu.com/weiyan/archive/2006/07/05/9407.html</guid><wfw:comment>http://m.shnenglu.com/weiyan/comments/9407.html</wfw:comment><comments>http://m.shnenglu.com/weiyan/archive/2006/07/05/9407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/weiyan/comments/commentRss/9407.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/weiyan/services/trackbacks/9407.html</trackback:ping><description><![CDATA[ <p>聽聽聽浣滀負鐜頒唬C++鏈閲嶈鐨勭壒鑹叉妧鏈紝template姝e湪鍚勪釜浼犵粺棰嗗煙鏀誨煄鐣ュ湴銆備粠鍩烘湰綆楁硶涓庢暟鎹粨鏋勶紝鍒版鍒欒〃杈懼紡涓嶺ML瑙f瀽錛屼粠楂樻ц兘鏁板璁$畻錛屽埌璧勬簮鐨勫垎閰嶄笌綆$悊錛屼粠緗戠粶鍒嗗竷寮忚綆楃幆澧冿紝鍒扮粍浠舵ā鍨嬪垱寤猴紝浠庨潤鎬佸鎬佹х殑緇村害鎵╁睍錛屽埌璁捐妯″紡鐨勮嚜鍔ㄧ敓鎴愶紝紲炲鐨則emplate鏄劇ず鍑哄叾浠や漢鍙逛負瑙傛鐨勫己鍔插疄鍔涳紝濡傛灉涓嶆槸鏈変竴涓殣闅愮殑鐥涘錛宼emplate鐖卞ソ鑰呯畝鐩村彲浠ュ幓鐙傛浜嗐?/p> <p>榪欎釜闅愰殣鐨勭棝澶勶紝灝辨槸鍦℅UI緙栫▼棰嗗煙銆?/p> <p>聽聽聽鐜版湁鐨勫ぇ閮ㄥ垎鎴愮啛GUI妗嗘灦鍜屽伐鍏峰簱錛屽叾瀹氬瀷鏃墮棿閮藉湪90騫翠唬鏃╂湡錛屼笉綆℃槸鍥犱負浠涔堝師鍥狅紝鎬諱箣鎴戜滑鏍規湰鐪嬩笉鍒皌emplate鎶鏈湪榪欎簺鐜涓殑浠諱綍閲嶈榪愮敤銆傛棤璁烘槸涓撴湁MFC鍜孫WL錛岃繕鏄紑婧愮殑wxWindow鍜孧ozilla, 浠ヨ嚦浜庢槸涓撴湁榪樻槸寮婧愰兘璇翠笉娓呮鐨凲t錛屽畠浠湪鍏朵粬鏂歸潰鏈夌潃璇稿涓嶅悓錛屽亸鍋忓掓槸鍦ㄥ寰呮ā鏉挎妧鏈笂絀哄墠涓鑷達細涓ユ牸闄愬埗鍦ㄥ簳灞傜殑鏁版嵁緇撴瀯棰嗗煙鍐咃紝鎶靛埗妯℃澘鎶鏈祦鍏UI涓諱綋緇撴瀯銆傛渶榪囧垎鐨剋xWindow鍜孧ozilla錛屽湪浠g爜緙栧啓瑙勮寖閲屼弗鍘夌姝嬌鐢?990騫翠箣鍚庡彂灞曞嚭鏉ョ殑浠諱綍C++鐗規э紝妯℃澘銆佸紓甯搞佸緇ф壙銆丼TL絳夌瓑錛屽潎鍦ㄩ粦鍚嶅崟涓娿傝浣嶆湁鍏磋叮錛屼笉濡ㄥ幓鐪嬬湅錛岄偅涓庡叾璇存槸涓浠紺++浠g爜緙栧啓瑙勮寖錛屽掍笉濡傝鏄C++鐜頒唬鐗規у湪GUI棰嗗煙搴旂敤鐨勪竴浠戒笉鍏鐨勫垽鍐充功銆? </p> <p>闅鵑亾妯℃澘鎶鏈湡鐨勫湪GUI棰嗗煙鏃犵敤姝︿箣鍦板悧錛? </p> <p>WTL緇欏嚭浜嗕竴涓搷浜殑鍥炵瓟銆? </p> <p>聽聽聽WTL鏄井杞疉TL寮鍙戠粍鎴愬憳Nenad Stefanovic鍏堢敓鍦ˋTL Windowing鏈哄埗涓婂彂灞曡搗鏉ョ殑涓鏁村GUI妗嗘灦錛岃繍鐢╰emplate鎶鏈粍緇囧拰鍒涘緩GUI瀵硅薄錛屾瀯絳戜簡綺捐嚧鐨勯潰鍚戝璞℃鏋訛紙娌¢敊錛屽湪榪欓噷object oriented涓巘emplate杈炬垚浜嗙簿鑷寸殑铻嶅悎錛夈傝櫧鐒舵病鏈夎幏寰楀井杞殑瀹樻柟鏀寔錛岃櫧鐒跺叾浣跨敤鑰呬漢鏁板緢灝戯紝浣嗘槸紜疄鏄滅敤榪囩殑閮借濂解濓紝鏈変綅寰蔣MVP浜哄+鐢氳嚦璇達紝榪欐槸寰蔣鏈夊彶浠ユ潵鎺ㄥ嚭鐨勬渶浼樼鐨勪竴涓猣ramework銆傜湡鏄竴涓湁瓚g殑璁藉埡錛屾渶濂界殑涓滆タ灞呯劧涓嶈瀹樻柟鏀寔銆傛湁鍏充簬WTL鐨勬祦璦涓嶅皯錛屾瘮濡傝繖涓滆タ鍘熸湰鏄井杞唴閮ㄤ笓鐢紝鍙槸鍥犱負涓嶅皬蹇冩墠琚硠婕忓嚭鏉ョ瓑絳夛紝榪欐洿鍔犲墽瀹冪殑紲炵鑹插僵銆傜浉淇″ぇ瀹跺瀹冧竴瀹氭湁涓嶅皯闂銆傛垜浠壒鍒個璇峰埌浜哤TL涔嬬埗Nenad Stefanovic鍏堢敓錛岃繘琛屼簡涓嬈$綉涓婄殑璁胯皥錛屽笇鏈涜兘甯姪澶у浜嗚ВWTL鐨勭湡闈㈢洰銆? </p> <p> <font color="blue">銆怌++ View銆戯細I think most of our readers are not very familiar with you, so would you please tell us your story here? We are very fond of that. What do you think about China and Chinese people?</font> </p> <p>銆怌++ View銆戯細鎴戞兂錛屽彲鑳芥垜浠殑璇昏呬腑鏈夊緢澶氫漢瀵規偍榪樹笉鏄緢鐔熸倝錛屾偍鑳戒笉鑳藉湪姝ょ粰鎴戜滑綆鍗曚粙緇嶄竴涓嬫偍鑷繁鍛紵鎴戜滑灝嗛潪甯鎬箰鎰忓惉鍒版偍鐨勮嚜榪般傝繕鏈夛紝鎮ㄨ兘涓嶈兘涔熷鎴戜滑璁茶堪涓涓嬫偍瀵逛簬涓浗浠ュ強涓浗浜烘皯鐨勫熀鏈湅娉曞憿錛?/p> <p>銆怤enad銆? I am a software developer at Microsoft. Your readers will probably know me as a creator of Windows Template Library, WTL. I am from former Yugoslavia, where I finished school and started working on software development. I've been living in US for 10 years now. </p> <p>I am intrigued and impressed by the Chinese culture and tradition. I think that China is now in a great position of progress as a country and a nation. I discovered that, being from former Yugoslavia, I already know many things about China, and getting to know people from China gave me a bit of the "everyday" life perspective as well. I'd like to learn more, so I hope to visit China one day. </p> <p>銆怤enad銆戯細濂界殑銆傛垜鐜板湪鍦∕icrosoft宸ヤ綔錛屾槸瀹冮噷闈㈢殑涓涓蔣浠跺紑鍙戜漢鍛樸備綘浠潅蹇楃殑璇昏呬腑鍙兘鏈変漢鐭ラ亾錛屾垜灝辨槸Windows Template Library 錛圵TL錛夌殑鍒涗綔鑰呫傛垜鏉ヨ嚜浜庡墠鍗楁柉鎷夊か錛屽湪閭f垜瀹屾垚浜嗘垜鐨勫涓氬茍寮濮嬩簡鎴戜綔涓鴻蔣浠跺紑鍙戜漢鍛樼殑宸ヤ綔鐢熸動銆傜幇鍦紝鎴戝湪緹庡浗灞呬綇鐨勬椂闂村凡緇忚秴榪囦簡10騫翠簡銆? </p> <p>聽聽聽涓浗鐨勬枃鍖栦互鍙婁紶緇熺粰鎴戠暀涓嬩簡鏋佷負娣卞埢鐨勫嵃璞★紝鎴戝姝ゅ崄鍒嗘劅鍏磋叮銆傛垜鎯籌紝浣滀負涓涓浗瀹朵互鍙婃皯鏃忥紝涓浗宸茬粡澶勪簬涓涓紵澶у茍涓斾笉鏂湪鎴愰暱涓殑浣嶇疆涓娿備綔涓轟竴涓粠鍓嶅崡鏂媺澶潵鐨勪漢錛屾垜鏃╁氨浜嗚В鍒板叧浜庝腑鍥界殑寰堝浜嬫儏銆傚湪涓庢潵鑷腑鍥界殑浜烘皯鐨勬帴瑙﹁繃紼嬩腑錛屾垜榪樹簡瑙e埌浜嗕綘浠棩甯哥敓媧葷殑涓浜涚姸鍐點傛垜榪樻兂浜嗚В鏇村錛堟湁鍏充腑鍥界殑浜嬫儏錛夛紝甯屾湜鏈変竴澶╂垜鍙互鍒頒腑鍥芥潵娓歌銆? </p> <p> <font color="blue">銆怌++ View銆戯細When and why did you first think about WTL? What's its original purpose? How do you see its future?</font> </p> <p>銆怌++ View銆戯細鎮ㄦ槸浠涔堟椂鍊欏紑濮嬫兂璧瘋寮鍙慦TL鍛紵涓轟粈涔堬紵鎮ㄥ湪寮鍙戝畠鏃剁殑鏈鍒濈洰鐨勬槸浠涔堬紵鎮ㄥ張鏄浣曞湴鐪嬪緟瀹冩湭鏉ョ殑鍙戝睍鍛紵</p> <p>銆怤enad銆戯細WTL was born while I was working on ATL (Active Template Library). We were extending ATL to support ActiveX controls, and I was working on the windowing support. I started thinking that the same techniques can be applied to much broader windowing support, for the much richer UI for controls, components, and also applications. So, WTL was created as a part of ATL that would extend ATL to support any kind of UI related component or application. It did not ship with ATL in Visual Studio, however, so I decided to ship it as a standalone library that extends ATL. </p> <p>I think that WTL will continue to be a great option for developers writing Windows applications and components. I don't see big changes or additions to WTL, because one of the design principles for WTL was to follow the Win32 UI API and design. It will continue to do so. </p> <p>銆怤enad銆戯細WTL鏄垜鍦ㄤ粠浜婣TL 錛圓ctive Template Library錛夊紑鍙戝伐浣滄椂鐨勪駭鐗┿傞偅鏃舵垜浠鍦ㄦ墿灞旳TL錛屼嬌涔嬪緱浠ユ敮鎸丄ctiveX control錛岃屾垜璐熻矗鐨勫氨鏄叾涓浜庣獥鍙f満鍒墮儴鍒嗙殑鏀寔銆傝繖鏃訛紝鎴戝氨寮濮嬫兂錛屾槸涓嶆槸鍙互鎶婂悓鏍風殑鎶鏈簲鐢ㄥ埌鏇翠負騫挎硾鐨勭獥鍙f満鍒朵腑錛屼互鑾峰緱鏇翠赴瀵岀殑UI鎺у埗銆佺粍浠躲佷互鑷充簬搴旂敤紼嬪簭鍛紵浜庢槸錛屼綔涓篈TL鐨勪竴閮ㄥ垎錛學TL琚紑鍙戝嚭鏉ヤ簡銆傚畠灝咥TL榪涜浜嗘墿灞曪紝浠ヤ嬌寰楀畠鍙互鏀寔鍚勭綾誨瀷鐨勪笌UI鐩稿叧鐨勭粍浠舵垨鑰呭簲鐢ㄧ▼搴忋傜劧鑰岋紝瀹冨茍娌℃湁闅忕潃ATL涓鍚岄泦鎴愬湪Visual Studio涓鍙戝竷錛屼簬鏄垜灝卞喅瀹氬皢瀹冧綔涓轟竴涓崟鐙殑ATL鎵╁睍搴撳彂甯冨嚭鍘匯? </p> <p>鎴戣涓篧TL灝嗕竴鐩存槸閭d簺鍦╓indows涓嬪紑鍙戝簲鐢ㄧ▼搴忎互鍙婄粍浠剁殑寮鍙戣呯殑涓涓緢濂界殑閫夋嫨銆傛垜騫朵笉璁や負鍦ㄤ互鍚庯紝鎴戜滑浼氬WTL鏈変竴涓ぇ鐨勬敼鍔紙鎴栬呭娣伙級錛屽洜涓篧TL鐨勪竴涓璁″畻鏃ㄥ氨鏄滈伒寰猈in32 UI鐨凙PI鍙婂叾璁捐鈥濄傜幇鍦ㄥ姝わ紝灝嗘潵榪樻槸浼氬姝や笅鍘匯? </p> <p> <font color="blue">銆怌++ View銆戯細I first heard about WTL in July, 2000. At that time, I thought: "No official support, no documentation, no commercial hype, it will die in 6 months." Now, fifteen months passed, it spreads wider and be more vigorous. Lots of C++ programmers, esp. the ones we regard them as "gurus and masters" involved in WTL. I know it's surely because WTL is a wonderful library, but it must be more than a wonderful library to gain such attentions without official force.What do you think WTL's relative success? What's the reason? <p>銆怌++ View銆戯細鎴戠涓嬈℃帴瑙TL鏄湪2000騫?鏈堛傚湪閭f椂錛屾垜灝辨兂錛氣滄病鏈夊畼鏂圭殑鏀寔錛屾病鏈夋枃妗o紝涔熸病鏈夊晢涓氬惞鎹э紝瀹冩渶澶氬彧鑳藉瀛樻椿6涓湀銆傗濅絾鐜板湪15涓湀榪囧幓浜嗭紝瀹冨弽鑰屾祦浼犲緱鏇翠負騫挎硾錛屾洿鍔犵殑鐢熸満鍕冨媰銆傝澶欳++紼嬪簭鍛橈紝灝ゅ叾鏄竴浜涙垜浠墍璁ょ煡鐨勨滀笓瀹垛濅互鍙娾滃ぇ甯堚濓紝閮藉湪浣跨敤WTL銆傛垜褰撶劧鐭ラ亾榪欎富瑕佹槸鍥犱負WTL鐨勫嚭鑹詫紝浣嗘垜鎯籌紝鑳藉鍦ㄦ病鏈夊畼鏂圭殑鍔涢噺鐗墊秹鐨勬儏鍐典笅鍚稿紩濡傛澶氱殑娉ㄦ剰錛學TL涓瀹氳繕鏈夋洿鍑鴻壊鐨勪笢瑗匡紝璇烽棶鎮ㄦ槸濡備綍鐪嬪緟WTL鐨勬垚鍔熷憿錛熷畠鎴愬姛鐨勫師鍥犲張鏄粈涔堬紵</p></font> </p> <p>銆怤enad銆戯細 I think that the main reason of WTL's success is that it did fit the need of developers at the right time. More and more developers started using ATL, and it was natural for them to start using WTL when they needed more UI support. It seems that WTL was perceived as a more open project than others, judging by the support provided by other parties in the development community. Many people did a wonderful job of creating samples, documentation and support for WTL. The support from the programming community is very important part of the acceptance and success of WTL. </p> <p>銆怤enad銆戯細鎴戣涓篧TL鎴愬姛鐨勬渶涓昏鍘熷洜灝辨槸錛屽畠紜疄鑰屼笖鍙婃椂鍦版弧瓚充簡寮鍙戣呯殑闇姹傘傝秺鏉ヨ秺澶氱殑寮鍙戜漢鍛樺紑濮嬩嬌鐢ˋTL錛屽綋浠栦滑闇瑕佹洿澶氱殑UI鏀寔鏃訛紝浠栦滑寰堣嚜鐒剁殑灝變細寮濮嬩嬌鐢╓TL銆?浠庡叾浠栫殑寮鍙戝洟闃熸墍鎻愪緵鏀寔鏉ョ湅錛學TL鐪嬭搗鏉ヤ技涔庤姣斿叾浠栫殑欏圭洰鏇村姞寮鏀俱傝璁稿澶氫漢涓篧TL鍋氫簡澶ч噺宸ヤ綔錛屽錛氬垱寤虹ず渚嬩唬鐮侊紝鎾板啓鏂囨。絳夈俉TL涔嬫墍浠ヨ兘澶熻騫夸負鎺ュ彈騫惰幏寰楀姝ゅぇ鐨勬垚鍔燂紝鏉ヨ嚜浜庤繖浜涘紑鍙戝洟闃熺殑鏀寔緇濆鏄竴涓噸瑕佺殑鍥犵礌銆? </p> <p> <font color="blue">銆怌++ View銆戯細What do you think about MFC? Do you like it? If you don't, why? And the most confusing thing is Managed C++, is it C++? Do the leaders of MC++ really think some C++ users will go to learn it? Do you believe? <p>銆怌++ View銆戯細璇烽棶鎮ㄥ浜嶮FC鏄庝箞鐪嬬殑錛熸偍鍠滄瀹冨悧錛熷鏋滀笉錛屼負浠涔堝憿錛熻繕鏈夛紝鏈璁╀漢榪鋒儜涓嶈В鐨勫氨鏄疢anaged C++浜嗭紝瀹冩槸涓嶆槸C++鍛紵MC++鐨勬彁鍊¤呮槸涓嶆槸鐪熺殑璁や負浼氭湁涓浜汣++鐨勭敤鎴瘋漿鑰屽幓瀛︿範瀹冨憿錛熸偍鐨勭湅娉曞張鏄浣曞憿錛?/p></font> </p> <p>銆怤enad銆戯細 I think that MFC is a great framework library. Don't forget that MFC was designed at the time that C++ compiler was rather limited, and the main platform was 16-bit Windows. Unfortunately, because MFC was designed as a framework, it was really hard to evolve it to use better C++ support in newer compilers, and to add support for new features added to Windows in the meantime. What I don't like about MFC is the DLL approach, which causes many compatibility problems, and framework design, which dictates too many things about app design. </p> <p>Managed C++ is an extension to C++ which allows C++ programs to use managed code. It is very important to understand that you can compile your existing C++ code using MC++ without any changes. MC++ allows developers to use both familiar non-managed C++ and managed code in the same module. That provides an excellent way to extend existing code to interact with managed code, as well to create new projects that can use both managed and traditional C++. </p> <p>銆怤enad銆戯細鎴戣涓篗FC鏄竴涓簡涓嶈搗鐨勬鏋跺簱銆傝涓嶈蹇樹簡錛屽湪MFC琚璁″嚭鏉ュ垵鏈燂紝閭f椂鐨凜++緙栬瘧鍣ㄨ繕鍏鋒湁寰堝鐨勯檺鍒訛紝騫朵笖閭f椂涓昏鐨勫鉤鍙拌繕鍙槸16浣嶇殑Windows銆備笉騫哥殑鏄紝鐢變簬MFC琚璁℃垚涓轟竴涓鏋訛紝浣垮緱鎴戜滑寰堥毦鍒╃敤鏂扮紪璇戝櫒涓偅浜涙洿濂界殑C++鐗規ф潵鏀硅繘瀹冿紝涔熷緢闅懼皢Windows涓殑寰堝鏂扮壒鎬ф坊鍔犲埌MFC涓傛垜涓嶅枩嬈FC鐨勫湴鏂規槸瀹冮珮搴︿緷璧朌LL鐨勭壒鎬р斺斿洜涓哄畠灝嗗鑷磋澶氬吋瀹規ф柟闈㈢殑闂錛涜繕鏈夊氨鏄疢FC鐨勬暣涓鏋惰璁♀斺斿畠鍦ㄥ簲鐢ㄧ▼搴忕殑璁捐涓檺瀹氫簡澶涓滆タ銆? </p> <p>Managed C++鏄疌++鐨勪竴涓墿灞曪紝瀹冨厑璁窩++紼嬪簭寰椾互浣跨敤鍙楃錛坢anaged錛変唬鐮併傛垜浠渶瑕佷簡瑙g殑涓涓緢閲嶈鐨勭壒鎬у氨鏄紝鎴戜滑鍙互浣跨敤MC++鏉ョ紪璇戝凡鏈夌殑C++浠g爜鑰屾棤闇瀵瑰畠浠繘琛屼換浣曟敼鍔ㄣ侻C++鍏佽寮鍙戣呭悓鏃朵嬌鐢ㄤ粬浠墍鐔熸倝鐨勯潪鍙楃浠g爜浠ュ強鍙楃浠g爜鏉ュ紑鍙戝悓涓涓ā鍧椼傝繖灝辨彁渚涗簡涓涓潪甯稿ソ鐨勯斿緞錛屼嬌宸叉湁鐨勪唬鐮佷笌鏂扮殑鍙楃浠g爜鐩鎬簰浣滅敤錛屽茍涔熷彲浣垮緱鎴戜滑鍒涘緩涓涓」鐩紝鍚屾椂浣跨敤鍙楃鐨勫拰浼犵粺鐨凜++浠g爜銆? </p> <p> <font color="blue">銆怌++ View銆戯細In the past 15 years or more, C and C++ is the base of almost all Microsoft's technologies(OS, COM, etc.). We C++ user paid a lot of hard work to catch them, because we felt what we paid was worthy(?). Now, it seems the climate changed. .NET is coming, the world is going to be full of CLRs and/or JVMs. There has been a decampment from C++. So what do you think about the future of C++ (not MC++) in Mircosoft technologies? Will it go away? Will it become a marginal language? <p>銆怌++ View銆戯細鍦ㄨ繃鍘葷殑15騫翠腑錛堢敋鑷蟲洿闀跨殑涓孌墊椂闂村唴錛夛紝C浠ュ強C++鏋勬垚浜嗗嚑涔庢墍鏈塎icrosoft鎶鏈殑鍩虹錛堝錛歄S錛孋OM絳夛級銆傛垜浠繖浜汣++鐢ㄦ埛鑺辮垂浜嗗ぇ閲忕殑鏃墮棿鏉ョ啛鎮夊茍鎺屾彙瀹冧滑錛圕浠ュ強C++錛夛紝鍥犱負鎴戜滑鐩鎬俊鎴戜滑鎵浠樺嚭鐨勪竴瀹氫細鏈夊洖鎶ワ紙?錛夈備絾鐜板湪鐨勯鍚戝ソ鍍忔湁浜嗗緢澶х殑鏀瑰彉銆?NET鍑虹幇浜嗭紝涓栫晫浼間箮灝辮鍏呮枼CLR 錛圕ommon Language Runtime錛屽叕鍏辮璦榪愯搴擄級浠ュ強錛忔垨JVM 錛圝ava Virtual Machine錛孞ava铏氭嫙鏈猴級銆傜幇鍦–++宸茬粡鍑虹幇浜嗛娼殑榪硅薄銆傞偅涔堬紝璇烽棶鎮ㄥ浜嶤++錛堜笉鏄疢C++錛夊湪Microsoft鎶鏈腑鐨勫墠鏅浣曠湅寰咃紵瀹冩槸鍚︿細鐢辨娑堜骸錛熻繕鏄氨姝ゆ撥钀戒負涓闂ㄨ竟緙樿璦錛?/p></font> </p> <p>銆怤enad銆戯細Well, the world is changing too. The new type of development for Web services and connected applications is on the horizon. I think that new languages, like Java, C#, and VB.NET, were developed to address two main issues - to simplify software development and to provide better support for Internet development. Simplifying software development allows more developers to write good applications and cuts down on time needed to finish a project. Supporting Internet development is obviously very important in this time when Internet is used more and more in every part of everyday life. </p> <p>I think that C++ will continue to be an important language, especially for ISV's and for system development. On the other hand, I believe that .NET will be very important platform soon. .NET has the potential to be the main programming platform for the future, but it is reasonable to expect that the transition will take some time. </p> <p>銆怤enad銆戯細鏄殑錛屼笘鐣屼篃宸茬粡鍙戠敓浜嗗彉鍖栥傚浜庣綉緇滄湇鍔′互鍙婅繛鎺ヨ繖鏍風殑鏂板瀷搴旂敤紼嬪簭鐨勫紑鍙戝凡緇忔誕涓婁簡姘撮潰銆傛垜璁や負閭d簺鏂扮殑緙栫▼璇█錛堝Java錛孋#錛屼互鍙奦B.NET錛夐兘鏄拡瀵逛互涓嬩袱涓富瑕佺殑闂鑰屽紑鍙戝嚭鏉ョ殑鈥斺旂畝鍖栬蔣浠剁殑寮鍙戣繃紼嬩互鍙婂浜嶪nternet搴旂敤紼嬪簭寮鍙戞彁渚涙洿濂界殑鐨勬敮鎸併傜畝鍖栬蔣浠剁殑寮鍙戣繃紼嬩嬌寰楁洿澶氱殑寮鍙戣呭彲浠ュ啓鍑烘洿澶氭洿濂界殑搴旂敤紼嬪簭騫跺噺灝戝畬鎴愬紑鍙戦」鐩墍闇瑕佺殑鏃墮棿銆傝屾敮鎸両nternet鐨勫紑鍙戯紝瀵逛簬榪欎釜Internet瓚婃潵瓚婃繁鍏ュ埌鎴戜滑鐨勬棩甯哥敓媧諱腑鐨勬椂浠f潵璇達紝姣棤鐤戦棶鏄竴浠墮潪甯擱噸瑕佺殑浜嬫儏銆? </p> <p>鎴戣涓篊++浼氱戶緇綔涓轟竴闂ㄩ噸瑕佺殑緙栫▼璇█鍙戞尌浣滅敤錛屽挨鍏舵槸瀵歸偅浜涚嫭绔嬭蔣浠跺紑鍙戝晢鍜岄偅浜涚郴緇熺駭寮鍙戞潵璇存洿鏄姝ゃ備粠鍙︿竴鏂歸潰鏉ヨ錛屾垜鐩鎬俊.NET灝嗕細鍦ㄤ笉涔呬互鍚庢垚涓哄彟澶栦竴涓潪甯擱噸瑕佺殑寮鍙戝鉤鍙般傚浜庢湭鏉ユ潵璇達紝.NET鎷ユ湁鎴愪負涓繪祦緙栫▼騫沖彴鐨勬綔鍔涳紝浣嗘垜浠繀欏昏璇嗗埌錛岃繖鏍風殑榪囨浮闃舵鑲畾瑕佹寔緇竴孌墊椂闂淬? </p> <p> <font color="blue">銆怌++ View銆戯細There a lots of beginners in our readers, after they learn (standard) C++, they want to seek a path to master enought Microsoft technologies to be practical and proficient programmers. Could you recommend such a path? Should they learn Win32 API programming? Is it worthy of studying MFC? Is WTL/ATL/STL a reliable solution? Or goto C# directly? Many many people will thank you if you give them frank advice. <p>銆怌++ View銆戯細鎴戜滑鐨勮鑰呬腑鏈夊緢澶氭槸鍒濆鑰咃紝鍦ㄤ粬浠涔犲畬錛堟爣鍑嗭級C++鍚庯紝浠栦滑甯屾湜鑳藉鎵懼埌涓鏉¢亾璺紝鎺屾彙鍒拌凍澶熷鐨凪icrosoft鐨勬妧鏈嬌鑷繁鎴愪負緇忛獙涓板瘜鐨勩佺啛緇冪殑紼嬪簭鍛樸傛偍鑳戒笉鑳界粰鎴戜滑鎸囧嚭榪欐牱鐨勪竴鏉¢亾璺潵鍛紵鎴戜滑鏄笉鏄簲璇ュ涔燱in32 API緙栫▼錛熷涔燤FC鏄惁鏄煎緱鐨勶紵WTL/ATL/STL綆楀緱涓婃槸涓涓彲闈犵殑瑙e喅鏂規鍚楋紵鍙堟垨鏄垜浠簲璇ョ洿鎺ュ涔燙#錛熷鏋滄偍鑳藉緇欐垜浠竴浜涘緩璁紝鐩鎬俊浼氭湁寰堝鐨勪漢涓烘鑰屾劅嬋鎮ㄧ殑銆?/p></font> </p> <p>銆怤enad銆戯細I think that depends on their plans and ambitions. The more of those things you do, the better you are off in the long run. But, you also have to balance that with the practical issues. So, I think that people who see their future in the Internet development can go directly to C# or VB.NET, and study .NET platform. Those who would like to have more knowledge of the Windows platform and services it provides should certainly learn more about Win32 API and libraries that support Windows programming. </p> <p>銆怤enad銆戯細鎴戣涓鴻繖涓昏鍙栧喅浜庝粬浠殑璁″垝浠ュ強闆勫績銆備綘鎵鍋氱殑瓚婂錛屽湪闀挎椂闂寸珵浜変腑浣犲氨瓚婂崰鎹紭鍔褲備笉榪囦綘涔熻娉ㄦ剰淇濇寔涓庡疄闄呴棶棰樼殑騫寵 銆傛垜寤鴻閭d簺鍐沖績浠ュ悗鍙仛Internet鐩稿叧寮鍙戠殑浜哄彲浠ョ洿鎺ュ幓瀛︿範C#鎴栬匳B.NET錛屽悓鏃跺涔?NET騫沖彴銆傝岄偅浜涙洿澶氬湴浜嗚ВWindows騫沖彴浠ュ強瀹冩墍鎻愪緵鐨勬湇鍔℃柟闈㈢煡璇嗙殑浜猴紝褰撶劧灝卞繀欏婚渶瑕佹洿澶氬湴浜嗚В鏈夊叧Win32 API浠ュ強閭d簺鏀寔Windows緙栫▼鐨勫簱鐩稿叧鐨勭煡璇嗐? </p> <p> <font color="blue">銆怌++ View銆戯細Soon after I began to learn WTL, a warm-hearted man posted me a email. He wrote: "You won't be a good WTL programmer if not a good ATL programmer, you won't be a good ATL programmer if not a COM programmer. And once you decide to learn COM, you are beginning your travel to hell." Is COM so difficult to learn? How to study WTL? We must learn API, COM, ATL and WTL in sequence, do we? And what about COM, will it remain to be the core technology of Microsoft, or just be substituted by .NET and dismiss? <p>銆怌++ View銆戯細鍦ㄦ垜鍒氬紑濮嬪涔燱TL鍚庝笉涔咃紝鏈変竴浣嶇儹蹇冧漢緇欐垜鍙戜簡浠介偖浠躲備粬鍐欓亾錛氣滃鏋滀綘涓嶆槸涓涓ソ鐨凙TL紼嬪簭鍛樼殑璇濓紝浣犲氨涓嶅彲鑳芥垚涓轟竴涓ソ鐨刉TL紼嬪簭鍛橈紱濡傛灉浣犱笉浼欳OM緙栫▼鐨勮瘽錛屼綘灝變笉鍙兘鎴愪負涓涓ソ鐨凙TL紼嬪簭鍛橈紱浣嗕竴鏃︿綘鍐沖畾寮濮嬪涔燙OM錛屼綘灝辮繄鍑轟簡韙忓悜鍦扮嫳鐨勭涓姝ャ傗滳OM鏄笉鏄湡鐨勯偅涔堥毦瀛︼紵鎴戜滑搴旇濡備綍鍦版潵瀛︿範WTL鍛紵鎴戜滑鏄笉鏄簲璇ユ寜鐓ц繖鏍風殑欏哄簭瀛︿笅鏉ュ憿錛孉PI->COM->ATL->WTL錛熻繕鏈夛紝COM灝嗕細鍙樺緱濡備綍錛熶粬鏄笉鏄繕鑳藉淇濇寔Microsoft鐨勬牳蹇冩妧鏈繖涓澶磋錛屾姂鎴栨槸琚?NET緇欐浛鎹㈡帀鐒跺悗灝辨娑堝け錛?/p></font> </p> <p>銆怤enad銆戯細I don't think it is necessary to master COM to use and understand WTL. Win32 UI knowledge is more important than COM to understand WTL. But it is true that knowledge of ATL is required, and ATL mainly supports COM. So, COM knowledge is desirable, but not required. </p> <p>I don't think that COM is hell, but it sure does require a lot to learn to be an expert. Keep in mind that many people don't have to be COM experts to use COM, or to use WTL. Just understanding basic principles of COM is enough to use it, and then people can learn more when needed. </p> <p>銆怤enad銆戯細鎴戜笉璁や負浣跨敤鍜岀悊瑙TL灝變竴瀹氳鎺屾彙COM銆傜浉姣斾簬COM鏉ヨ錛學in32 UI鐨勭煡璇嗗浜庣悊瑙TL鏄懼緱鏇翠負閲嶈銆備絾姣棤鐤戦棶鐨勬槸錛孉TL鐨勭浉鍏崇煡璇嗘槸蹇呬笉鍙皯鐨勩傜敱浜嶢TL涓昏浠誨姟灝辨槸鏀寔COM錛屾墍浠ワ紝鏈塁OM鐨勭煡璇嗗彧鏄細鏇村ソ涓浜涜屽凡錛屼絾瀹冧滑騫朵笉鏄繀闇鐨勩? </p> <p>鎴戜篃涓嶈涓篊OM鏄竴涓櫓姊︼紝浣嗘鏃犵枒闂殑鏄紝鎯寵鎴愪負涓涓狢OM涓撳錛岃瀛︾殑涓滆タ瀹炲湪鏄お澶氫簡銆備絾璇瘋浣忎竴浠朵簨鎯咃紝寰堝浣跨敤COM鎴栬匴TL鐨勪漢騫朵笉閮芥槸COM鏂歸潰鐨勪笓瀹躲傝鎯充嬌鐢ㄥ畠浠紝浜轟滑鎵闇浜嗚В鐨勫彧鏄竴浜汣OM鐨勫熀鏈師鐞嗗氨澶熶簡錛屽叾浠栫殑鐩稿叧鐨勭煡璇嗗垯鍙互鍦ㄩ渶瑕佹椂鍐嶅幓瀛︿範銆? </p> <p> <font color="blue">銆怌++ View銆戯細What do you think about Generic Programming? Is it a whole different paradigm from OOP, or just OOP's supplemental facility? Can we combine GP and OOP? In the hard work of design and implement WTL, you must had got an insight about the relationship between OOP and GP, what's it? <p>銆怌++ View銆戯細璇烽棶鎮ㄥ浜庢硾鍨嬬▼搴忚璁℃槸濡備綍鐪嬪緟鐨勶紵瀹冨埌搴曟槸OOP鐨勪竴涓ˉ鍏呭憿錛岃繕鏄畬鍏ㄤ笉鍚屼簬OOP鐨勫彟澶栦竴涓▼搴忚璁¤寖鍨嬪憿錛熸垜浠槸鍚﹀彲浠ュ皢GP浠ュ強OOP涓鍚岃仈鍚堜嬌鐢紵鎴戞兂錛屽湪璁捐鍜屽疄浣滃嚭WTL鐨勮壈鑻﹁繃紼嬩腑錛屽浜嶰OP浠ュ強GP涔嬮棿鐨勫叧緋伙紝鎮ㄤ竴瀹氭湁浜嗚嚜宸辯殑鐪嬫硶錛屾偍鑳戒笉鑳界粰鎴戜滑璇翠竴涓嬪憿錛?/p></font> </p> <p>銆怤enad銆戯細Generic Programming and OOP are very different, mostly because Generic Programming doesn't explicitly express relationships between design elements. They can, however, be used together very efficiently. </p> <p>WTL uses a combination of Generic Programming and OOP design. Templates are mostly used to implement traditional OOP classes. I'd like to point out that WTL doesn't use any "pure" design, and it doesn't strictly follow any design guidelines or styles. I do think, though, that WTL does use one of the main strengths of the C++ language - it uses appropriate paradigm that is the most suitable for a particular problem. </p> <p>銆怤enad銆戯細GP鍜孫OP闈炲父涓嶅悓錛岃繖涓昏鏄敱浜嶨P浠庝笉鏄懼紡鍦拌〃杈懼嚭璁捐鍏冪礌涔嬮棿鐨勫叧鑱旀潵銆傜劧鑰岋紝瀹冧滑涔熷彲浠ヨ闈炲父楂樻晥鍦扮粍鍚堣繍鐢ㄣ? </p> <p>WTL涓嬌鐢ㄤ簡涓縐岹P榪炲悓OOP鐨勮璁°傛垜鍦ㄥ叾涓ぇ閲忎嬌鐢ㄤ簡妯℃澘鏉ュ疄浣滃嚭浼犵粺鐨凮OP涓殑綾匯傛垜寰堜箰鎰忔寚鍑虹殑鏄紝WTL涓茍娌℃湁浣跨敤涓縐嶁滅函鈥濊璁★紝瀹冧篃娌℃湁閬靛驚浠諱綍鐨勮璁℃寚瀵兼柟閽堟垨鑰呰璁¤鏍箋傚彲鏄紝鎴戣繕鏄涓篧TL浣跨敤鍒頒簡C++璇█涓殑鏈涓昏鐨勭簿楂撳鈥斺斿浜庝竴涓壒瀹氱殑闂浣跨敤涓縐嶆渶閫傚悎瀹冪殑閫傚綋鍏歌寖銆? </p> <p> <font color="blue">銆怌++ View銆戯細Recently, the famous C++ pioneer Stanley Lippman joined Microsoft and became a member of Visual C++.NET group. How do you think about this? What message do you think your company like to pass to public? Does this mean Microsoft want to make VC.NET a full-standardized C++ compiler and hold C++ as your core system language? <p>銆怌++ View銆戯細鏈榪戯紝钁楀悕鐨凜++鍏冭佺駭澶у笀Stanley Lippman鍔犲叆浜哅icrosoft騫舵垚涓哄叾VC.NET寮鍙戝皬緇勪腑鐨勪竴鍛樸傝闂偍瀵逛簬姝や簨鏄浣曠湅寰呯殑錛熸偍璁や負Microsoft璇曞浘鍚戝叕浼椾紶鎾竴縐嶄粈涔堟牱鐨勪俊鎭憿錛熻繖鏄惁涔熸剰鍛崇潃Microsoft甯屾湜VC.NET鎴愪負涓涓畬鍏ㄦ爣鍑嗗寲鐨凜++緙栬瘧鍣紝騫剁戶緇繚鎸丆++鐨勬牳蹇冪郴緇熻璦鍦頒綅鍛紵</p></font> </p> <p>銆怤enad銆戯細I think that shows that Microsoft is committed to advance the C++ compiler and language, and ready to get the best people to help. I am sure that VC++.NET will continue to be powerful tool for developing applications, and that it will also include additional capabilities for the .NET development. Compliance with the C++ Standard is an ongoing work, and we will see further improvements there, too. </p> <p>銆怤enad銆戯細鎴戣涓鴻繖鏄劇ず浜哅icrosoft瀵逛簬淇冭繘C++緙栬瘧鍣ㄤ互鍙婅璦緇х畫鍙戝睍鐨勫喅蹇冿紝騫朵負姝ゆ壘鍒頒簡鏈浣充漢閫夋潵鑾峰彇甯姪銆傛垜紜俊VC.NET灝嗕細緇х畫鏄紑鍙戝簲鐢ㄧ▼搴忕殑寮烘湁鍔涘伐鍏鳳紝騫朵笖瀹冨悓鏃惰繕灝嗗寘鍚湁.NET寮鍙戣兘鍔涖傜洰鍓嶆垜浠鍦ㄨ繘琛屽吋瀹笴++鏍囧噯鏂歸潰鐨勫伐浣滐紝涓嶄箙鎴戜滑灝變細鐪嬪埌鎴愭晥銆? </p> <p> <font color="blue">銆怌++ View銆戯細I'm learning WTL and ATL, since you are the author of WTL and a member of ATL group, can you give me some advice? <p>銆怌++ View銆戯細鎴戠幇鍦ㄦ鍦ㄥ涔燱TL浠ュ強ATL錛屾棦鐒舵偍鏄疻TL鐨勪綔鑰咃紝鍚屾椂鍙堟槸ATL寮鍙戝皬緇勪腑鐨勪竴鍛橈紝鎮ㄨ兘涓嶈兘緇欐垜涓浜涘緩璁憿錛?/p></font> </p> <p>銆怤enad銆戯細There are several areas of programming that are very important for WTL and ATL: knowledge of the C++ language in general, understanding of templates, COM for ATL, and Windows UI programming for WTL. Solid knowledge in these areas is very beneficial for WTL and ATL developers, and it also helps to understand the source code for both libraries. </p> <p>I would also like to encourage everybody to write programs. That is the best way to learn how to use any library, or a programming language or operating system. Writing programs often brings problems that must be solved that are not addressed in books. Reading about something is very useful to start learning, writing programs is the best next step. </p> <p>銆怤enad銆戯細瀵逛簬WTL鍜孉TL鏉ヨ錛屾湁濂藉嚑涓紪紼嬫柟闈㈢殑棰嗗煙鏄崄鍒嗛噸瑕佺殑錛氬ぇ浣撲笂鐨凜++璇█鐭ヨ瘑錛屼簡瑙fā鏉匡紝COM錛堝ATL鑰岃█錛夛紝浠ュ強Windows UI緙栫▼錛堝WTL鑰岃█錛夈傚湪榪欎簺棰嗗煙鏈夌潃鍧氬疄鐨勫熀紜瀵逛簬WTL浠ュ強ATL寮鍙戜漢鍛樻潵璇存湁鐫寰堝ぇ鐨勫ソ澶勶紝鍚屾椂瀵逛簬鐞嗚В榪欎袱涓殑婧愪唬鐮佷篃鑳藉璧峰埌甯姪浣滅敤銆? </p> <p>鎴戝悓鏍蜂篃寰堜箰鎰忓幓榧撳姳澶у澶氬啓紼嬪簭銆傝繖涔熸槸瀛︿範濡備綍浣跨敤涓涓▼搴忓簱錛屾垨鑰呬竴闂ㄧ紪紼嬭璦錛屾垨鑰呬竴涓搷浣滅郴緇熺殑涓涓渶濂界殑鏂規硶銆傚湪鍐欑▼搴忕殑榪囩▼涓粡甯鎬細鍑虹幇涓浜涗功鏈笂娌℃湁鎻愬強浣嗗張蹇呴』琚В鍐崇殑闂銆傚湪寮濮嬪涔犳椂璇諱竴浜涗笢瑗挎槸寰堟湁鐢ㄧ殑錛岃屽啓紼嬪簭鍒欐槸鍚戠旱娣卞彂灞曠殑鏈浣蟲柟寮忋? </p> <p> <font color="blue">銆怌++ View銆戯細They say we are in the gate of Post-PC times, it will be a embedded world, and there will be embedded smart device everywhere, and the embedded industry will build a far large market compare to PC's. Do you believe it? Do you think WTL and other C++ template libraries are available and appropriate for embedded development? Are there available for Internet development? <p>銆怌++ View銆戯細鏈変漢璇達紝鎴戜滑鐜板湪宸茬粡澶勪簬鍚嶱C鏃朵唬鐨勯棬鍙o紝鏈潵灝嗕細鏄竴涓祵鍏ョ郴緇熺殑涓栫晫錛屽祵鍏ュ紡鐨勬櫤鑳借澶囧皢浼氭棤鎵涓嶅湪錛屽茍涓斿姣擯C鏉ヨ錛屽祵鍏ョ郴緇熺殑浜т笟灝嗕細鏄竴涓洿澶х殑甯傚満銆傛偍鏄惁鐩鎬俊榪欎簺鍛紵鎮ㄦ槸鍚﹁涓篧TL浠ュ強鍏朵粬鐨勪竴浜汣++妯℃澘搴撳浜庡祵鍏ュ紡寮鍙戜篃閫傜敤鍛紵瀹冧滑鏄惁閫傚悎Internet寮鍙戯紵</p></font> </p> <p>銆怤enad銆戯細Yes, I think that large number of various devices that we use everyday will become small, specialized computers. That doesn't mean that the number and importance of PCs will go down, just that there are many other devices that will be enhanced to be programmable and connected. Those new devices will provide a great opportunity for software developers, because they will all have software and somebody has to write it. </p> <p>Many of the C++ libraries are quite appropriate for embedded development, and WTL would also be in cases where Windows based user interface is important (for example, Pocket PC platform). Great flexibility and small footprint are always very important features for embedded development, so template libraries are in the very good position there. </p> <p>銆怤enad銆戯細鏄殑錛屾垜璁や負鎴戜滑鐜頒粖鎵浣跨敤鐨勫悇縐嶈澶囦腑鐨勫ぇ閮ㄥ垎鍦ㄤ互鍚庨兘灝嗕細婕斿彉鎴愪負涓浜涘皬鐨勶紝鍏鋒湁涓撻棬鐢ㄩ旂殑璁$畻鏈恒備絾榪欏茍涓嶆剰鍛崇潃PC鐨勬暟鐩互鍙婇噸瑕佹у皢浼氱敱姝ら檷浣庯紝鍙笉榪囨槸琛ㄦ槑榪樻湁鐫璁稿鍏朵粬鐨勮澶囬渶瑕佽鍔犲己浠ヤ嬌寰楁垜浠彲浠ュ鍏惰繘琛岀紪紼嬪茍涓旇繛鎺ャ傜敱浜庡繀欏婚渶瑕佹湁杞歡鐨勬敮鎸侊紝鑰岃蔣浠跺張闇瑕佹湁浜烘潵鍐欙紝榪欎簺鏂扮殑璁懼灝嗕細緇欒蔣浠跺紑鍙戜漢鍛樺甫鏉ユ瀬澶х殑鏈洪亣銆? </p> <p>鏈夎澶氱殑C++鍑芥暟搴撻兘鍙敤浜庡祵鍏ョ郴緇熺殑寮鍙戯紝WTL涔熷皢浼氬湪閭d簺Windows鐢ㄦ埛鐣岄潰杈冧負閲嶈鐨勫紑鍙戜腑錛堜緥濡傦紝鍦≒ocket PC騫沖彴涓婇潰寮鍙戯級鍗犳湁涓甯箣鍦般傚浜庡祵鍏ュ紡寮鍙戞潵璇達紝鑹ソ鐨勫脊鎬э紝寰皬鐨勫唴瀛樿楃敤姘歌繙閮戒細鏄緢閲嶈鐨勭壒鎬э紝鑰屾ā鏉垮簱鍦ㄨ繖鏂歸潰鍗犳嵁浜嗕竴涓潪甯稿ソ鐨勫湴浣嶃? </p> <p> <font color="blue">銆怌++ View銆戯細In the past 7 years or more, COM is Microsoft's core technology. And we now can see that in the next decade, the core role may be .NET. My question is, what's wrong with COM? Where will COM be? Will it disappear? Will it be substituted by something else? What's the relationship between COM and .NET? Is .NET based on COM? Is it worthy of learning COM now? <p>銆怌++ View銆戯細鍦ㄨ繃鍘葷殑7騫達紙鐢氳嚦鏇撮暱鐨勪竴孌墊椂闂達級鍐咃紝COM閮芥槸Microsoft涓殑鏍稿績鎶鏈傜幇鍦ㄦ垜浠彲浠ラ瑙佸埌錛屽湪涓嬩竴涓崄騫撮棿錛岃繖涓牳蹇冨皢浼氬彉涓?NET銆傛垜鐨勯棶棰樺氨鏄紝COM鏈変粈涔堣繃閿欙紵COM灝嗕綍鍘諱綍浠庯紵瀹冩槸鍚︿細閫愭笎娑堝け鍛紝榪樻槸浼氳鍏朵粬鐨勪竴浜涙妧鏈粰鏇夸唬錛烠OM鍜?NET涔嬮棿鐨勫叧緋繪槸浠涔堟牱鐨勬儏鍐碉紵.NET鏄惁鏄熀浜嶤OM涔嬩笂鍛紵鐜板湪瀛︿範COM鏄笉鏄繕鍊煎緱錛?/p></font> </p> <p>銆怤enad銆戯細Maybe you shouldn't ask what is wrong with COM, but just think of .NET as the evolution of COM. .NET extends what was started with COM- creating reusable binary components - and brings additional important features: rich metadata, great run-time, built-in security, versioning, etc. All of these new features are important for development today, and it is really great that .NET has extensive support for them. Interoperability between .NET and COM is also provided, so that the previously developed COM components can still be used in the .NET environment. </p> <p>I still think that it is a good idea to learn COM - it is a great first step even for people who want to learn .NET, and it also provides better understanding of the design and implementation of .NET itself. </p> <p>銆怤enad銆戯細鎴栬浣犱笉搴旇闂瓹OM鏈変粈涔堣繃閿欙紝鑰屾槸搴旇鎶?NET鐪嬫垚COM鐨勮繘鍖栥?NET鎵╁睍浜咰OM鏈鍒濈殑鐩殑鈥斺斿垱寤哄彲閲嶇敤鐨勪簩榪涘埗紼嬪簭緇勪歡鈥斺斿茍鍚戝叾涓坊鍔犱簡寰堝閲嶈鐨勭壒鎬э細涓板瘜鐨勫厓鏁版嵁錛屼簡涓嶈搗鐨勮繍琛屽簱錛屽唴寤虹殑瀹夊叏鏈哄埗錛岀増鏈満鍒剁瓑銆傚浜庣幇浠婄殑杞歡寮鍙戞潵璇達紝鎵鏈夌殑榪欎簺鏂扮殑鐗規ч兘闈炲父閲嶈錛屾墍浠?NET鑳藉騫挎硾鍦版敮鎸佸畠浠紝鏄竴浠跺緢浼熷ぇ鐨勪駭鍝併侻icrosoft鍚屾椂涔熸彁渚涗簡鍦?NET鍜孋OM涔嬮棿榪涜浜掓搷浣滅殑鑳藉姏錛岃繖浣垮緱浠ュ墠鎵寮鍙戝嚭鏉ョ殑COM緇勪歡鍦?NET鐜涓悓鏍蜂篃鑳藉寰楀埌浣跨敤銆? </p> <p>鎴戜粛鐒惰涓哄涔燙OM鏄竴涓緢濂界殑涓繪剰鈥斺斿畠鐢氳嚦瀵逛簬閭d簺甯屾湜瀛︿範.NET鐨勪漢浠潵璇翠篃鏄竴涓緢濂界殑寮绔紝瀛︿範COM鍚屾椂涔熸湁鍔╀簬鎴戜滑鏇存繁鍏ュ湴鐞嗚В .NET鏈韓鐨勮璁″拰瀹炵幇銆? </p> <p> <font color="blue">銆怌++ View銆戯細I know you must be a C++ fan. Now the language is facing lots of challenges. To counterattack, Dr. Stroustrup suggest to develop many useful libraries, and teach the programmers to use C++ as a high level language. Now there are several wonderful modern C++ libraries. Aside of ATL, WTL and STL, there are still Boost library, MTL, ACE/TAO, DTL, etc. It seems the C++ community is preparing a movement. Do you think the movement will success? Why? What are your colleagues'(in Microsoft VC.NET group) attitude towards such a movement? <p>銆怌++ View銆戯細鎴戠寽鎯蟲偍鑲畾鏄竴涓狢++鐖卞ソ鑰呫傜幇鍦ㄨ繖闂ㄨ璦闈㈠鐫璁稿鐨勬寫鎴樸備綔涓哄弽鍑繪帾鏂斤紝Stroustrup鍗氬+鎻愯寮鍙戣澶氭湁鐢ㄧ殑搴擄紝騫跺紩瀵糃++紼嬪簭鍛樻妸C++褰撲綔涓闂ㄩ珮綰ц璦鏉ヤ嬌鐢ㄣ傜幇鍦ㄦ垜浠凡緇忓彲浠ュ緱鍒板ソ鍑犱釜鏋佸ソ鐨勭幇浠g殑C++搴擄紝闄ゅ幓ATL銆乄TL浠ュ強STL涔嬪錛岃繕鏈塀oost搴撱丮TL銆丄CE/TAO銆丏TL絳夈備竴鍒囬兘鏄劇ず鐫C++紺懼尯姝e湪閰濋吙鐫涓嬈″彉闈┿傝闂偍瑙夊緱榪欏満鍙橀潻鑳藉惁鎴愬姛錛熶負浠涔堬紵鎮ㄧ殑閭d簺Microsoft涓殑VC.NET寮鍙戝皬緇勪腑鐨勫悓浜嬪浜庢鎬佸害鏄庢牱鐨勶紵</p></font> </p> <p>銆怤enad銆戯細C++ is a great language and its importance remains high, even with the new challenges. Libraries are an excellent addition to the language itself, as they provide very useful reusable code for developers. The existence of many great C++ libraries shows the size and strength of the C++ community. I think that is already a success, and that it will continue. You can be sure that the VC++.NET group is aware of the existing libraries, and I expect them to continue to enhance the support for them. </p> <p>銆怤enad銆戯細C++鏄竴闂ㄤ紵澶х殑璇█錛屽嵆渚塊亣鍒頒簡鏂扮殑鎸戞垬錛屽畠浠嶇劧灝嗘槸闈炲父閲嶈鐨勩傜▼搴忓簱瀵逛簬璇█鏈韓鏄瀬濂界殑琛ュ厖錛屽畠浠負寮鍙戣呮彁渚涗簡涓浜涘崄鍒嗘湁鐢ㄧ殑鍙噸鐢ㄤ唬鐮併傚瓨鍦ㄥ姝や紬澶氱殑銆佷簡涓嶈搗C++紼嬪簭搴擄紝榪欎歡浜嬫儏鏈韓灝辮〃鏄庝簡C++紺懼尯鐨勫簽澶у拰寮哄ぇ銆傛垜璁や負榪欏満鍙橀潻宸茬粡鎴愬姛浜嗭紝騫朵笖浼氫竴鐩存垚鍔熶笅鍘匯備綘浠彲浠ユ斁蹇冿紝VC.NET寮鍙戠粍鏄笉浼氬榪欎簺宸叉湁鐨勭▼搴忓簱鐔熻鏃犵澒鐨勶紝鎴戦鏈熶粬浠細涓嶆柇鍦板姞寮哄浜庤繖浜涘簱鐨勬敮鎸併? </p> <p> <font color="blue">銆怌++ View銆戯細The last question. Since lots of people don鈥檛 acquaint themselves with WTL, now we have a chance for you, the father of WTL, to introduce WTL in a short speech here. What would you like to speak? <p>銆怌++ View銆戯細鏈鍚庝竴涓棶棰樸傛棦鐒惰澶氫漢騫朵笉浜嗚ВWTL錛屼綔涓篧TL涔嬬埗錛屾偍鐜板湪鏈夋満浼氬湪榪欓噷鍋氫竴涓紨璁詫紝璇風畝鐭湴浠嬬粛涓涓媁TL銆?/p></font> </p> <p>銆怤enad銆戯細WTL is a template based library for user interface development. It extends ATL to provide classes for implementing user interface for applications, components, and controls. It provides classes for various user interface elements: top-level windows, MDI, standard and common controls, common dialogs, property sheets and pages, GDI objects, UI updating, scrollable windows, splitter windows, command bars, etc. </p> <p>WTL is implemented using the same template architecture as ATL, so it is a natural fit for ATL developers. It also doesn't alter or hide Windows specific constructs, thus allowing Windows programmers to use WTL without surprises. The important design goal of WTL was to avoid inter-dependencies - classes themselves do not reference other WTL classes. That means that your program will contain just the code that you actually use, and nothing else. Coupled with the use of templates, this allows creation of very small programs without run-time dependencies. </p> <p>WTL delivers the object oriented way to program for the Windows user interface, while keeping the code size small. It also provides a great foundation that developers can extend with their own classes. </p> <p>And finally - WTL was written with a hope that developers will enjoy using it. I hope you will use it and enjoy it, too. </p> <p>WTL鏄竴涓熀浜庢ā鏉跨殑銆佷笓涓哄紑鍙戠敤鎴風晫闈㈢殑紼嬪簭搴撱傚畠鎵╁睍浜咥TL錛屽茍鎻愪緵浜嗕竴浜涚被鐢ㄦ潵瀹炵幇搴旂敤紼嬪簭鐨勭敤鎴風晫闈€佺粍浠跺拰鎺т歡銆傚畠鎻愪緵浜嗗悇縐嶇被鏉ユ敮鎸佸悇縐嶅悇鏍風殑鐢ㄦ埛鐣岄潰鍏冪礌錛氶《綰х獥鍙c丮DI銆佹爣鍑嗘帶浠跺拰閫氱敤鎺т歡銆侀氱敤鐨勫璇濇銆佸睘鎬ц〃浠ュ強灞炴ч〉銆丟DI瀵硅薄銆乁I鏇存柊銆佸彲鍗峰姩鐨勭獥鍙c佸垎鍓茬獥鍙c佸懡浠ゆ潯絳夌瓑鈥︹? </p> <p>WTL鐨勫疄鐜頒嬌鐢ㄤ簡鍜孉TL涓鏍風殑妯℃澘鏋舵瀯錛屾墍浠ュ浜嶢TL寮鍙戣呮樉寰楀緢鑷劧銆傚悓鏃跺畠騫舵病鏈夋敼鍙樻垨鑰呮槸闅愯棌閭d簺Windows鐩稿叧緇撴瀯錛岄偅浜沇indows紼嬪簭鍛樺湪浣跨敤WTL鏃朵篃涓嶄細鎰熷埌寰堝悆鎯娿俉TL鐨勪竴涓富瑕佽璁″師鍒欏氨鏄伩鍏嶅湪娌℃湁寮曠敤鍒板叾浠朩TL綾繪椂錛屽嚭鐜頒笉蹇呰鐨勫唴閮ㄤ緷璧栥傝繖鎰忓懗鐫鎴戜滑鐨勭▼搴忓皢鍙寘鍚湁鎴戜滑瀹為檯涓婃墍浣跨敤鐨勪唬鐮侊紝闄ゆ涔嬪鍐嶆棤鍏朵粬鐨勪笢瑗褲傚姞涓婁簡妯℃澘鐨勪嬌鐢ㄥ悗錛岃繖鏍峰仛寰楀埌鐨勭粨鏋滃氨鏄竴浜涢潪甯稿皬鐨勶紝涓嶄緷璧栦簬榪愯搴撶殑紼嬪簭銆? </p> <p>WTL涓撴敞浜庣敤闈㈠悜瀵硅薄鐨勬柟娉曟潵緙栧啓Windows鐨勭敤鎴風晫闈㈢▼搴忥紝鍚屾椂淇濇寔浠g爜鐨勫昂瀵稿緢灝忋傚悓鏃訛紝瀹冧篃涓哄紑鍙戣呮彁渚涗簡涓涓緢濂界殑鍩虹錛屽彲浠ュ啓鏂扮殑綾繪潵鎵╁睍WTL銆? </p> <p>鏈鍚庯紝鎴戝湪緙栧啓WTL鏃跺氨甯屾湜寮鍙戣呰兘澶熷枩嬈㈠湪寮鍙戜腑浣跨敤瀹冦傛垜鍚屾牱涔熷笇鏈涙偍鑳藉浣跨敤瀹冨茍鍠滄涓婂畠銆?/p> <img src ="http://m.shnenglu.com/weiyan/aggbug/9407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/weiyan/" target="_blank">will</a> 2006-07-05 00:14 <a href="http://m.shnenglu.com/weiyan/archive/2006/07/05/9407.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://987527.com" target="_blank">亚洲国产你懂的</a>| <a href="http://ez4444.com" target="_blank">欧美激情在线免费观看</a>| <a href="http://kasimcoal.com" target="_blank">欧美怡红院视频一区二区三区</a>| <a href="http://xxxyyy168.com" target="_blank">亚洲黄网站在线观看</a>| <a href="http://maoshimh.com" target="_blank">在线精品国精品国产尤物884a</a>| <a href="http://www-49hk.com" target="_blank">国产日韩欧美在线观看</a>| <a href="http://yh5557.com" target="_blank">国产亚洲午夜高清国产拍精品</a>| <a href="http://woshinannan741.com" target="_blank">国产精品一区二区在线</a>| <a href="http://julong-ads.com" target="_blank">国产欧美一区二区三区在线老狼 </a>| <a href="http://788997.com" target="_blank">老牛嫩草一区二区三区日本</a>| <a href="http://300644.com" target="_blank">免费日韩av电影</a>| <a href="http://pnxingmei.com" target="_blank">欧美日韩精品系列</a>| <a href="http://baixinlocal.com" target="_blank">国产精品视频一</a>| <a href="http://papala4444.com" target="_blank">黄色日韩精品</a>| <a href="http://dk13studio.com" target="_blank">99精品视频免费观看</a>| <a href="http://55kam.com" target="_blank">亚洲欧美一区二区三区极速播放 </a>| <a href="http://czsanlin.com" target="_blank">国产精品自拍在线</a>| <a href="http://cp50088.com" target="_blank">国产一级揄自揄精品视频</a>| <a href="http://jiuzuifusheng.com" target="_blank">在线国产日韩</a>| <a href="http://epiegame.com" target="_blank">亚洲图片在线观看</a>| <a href="http://0085212.com" target="_blank">久久久夜夜夜</a>| <a href="http://szxrdr.com" target="_blank">日韩亚洲综合在线</a>| <a href="http://sxhrsmjj.com" target="_blank">性色av一区二区三区在线观看</a>| <a href="http://iietao.com" target="_blank">亚洲人体大胆视频</a>| <a href="http://4y9k.com" target="_blank">亚洲欧美中文日韩在线</a>| <a href="http://cca22.com" target="_blank">欧美成人免费网站</a>| <a href="http://725443.com" target="_blank">亚洲一级在线</a>| <a href="http://412342.com" target="_blank">老司机亚洲精品</a>| <a href="http://filmcameralibrary.com" target="_blank">欧美天天视频</a>| <a href="http://zj-jufeng.com" target="_blank">亚洲国产一二三</a>| <a href="http://xxoo668.com" target="_blank">午夜精品视频在线观看</a>| <a href="http://www446168.com" target="_blank">欧美大片一区二区</a>| <a href="http://668527.com" target="_blank">欧美一级一区</a>| <a href="http://5849595.com" target="_blank">国产精品成人观看视频免费</a>| <a href="http://990288.com" target="_blank">亚洲国产你懂的</a>| <a href="http://mm910.com" target="_blank">香蕉久久夜色精品国产</a>| <a href="http://188267.com" target="_blank">亚洲国产一区二区在线</a>| <a href="http://73cao.com" target="_blank">久久成人免费电影</a>| <a href="http://chaoxibg.com" target="_blank">国产精品theporn</a>| <a href="http://99hhbb.com" target="_blank">亚洲日本视频</a>| <a href="http://710191.com" target="_blank">久久综合五月</a>| <a href="http://xianjiacf.com" target="_blank">亚洲欧美一区在线</a>| <a href="http://www-xj788.com" target="_blank">欧美日韩一区二区三区四区在线观看</a>| <a href="http://15013010203.com" target="_blank">国产伦精品一区</a>| <a href="http://81plas.com" target="_blank">中文成人激情娱乐网</a>| <a href="http://uuuu79.com" target="_blank">欧美激情视频免费观看</a>| <a href="http://08xxxc.com" target="_blank">午夜宅男欧美</a>| <a href="http://621762.com" target="_blank">国产欧美精品</a>| <a href="http://24kshopss.com" target="_blank">亚洲免费视频网站</a>| <a href="http://xhs1039.com" target="_blank">日韩图片一区</a>| <a href="http://jdavmm.com" target="_blank">欧美日韩大片一区二区三区</a>| <a href="http://h15h15.com" target="_blank">亚洲人成在线观看网站高清</a>| <a href="http://hongmoyi.com" target="_blank">美国成人直播</a>| <a href="http://wzlingfeng.com" target="_blank">久久精品毛片</a>| <a href="http://596361.com" target="_blank">好吊色欧美一区二区三区视频</a>| <a href="http://wwwp6660.com" target="_blank">性欧美大战久久久久久久久</a>| <a href="http://xccp4888.com" target="_blank">一区二区三区久久精品</a>| <a href="http://4123123.com" target="_blank">欧美日韩高清区</a>| <a href="http://lzklpc.com" target="_blank">在线亚洲观看</a>| <a href="http://niceboybao.com" target="_blank">一本色道久久综合一区</a>| <a href="http://4430x.com" target="_blank">欧美偷拍一区二区</a>| <a href="http://bjzgmember.com" target="_blank">一区二区三区福利</a>| <a href="http://www-35777.com" target="_blank">亚洲人成77777在线观看网</a>| <a href="http://492541.com" target="_blank">猛干欧美女孩</a>| <a href="http://tubcup.com" target="_blank">亚洲精品社区</a>| <a href="http://488918.com" target="_blank">亚洲伦理自拍</a>| <a href="http://tristooges.com" target="_blank">国产精品国产福利国产秒拍</a>| <a href="http://www48929.com" target="_blank">亚洲主播在线</a>| <a href="http://qvod777.com" target="_blank">亚洲欧美文学</a>| <a href="http://www3344uh.com" target="_blank">伊人狠狠色丁香综合尤物</a>| <a href="http://bkksd.com" target="_blank">免费一区二区三区</a>| <a href="http://zhhtianyi.com" target="_blank">欧美成人精品不卡视频在线观看</a>| <a href="http://cl5555.com" target="_blank">亚洲精品国产精品乱码不99按摩</a>| <a href="http://llamkos.com" target="_blank">亚洲国产精品久久精品怡红院</a>| <a href="http://428820.com" target="_blank">欧美va天堂</a>| <a href="http://ztqsfw.com" target="_blank">亚洲一区二区欧美日韩</a>| <a href="http://bjmrkj.com" target="_blank">中文精品一区二区三区</a>| <a href="http://fuwu56.com" target="_blank">国产欧美精品va在线观看</a>| <a href="http://www151zh.com" target="_blank">久久夜色精品一区</a>| <a href="http://wtoykd.com" target="_blank">欧美成人精品一区</a>| <a href="http://hongzaixian.com" target="_blank">亚洲一本大道在线</a>| <a href="http://xmzszx.com" target="_blank">欧美一区二区三区在线播放</a>| <a href="http://wwwhhh396.com" target="_blank">黄色亚洲免费</a>| <a href="http://wwwmm131.com" target="_blank">亚洲图片在线</a>| <a href="http://www-4157.com" target="_blank">欧美在线中文字幕</a>| <a href="http://783956.com" target="_blank">亚洲第一视频网站</a>| <a href="http://tfccrk.com" target="_blank">日韩亚洲视频在线</a>| <a href="http://75yyyy.com" target="_blank">国产在线精品自拍</a>| <a href="http://3wbb.com" target="_blank">亚洲精品1区</a>| <a href="http://www-116036.com" target="_blank">国产精品露脸自拍</a>| <a href="http://9931111.com" target="_blank">久久影视精品</a>| <a href="http://xhtd688.com" target="_blank">欧美视频观看一区</a>| <a href="http://www-333304.com" target="_blank">久久婷婷麻豆</a>| <a href="http://hlyjh.com" target="_blank">欧美亚韩一区</a>| <a href="http://samucorvin.com" target="_blank">美国三级日本三级久久99</a>| <a href="http://analemi.com" target="_blank">欧美日韩亚洲一区二区三区四区</a>| <a href="http://7171152.com" target="_blank">欧美资源在线</a>| <a href="http://5c55c5c.com" target="_blank">欧美v日韩v国产v</a>| <a href="http://fc3332.com" target="_blank">亚洲欧美日韩在线综合</a>| <a href="http://1188188.com" target="_blank">久久人人97超碰精品888</a>| <a href="http://9924338.com" target="_blank">亚洲午夜久久久久久尤物</a>| <a href="http://036762.com" target="_blank">欧美一区在线直播</a>| <a href="http://3dxxoo.com" target="_blank">在线视频你懂得一区</a>| <a href="http://hgx123.com" target="_blank">久久精品九九</a>| <a href="http://xigou666.com" target="_blank">亚洲欧美中文日韩在线</a>| <a href="http://9273829.com" target="_blank">欧美成人国产一区二区</a>| <a href="http://cp50088.com" target="_blank">久久精品在线观看</a>| <a href="http://7777525.com" target="_blank">欧美日韩一区自拍</a>| <a href="http://kkwwxx.com" target="_blank">欧美激情第三页</a>| <a href="http://tp-88.com" target="_blank">国产日韩在线视频</a>| <a href="http://gbandal.com" target="_blank">亚洲看片免费</a>| <a href="http://4430x.com" target="_blank">亚洲激情社区</a>| <a href="http://by4425.com" target="_blank">久久国产99</a>| <a href="http://880895.com" target="_blank">欧美一区成人</a>| <a href="http://83319b.com" target="_blank">欧美三级欧美一级</a>| <a href="http://wu52vip.com" target="_blank">亚洲国产天堂久久综合网</a>| <a href="http://huayoue.com" target="_blank">国产日韩欧美视频在线</a>| <a href="http://66jj99.com" target="_blank">99热这里只有成人精品国产</a>| <a href="http://www278999.com" target="_blank">亚洲国产小视频</a>| <a href="http://www497171a.com" target="_blank">久久成人一区二区</a>| <a href="http://58yewu.com" target="_blank">欧美亚洲午夜视频在线观看</a>| <a href="http://gykfqzgpt.com" target="_blank">欧美日产一区二区三区在线观看 </a>| <a href="http://05ec.com" target="_blank">亚洲精品日韩在线</a>| <a href="http://mimi78.com" target="_blank">伊大人香蕉综合8在线视</a>| <a href="http://521nb.com" target="_blank">亚洲一区二区在</a>| <a href="http://ktt2048.com" target="_blank">99国内精品</a>| <a href="http://bkf23.com" target="_blank">欧美成人一品</a>| <a href="http://mathck.com" target="_blank">欧美国产日韩一区二区</a>| <a href="http://zz-777.com" target="_blank">黄色成人在线免费</a>| <a href="http://993934.com" target="_blank">久久久精品五月天</a>| <a href="http://022291.com" target="_blank">欧美在线免费视屏</a>| <a href="http://by3259.com" target="_blank">国产精品久久久久久av下载红粉 </a>| <a href="http://qvod777.com" target="_blank">欧美一区二区三区免费看</a>| <a href="http://yiqiluntan.com" target="_blank">中文高清一区</a>| <a href="http://jivbus.com" target="_blank">欧美调教vk</a>| <a href="http://488918.com" target="_blank">亚洲一区在线免费</a>| <a href="http://kanzhelu31.com" target="_blank">亚洲欧美文学</a>| <a href="http://817794.com" target="_blank">国产日韩欧美二区</a>| <a href="http://ddh345.com" target="_blank">久久国产精彩视频</a>| <a href="http://yy6024.com" target="_blank">另类欧美日韩国产在线</a>| <a href="http://tefahsop.com" target="_blank">黄色成人免费网站</a>| <a href="http://xiaoyaer.com" target="_blank">久久综合色播五月</a>| <a href="http://fengboll.com" target="_blank">亚洲国产99精品国自产</a>| <a href="http://y3u7.com" target="_blank">亚洲精品麻豆</a>| <a href="http://8xv0.com" target="_blank">欧美日韩国产123</a>| <a href="http://susan5.com" target="_blank">亚洲精品国产日韩</a>| <a href="http://ylsnuha.com" target="_blank">国产精品亚洲美女av网站</a>| <a href="http://yujiaosanye.com" target="_blank">99国产欧美久久久精品</a>| <a href="http://3451215.com" target="_blank">亚洲一区二区三区视频播放</a>| <a href="http://youjizzbox.com" target="_blank">欧美视频一区二区在线观看</a>| <a href="http://9113i.com" target="_blank">一区二区三区欧美激情</a>| <a href="http://xxxcalls.com" target="_blank">亚洲欧美乱综合</a>| <a href="http://kk1xx-com.com" target="_blank">国产手机视频一区二区</a>| <a href="http://f9494.com" target="_blank">久久久午夜视频</a>| <a href="http://551692.com" target="_blank">亚洲黑丝在线</a>| <a href="http://by4433.com" target="_blank">一二三区精品</a>| <a href="http://cl6m.com" target="_blank">国产精品播放</a>| <a href="http://17ccem.com" target="_blank">欧美在线视频导航</a>| <a href="http://jiazhuangma.com" target="_blank">欧美肥婆在线</a>| <a href="http://njhuike.com" target="_blank">亚洲午夜激情网站</a>| <a href="http://wwwavtb1122.com" target="_blank">国产精品久久久久久久久</a>| <a href="http://www993997.com" target="_blank">午夜亚洲精品</a>| <a href="http://avtaobao7788.com" target="_blank">欧美 日韩 国产在线</a>| <a href="http://hwgjcm.com" target="_blank">日韩一区二区免费高清</a>| <a href="http://szxrdr.com" target="_blank">国产精品视频网址</a>| <a href="http://www-35777.com" target="_blank">欧美在线观看日本一区</a>| <a href="http://149155.com" target="_blank">欧美电影在线免费观看网站</a>| <a href="http://tongrenyaoye.com" target="_blank">日韩午夜在线电影</a>| <a href="http://dsjgqc.com" target="_blank">国产日韩精品一区二区三区</a>| <a href="http://cloakok.com" target="_blank">久久人人精品</a>| <a href="http://www40255.com" target="_blank">一区二区三区四区五区视频 </a>| <a href="http://qiansemf.com" target="_blank">欧美激情一级片一区二区</a>| <a href="http://www930666.com" target="_blank">亚洲伦理一区</a>| <a href="http://yd3399.com" target="_blank">裸体素人女欧美日韩</a>| <a href="http://ahqdlq.com" target="_blank">一本大道av伊人久久综合</a>| <a href="http://k91cm.com" target="_blank">欧美电影免费观看大全</a>| <a href="http://9876666.com" target="_blank">一本久道综合久久精品</a>| <a href="http://ffff53.com" target="_blank">久久精品国产77777蜜臀</a>| <a href="http://23230066.com" target="_blank">亚洲国产专区</a>| <a href="http://dailymailnepal.com" target="_blank">国产精品三区www17con</a>| <a href="http://4449992.com" target="_blank">久久亚洲精品欧美</a>| <a href="http://www5xzz1.com" target="_blank">亚洲线精品一区二区三区八戒</a>| <a href="http://sifeksa.com" target="_blank">国产在线不卡</a>| <a href="http://ycgg008.com" target="_blank">欧美日韩你懂的</a>| <a href="http://shanghaijiagu.com" target="_blank">久久久久久69</a>| <a href="http://119663.com" target="_blank">久久乐国产精品</a>| <a href="http://chunhuigk.com" target="_blank">亚洲视频第一页</a>| <a href="http://3dpasion.com" target="_blank">在线观看一区</a>| <a href="http://niu96.com" target="_blank">国产精品美女主播</a>| <a href="http://330310c.com" target="_blank">欧美成人精品在线播放</a>| <a href="http://ddnwater.com" target="_blank">欧美在线综合视频</a>| <a href="http://59812mh.com" target="_blank">一区二区三区精品在线</a>| <a href="http://jobmrleehxx.com" target="_blank">国内揄拍国内精品少妇国语</a>| <a href="http://wwwsenvpu.com" target="_blank">欧美日韩在线播放三区四区</a>| <a href="http://yw1998.com" target="_blank">麻豆精品视频在线观看视频</a>| <a href="http://400206.com" target="_blank">欧美有码视频</a>| <a href="http://8xfore.com" target="_blank">亚洲午夜成aⅴ人片</a>| <a href="http://72nnnn.com" target="_blank">亚洲欧洲在线视频</a>| <a href="http://www433444.com" target="_blank">欧美黄色免费网站</a>| <a href="http://1390744.com" target="_blank">久久综合九九</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>