锘??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠色丁香婷综合久久,久久一日本道色综合久久,亚洲欧美影音先锋http://m.shnenglu.com/gracelee/zh-cnSun, 16 Nov 2025 13:54:27 GMTSun, 16 Nov 2025 13:54:27 GMT60BSTR CComBSTR鍙?qiáng)ATL瀛楃涓茶漿鎹㈠畯http://m.shnenglu.com/gracelee/archive/2011/12/03/161380.html灝忚懕铇擱叡灝忚懕铇擱叡Sat, 03 Dec 2011 14:56:00 GMThttp://m.shnenglu.com/gracelee/archive/2011/12/03/161380.htmlhttp://m.shnenglu.com/gracelee/comments/161380.htmlhttp://m.shnenglu.com/gracelee/archive/2011/12/03/161380.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/161380.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/161380.html闃呰鍏ㄦ枃

]]>
DOM緙栫▼涓殑鎺ュ彛寮曠敤璁℃暟http://m.shnenglu.com/gracelee/archive/2011/12/01/161260.html灝忚懕铇擱叡灝忚懕铇擱叡Wed, 30 Nov 2011 16:38:00 GMThttp://m.shnenglu.com/gracelee/archive/2011/12/01/161260.htmlhttp://m.shnenglu.com/gracelee/comments/161260.htmlhttp://m.shnenglu.com/gracelee/archive/2011/12/01/161260.html#Feedback1http://m.shnenglu.com/gracelee/comments/commentRss/161260.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/161260.html 鍦–++ DOM緙栫▼涓紝閫氳繃DOM瀵硅薄鎺ュ彛鐨勫悇縐嶅嚱鏁拌幏寰楃殑鎸囧悜鍚勭DOM瀵硅薄鐨勬帴鍙f寚閽堬紝鍏跺紩鐢ㄨ鏁扮殑鍙樺寲鏄庢牱鐨勶紵鍦ㄧ▼搴忎腑璇ュ浣曚嬌鐢紙鏄懼紡鎴栭殣寮忚皟鐢ˋddRef錛夊拰閲婃斁錛堟樉寮忚皟鐢≧elease錛夋帴鍙f寚閽堝憿錛?br />
MSDN DOM sample 涓婄殑涓涓ず渚嬪緢濂界殑璇存槑浜?jiǎn)杩欎簺鍘熷垯锛屼笅闈㈠杩櫧媷鏂囩珷鐨勪唬鐮佸仛浜涙葷粨璇存槑銆?br />
鎬葷粨涓涓嬶紝DOM鎺ュ彛鎸囬拡浣跨敤鍜岄噴鏀劇殑瑙勫緥涓猴細(xì)
1. 閫氳繃DOM瀵硅薄鎺ュ彛鍑芥暟錛堝綋鐒朵篃鍖呮嫭閫氳繃CoCreateInstance鑾峰緱鐨処XMLDOMDocument錛夎幏寰楃殑鎺ュ彛鎸囬拡錛岄渶瑕佹樉寮忕殑璋冪敤 Release閲婃斁銆傝繖浜涘嚱鏁板IXMLDOMDocument->createElement, IXMLDOMNode->appendChild銆?br /> 2. 瀵逛簬鎵嬪姩璧嬪肩殑鎺ュ彛鎸囬拡錛堝浠g爜涓殑pElemA = pElemOut錛夛紝闇瑕佹樉寮忕殑鍦ㄨ璧嬪肩殑鎸囬拡涓婏紙pElemA錛夎皟鐢ˋddRef鍜孯elease錛屾潵澧炪佸噺寮曠敤璁℃暟銆?br /> 3.鍏朵粬鐨勪嬌鐢ㄥ垯鏃犻渶澧炲噺寮曠敤璁℃暟銆?br />
鍏朵粬錛?br /> Release()榪斿洖寮曠敤璁℃暟鍑?鍚庣殑鍊鹼紝鍗沖鏋滃師鏉ュ紩鐢ㄨ鏁頒負(fù)1錛屽垯Release()榪斿洖鍊間負(fù)0.
IXMLDOMNode->appendChild()鐨勮緭鍑哄弬鏁版帴鍙f寚閽堝湪鍊間笂涓庤緭鍏ュ弬鏁版帴鍙f寚閽堢浉鍚岋紝鍥犳浜岃呮寚鍚戝悓涓涓狣OM瀵硅薄銆?br />

]]>
鐢–瀹炵幇鐨勪竴涓熀鏈珻OM鎺ュ彛IFoo錛堟潵鑷狢OM Programmer's Cookbook錛夆斺擟瀹炵幇COM鎺ュ彛緋誨垪2http://m.shnenglu.com/gracelee/archive/2009/05/11/82582.html灝忚懕铇擱叡灝忚懕铇擱叡Mon, 11 May 2009 08:28:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/05/11/82582.htmlhttp://m.shnenglu.com/gracelee/comments/82582.htmlhttp://m.shnenglu.com/gracelee/archive/2009/05/11/82582.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/82582.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/82582.html鍦?a href="http://m.shnenglu.com/gracelee/archive/2009/04/29/81414.html">C瀹炵幇COM鎺ュ彛緋誨垪1涓疄鐜扮殑com鎺ュ彛IFoo涓庝嬌鐢ㄥ畠鐨勫鎴瘋(gè)﹀悎鍦ㄤ竴璧鳳紝娌℃湁瀹炵幇鍦ㄥ悇鑷垎紱葷殑妯″潡錛屽洜姝や笉絎﹀悎妯″潡鍖栫紪紼嬫濇兂銆傛湰鏈熸坊鍔犵被鍘傛敮鎸侊紝浠ヤ嬌鎺ュ彛鐨勫疄鐜頒笌鎺ュ彛鐨勪嬌鐢ㄧ浉鍒嗙銆?/p>

---------------------------------------------------
綾誨巶鐨勪綔鐢ㄥ埌搴曟槸浠涔堬紵
灝嗘帴鍙g殑瀹炵幇涓庡鎴蜂嬌鐢ㄥ垎紱誨紑鏉ュ悧錛?/p>

涓嶅敖鐒躲備嬌鐢–oCreateInstance錛屽鎴峰彲浠ュ畬鍏ㄤ笉蹇呯煡閬撶被鍘傜殑瀛樺湪錛岃屽垱寤虹粍浠訛紝鑾峰彇緇勪歡瀹炵幇鐨勬帴鍙e茍浣跨敤銆?/p>

鍗矯OM搴撳彲浠ュ畬鍏ㄦ姏寮綾誨巶鐨勬蹇碉紝鑰屾槸鎻愪緵涓涓繖鏍風(fēng)殑鍑芥暟鍘熷瀷錛?br>CoCreateObject(REFID rclsid,...,REFID riid,void **ppItf);
鐢ㄦ埛鍦ㄨ皟鐢ㄧ殑鏃跺欏彲浠ュriid鎻愪緵IID_Unknown鎴栬呯壒瀹氫簬璇ュ璞$殑涓涓帴鍙o紝鐩存帴鑾峰彇璇ュ璞$殑IUnknown鎴栫壒瀹氱殑鎺ュ彛鎸囬拡銆?/p>

鍙互鐪嬪埌錛岃繖姝f槸CoCreateInstance鎵浣滅殑浜嬫儏銆?/p>

1 綾誨巶鎻愪緵浜?jiǎn)闂存帴鍒涘缓绫诲璞$殑鏂瑰紡锛?xì)鐢ㄦ埛鍙互鍏堣幏鍙栧茍鎸佹湁綾誨巶鎺ュ彛鎸囬拡錛岄氳繃璇ユ寚閽堟墍鎸囧悜鐨勭被鍘傛帴鍙e垱寤虹被瀵硅薄銆傞傜敤浜庨渶瑕佸垱寤哄涓紙鎴栭噸澶嶅垱寤猴級(jí)綾誨璞$殑鍦版柟錛屽噺灝戜簡(jiǎn)姣忔閮借瀹氫綅瀵硅薄搴撳茍鎶婂璞″簱瑁呭叆鍐呭瓨鐨勫紑閿銆?br>2 綾誨巶鎻愪緵浜?jiǎn)淇濊瘉缁勪欢搴撶暀鍦ㄥ唴瀛樹(shù)笉琚嵏铦插嚭鍘荤殑鍙︿竴縐嶆柟娉曪細(xì)綾誨巶鎺ュ彛鍑芥暟LockServer銆傜粍浠跺簱緇存姢涓涓簱鑼冨洿璁℃暟鍣紝鍙湁璇ヨ鏁板櫒涓?鏃訛紝緇勪歡搴撴墠鍏佽鑷繁琚嵏杞藉嚭鍐呭瓨銆傦紙涓庢鐩稿錛屽紩鐢ㄨ鏁版槸綾誨璞¤寖鍥寸殑錛岄氳繃璇ョ被瀹炵幇鐨勫悇涓帴鍙f潵緇存姢銆傚鏋滀竴涓被瀵硅薄鐨勫紩鐢ㄨ鏁拌揪鍒?錛岄偅涔堣瀵硅薄鍗犳湁鐨勫唴瀛樺氨琚噴鏀撅紝璇ュ璞′笂鐨勬帴鍙f寚閽堜篃涓嶅啀鏈夋晥銆傦級(jí)
闄や簡(jiǎn)璋冪敤LockServer閿佸畾緇勪歡搴撲互澶栵紝褰撳垱寤虹殑緇勪歡涓暟澶т簬0鏃訛紝緇勪歡搴撲篃涓嶈兘琚嵏杞姐備篃鍙互璇達(dá)紝璋冪敤涓嬈ockServer()鐨勪綔鐢ㄧ浉褰撲簬鍒涘緩浜?jiǎn)涓涓粍浠躲?/p>

-----------------------------------------------------------------------
瀹㈡埛涓渚э細(xì)
1 浣跨敤涓涓帴鍙i渶瑕佺煡閬撳摢浜涗俊鎭紵
澶囬夛細(xì)
鎺ュ彛IID
綾誨璞★紙綾誨巶錛塁LSID錛堟垨ProgID錛?br>鎺ュ彛鍑芥暟鍘熷瀷錛堝弬鏁頒釜鏁幫紝綾誨瀷錛岃繑鍥炲鹼級(jí)
瀹炵幇鎺ュ彛緇勪歡鐨勭嚎紼嬫ā鍨嬶紙榪涚▼鍐呫佽繘紼嬪銆佽繙紼嬶級(jí)錛?br>綾誨瀷搴搕ypelib淇℃伅錛?/p>

鏈嶅姟涓渚э細(xì)
2 瀹炵幇涓涓粍浠跺拰鎺ュ彛浠ヤ緵瀹㈡埛璋冪敤錛岄渶瑕佹彁渚涘摢浜涗笢瑗匡紵
澶囬夛細(xì)
鎵鏈夊鎴蜂嬌鐢ㄧ粍浠跺拰鎺ュ彛鎵闇鐨勫唴瀹?br>棰濆鐨勮繕鏈夛細(xì)


--------------------------------------------------------------------
涓篸ll娣誨姞.def鏂囦歡涓庣洿鎺ュ湪闇瑕佸鍑虹殑鍑芥暟瀹氫箟澶勬寚瀹歘declspec( dllexport )鏈夊尯鍒悧錛熷鏋滄湁鏄粈涔堝尯鍒紵

鎴戝彂鐜板湪outdll.c涓繖鏍鋒寚瀹氾細(xì)
__declspec( dllexport ) HRESULT DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)
浼?xì)漶旂敓缂栬瘧閿欒锛?xì)
1>------ Build started: Project: outside, Configuration: Debug Win32 ------
1>Compiling...
1>outdll.c
1>d:\outside-cf\outside\outdll.c(19) : error C2375: 'DllGetClassObject' : redefinition; different linkage
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h(833) : see declaration of 'DllGetClassObject'
1>Build log was saved at "file://d:\outside-cf\outside\Debug\BuildLog.htm"
1>outside - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

c2375鐨勮В閲婃剰鎬濇槸鍑洪敊鐨勫嚱鏁頒嬌鐢ㄧ殑閾炬帴鎸囩ず絎︿笌涔嬪墠澹版槑鐨勪笉鍚屻?br>Compiler Error C2375
'function' : redefinition; different linkage

The function is already declared with a different linkage specifier.

objbase.h涓0鏄庝簡(jiǎn)DllGetClassObject()鍑芥暟錛?br>STDAPI  DllGetClassObject(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID FAR* ppv);

鑰屼嬌鐢?def鏂囦歡灝辨病鏈夐棶棰樸?/p>

-----------------------------------------------------------------------------
鍒濇鎵ц緇撴灉錛?/p>

闂灝辨槸鎬繪湁涓涓垎閰嶇殑鍐呭瓨娌℃湁閲婃斁錛?/p>

 


鏍規(guī)嵁鎵撳嵃鍑烘潵鐨勫唴瀛樺湴鍧鍙互鍒ゆ柇錛屽簲璇ユ槸鍏堝垱寤虹殑綾誨巶瀵硅薄鐨勫唴瀛樻病鏈夐噴鏀俱?br>媯(gè)鏌ヤ唬鐮侊紝main()涓茍娌℃湁蹇樿璋冪敤Release(pCF)閲婃斁綾誨巶瀵硅薄銆傛墦鍗癛elease(pCF)鐨勮繑鍥炲鹼紝鍙戠幇鏄?錛屽嵆鍦ㄧ被鍘傛帴鍙f寚閽堜笂灝戣皟鐢ㄤ簡(jiǎn)涓嬈elease錛岄偅涔堬紝絀剁珶鏄摢閲屽皯鐨勫憿錛?/p>

main()鍑芥暟涓湁鍏崇被鍘傚璞″紩鐢ㄨ鏁扮殑鍦版柟灝辨槸CoGetClassObject鍜孯elease錛圕reateInstance璺熺被鍘傝嚜宸辯殑寮曠敤璁℃暟鏃犲叧錛夛紝榪欐槸涓瀵瑰鍔犲紩鐢ㄨ鏁板拰鍑忓皯寮曠敤璁℃暟鐨勫搴旀搷浣滐紝鎵浠?main()涓簲璇ユ病鏈夐棶棰樸?/p>

閭d箞錛屽氨鍙湁鍒涘緩綾誨巶瀵硅薄鐨勬椂鍊欎簡(jiǎn)銆備笅闈㈢湅涓涓嬬被鍘傚璞℃槸濡備綍鍒涘緩鐨勩?br>棣栧厛錛宮ain璋冪敤CoGetClassObject錛岃鍑芥暟灝辮皟鐢╠ll涓殑DllGetClassObject銆傜敱浜庢槸絎竴嬈¤皟鐢紙涓嶈冭檻鍏朵粬瀹㈡埛浣跨敤璇ll鐨勬儏鍐碉級(jí)錛岀▼搴忔墽琛屽埌CreateClassFactory(...),璇ュ嚱鏁版墽琛屽畬鍚庯紝綾誨巶瀵硅薄鐨勫紩鐢ㄨ鏁版槸1銆?/p>

鐢變簬鍒涘緩鎴愬姛錛屽洜姝ょ戶緇悜涓嬫墽琛屽埌QueryInterface,姝ゆ椂錛岀被鍘傚璞$殑寮曠敤璁℃暟鍙樻垚浜?銆傜劧鍚庯紝DllGetClassObject榪斿洖錛宑om搴撳嚱鏁癈oGetClassObject涔熷簲璇ヨ繑鍥炪傛敞鎰忥紝姝ゆ椂鐨勭被鍘傚璞″紩鐢ㄨ鏁板凡緇忔槸2浜?jiǎn)锛?/p>

鍥犳錛岄棶棰樺氨鍑哄湪榪欓噷銆俶ain璋冪敤涓嬈oGetClassObject鍚庯紝綾誨巶瀵硅薄鐨勫紩鐢ㄨ鏁版槸2錛岃屼笉鏄垜鎯沖悜涓殑1銆備簬鏄紝鍚庨潰璋冪敤涓嬈elease涔熷氨褰撶劧鏃犳硶閲婃斁鎺夌被鍦哄璞′簡(jiǎn)銆?/p>

 

 

 1 HRESULT DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)
 2 {
 3     *ppv = 0;
 4     if (IsEqualCLSID (rclsid, &CLSID_Outside))
 5     {
 6 
 7         if (!vpcfOutside)
 8 
 9         {
10 
11             HRESULT hr = CreateClassFactory (&CLSID_Outside, CreateOutside,
12                                              &IID_IClassFactory, &vpcfOutside);
13 
14                 if (hr != NOERROR)
15 
16                     return hr;
17         }
18 
19         return QueryInterface (vpcfOutside, riid, ppv);
20 
21     }
22 
23     return E_FAIL;
24 }

 

 


鎵懼埌浜?jiǎn)鍘熷洜锛屾斠?guī)灝卞緢瀹規(guī)槗浜?jiǎn)銆傝繖閲屾垜瑙夊緱闇瑕佹妸DllGetClassObject浣滃涓嬩慨鏀癸細(xì)

 1 HRESULT DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)
 2 {
 3     *ppv = 0;
 4     if (IsEqualCLSID (rclsid, &CLSID_Outside))
 5     {
 6 
 7         if (!vpcfOutside)
 8 
 9         {
10 
11             HRESULT hr = CreateClassFactory (&CLSID_Outside, CreateOutside,
12                                              &IID_IClassFactory, &vpcfOutside);
13 
14                 if (hr != NOERROR)
15 
16                     return hr;
17 
18     if(IsEqualIID(riid,&IID_IClassFactory))
19     {
20      *ppv = vpcfOutside;// Set *ppv to vpcfOutside directly instead of QueryInterface if first time creation
21      return NOERROR;
22     }
23     else
24     {
25      Release(vpcfOutside);// Any interface requested (riid) other than IID_ClassFactory and IID_Unknown not support by class factory,
26                           // call Release to free the memory.
27      return E_FAIL;
28     }
29 
30         }
31 
32         return QueryInterface (vpcfOutside, riid, ppv);
33 
34     }
35 
36     return E_FAIL;
37 }

 

淇敼鍚庡湪鎵ц錛屽唴瀛橀兘姝e父閲婃斁浜?jiǎn)銆?/p>

-------------------------------------------------------------------------------------------
CreateClassFactory浠g爜璇存槑

 1 HRESULT CreateClassFactory (REFCLSID rclsid,
 2     HRESULT (*pfnCreate)(IUnknown *, REFIID, void **), 
 3     REFIID riid, void **ppv)
 4 {
 5     ClassFactory *this;
 6     HRESULT hr;
 7     
 8     *ppv = 0;
 9     if (hr = Alloc (sizeof (ClassFactory), &this))
10     return hr;
11 
12     this->icf.lpVtbl = &vtblClassFactory;
13     this->cRef = 1;  // After this call, cRef==1
14 
15     this->pfnCreate = pfnCreate;
16     
17     hr = QueryInterface (&this->icf, riid, ppv);  // After this call, cRef==2
18     Release (&this->icf);  // Corresponds to "this->cRef = 1", ater this call, cRef==1
19 
20     return hr;
21 }

 

鍙互鐪嬪埌錛屼袱琛屼唬鐮佺殑鏁堟灉鏄寮曠敤璁℃暟澧?鍙?qiáng)鍑?錛岃繖涓よ浠g爜鎵ц鍚庯紝瀵瑰紩鐢ㄨ鏁扮殑褰卞搷浜掔浉鎶墊秷錛岀瓑浜庢病鏈夋敼鍙樺紩鐢ㄨ鏁般傞偅涔堬紝鎶婅繖涓よ鍚屾椂娉ㄩ噴鎺夛紝鏄笉鏄彲浠ュ憿錛?br>鎴戠殑鍥炵瓟鏄細(xì)鍦ㄦ湰渚嬩腑鍙互銆傚洜涓鴻繖涓よ浠g爜涔嬮棿鐨凲ueryInterface鎬繪槸鍙互鎵ц鎴愬姛鐨勶紙鍥犱負(fù)鏄敤IDD_ClassFactory鏉ヨ皟鐢ㄨ鍑芥暟鐨勶級(jí)銆傛墍浠ワ紝鍗充究鎶婅繖涓よ浠g爜鍚屾椂娉ㄩ噴鎺夛紝CreateClassFactory鎵ц緇撴潫鍚庯紝綾誨巶瀵硅薄鐨勫紩鐢ㄨ鏁頒篃澧炰簡(jiǎn)1錛屼互鍚庤皟鐢≧elease灝卞彲浠ラ噴鏀炬帀綾誨巶瀵硅薄鍗犵敤鐨勫唴瀛樸?br>浣嗘槸錛屽鏋淐FQueryInterface鐨勪唬鐮佺紪鍐欎腑闄や簡(jiǎn)閿欒錛屾瘮濡傦紝鍍忚繖鏍峰啓錛?br>

 1 static HRESULT CFQueryInterface (IClassFactory *pcf, REFIID riid, void **ppv)
 2 {
 3     ClassFactory *this = IMPL (ClassFactory, icf, pcf);
 4 
 5     if (IsEqualIID (riid, &IID_IUnknown) ||
 6 //            IsEqualIID (riid, &IID_IClassFactory))   // Comment out this condition to create an error
 7         *ppv = &this->icf;
 8     else
 9     {
10         *ppv = 0;
11         return E_NOINTERFACE;
12     }
13 
14     AddRef ((IClassFactory *)*ppv);
15 
16     return NOERROR;
17 }


閭d箞錛岃繖涓よ浠g爜涔嬮棿鐨凲ueryInterface灝變細(xì)鎵ц鍑洪敊錛岄偅涔堢被鍘傚璞″崰鐢ㄧ殑鍐呭瓨灝辨案榪滄病鏈夋満浼?xì)閲婃斁浜?jiǎn)銆?br>涔熷氨鏄錛孉ddRef鍜孯elease铏界劧鍦ㄤ綔鐢ㄤ笂瀵瑰紩鐢ㄨ鏁版潵璇寸浉浜掓姷娑堬紝浣哛elease鍑芥暟鎻愪緵浜?jiǎn)閲婃攽织硅薄鍐呭瓨鐨勬溵Z細(xì)錛堝綋寮曠敤璁℃暟涓?鏃訛級(jí)錛屽鏋滀笉鎴愬鐨勮皟鐢ㄤ粬浠紝涔熷氨澶卞幓浜?jiǎn)绠$悊瀵硅薄鍐呭瓨锛堥噴鏀惧璞″崰鐢ㄧ殑鍐呭瓨锛?jí)鐨勬満浼?xì)銆?/p>

---------------------------------------------------------------------------
緇勪歡搴搊utside鏂囦歡璇存槑錛?br> IFoo.h      IFoo鎺ュ彛澹版槑
 outside.c   緇勪歡瀵硅薄銆両Foo鎺ュ彛瀹炵幇
 cf.c        綾誨巶瀵硅薄銆両ClassFactory鎺ュ彛瀹炵幇
 outdll.c    緇勪歡搴撳鍑哄嚱鏁板疄鐜?br> outside.def 緇勪歡搴撴ā鍧楀畾涔夋枃浠訛紝瀵煎嚭鍑芥暟澹版槑
 outside.reg 緇勪歡搴撴敞鍐屾枃浠?/p> ----------------------------------------------------------------------------
婧愮爜錛?outside-cf

]]>
鐢–瀹炵幇鐨勪竴涓熀鏈珻OM鎺ュ彛IFoo錛堟潵鑷狢OM Programmer's Cookbook錛夆斺擟瀹炵幇COM鎺ュ彛緋誨垪1http://m.shnenglu.com/gracelee/archive/2009/04/29/81414.html灝忚懕铇擱叡灝忚懕铇擱叡Wed, 29 Apr 2009 04:08:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/04/29/81414.htmlhttp://m.shnenglu.com/gracelee/comments/81414.htmlhttp://m.shnenglu.com/gracelee/archive/2009/04/29/81414.html#Feedback3http://m.shnenglu.com/gracelee/comments/commentRss/81414.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/81414.html鐢–瀹炵幇鐨勪竴涓熀鏈珻OM鎺ュ彛IFoo錛堟潵鑷狢OM Programmer's Cookbook錛?/p>


鎶婅鏂囦腑瀹炵幇鐨勪唬鐮佹暣鐞嗘眹鎬誨埌涓涓」鐩腑銆傜洰鍓嶅彧鏄疄鐜板埌涓涓腑闂撮樁孌碉紝閲嶇偣鍦ㄨ鏄嶤OM鎺ュ彛鐨勫疄鐜板師鐞嗭紝榪樻病鏈夊寘鍚被鍘傜殑閮ㄥ垎銆備互鍚庤繕闇闄嗙畫(huà)娣誨姞綾誨巶絳夐珮綰у姛鑳姐?/p>

鏂囦歡緇勬垚錛?br>ifoo.h         COM鎺ュ彛IFoo,鎺ュ彛ID IID_IFoo 澹版槑鏂囦歡銆?br>outside.c      COM鎺ュ彛瀹炵幇銆傝繖閲屽疄鐜癐Foo鐨勬槸涓涓粨鏋勪綋COutside.
util.h         涓浜涘畯瀹氫箟銆佸叏灞鍑芥暟銆佸彉閲忓0鏄庢枃浠躲?br>main.c         絎旇呬負(fù)瀹炵幇欏圭洰娣誨姞鐨勬枃浠躲傛彁渚沵ain鍑芥暟銆佸唴瀛樼鐞嗗嚱鏁癆lloc,Free鐨勫疄鐜幫紙灝佽C榪愯搴撳嚱鏁癿alloc鍜宖ree.錛夈佹帴鍙D瀹氫箟銆?/p>

COM鎺ュ彛鍒板簳鏄粈涔堬紵
COM鎺ュ彛鏄竴涓寚鍚戣櫄鍑芥暟琛ㄧ殑鎸囬拡銆傞氳繃榪欎釜鎸囬拡鍙互璁塊棶鍐呭瓨?shù)腑鏌愬鐨勫悇涓姛鑳藉潡锛屾墽琛岄瀹氫箟鐨勫姛鑳藉Q屽畬鎴愮敤鎴風(fēng)殑浠誨姟銆傝繖浜涘姛鑳藉潡浠ュ嚱鏁扮殑褰㈠紡瀛樺湪錛堟兂涓嶅嚭榪樻湁鍏朵粬褰㈠紡:)錛夊茍琚皟鐢ㄣ傚畠浠湁涓涓叡鍚岀偣錛氶兘鍖呭惈涓涓寚閽堝弬鏁幫紝鎸囧悜榪欎簺鍔熻兘瑕佹搷浣滅殑鏁版嵁鍦板潃銆傚湪C++涓紝榪欎釜鍦板潃灝辨槸瀵硅薄鐨勯鍦板潃錛屼篃灝辨槸綾繪垚鍛樺嚱鏁頒腑闅愬惈鐨則his鎸囬拡銆傚湪C鍑芥暟涓茍娌℃湁榪欑鐜版垚鐨勪究鍒╋紝鍥犳浠g爜瀹炵幇涓湪鎺ュ彛瀹氫箟鏃朵粛浣跨敤浜?jiǎn)鎺ュ彛鎸囬拡锛圚RESULT (__stdcall * QueryInterface)   (IFoo * This,  const IID * const, void **)錛夛紝鑰屽湪鎺ュ彛鍑芥暟瀹炵幇鏃舵牴鎹粨鏋勪綋甯冨眬緇撴瀯錛屼粠榪欎釜鎺ュ彛鎸囬拡鎺ㄧ畻寰楀埌瀵硅薄瀹炰緥鎸囬拡銆?/p>

typedef struct IFoo
{
 struct IFooVtbl * lpVtbl;
} IFoo;
typedef struct IFooVtbl IFooVtbl;
struct IFooVtbl
{
 
 HRESULT (__stdcall * QueryInterface)   (IFoo * This,  const IID * const, void **) ;
 ULONG (__stdcall * AddRef)    (IFoo * This) ;
 ULONG (__stdcall * Release)   (IFoo * This) ;

 HRESULT (__stdcall * SetValue)         (IFoo * This,  int) ;
 HRESULT (__stdcall * GetValue)         (IFoo * This,  int *) ;
};

COM鎺ュ彛鐨勮姹傦細(xì)

姣忎竴涓狢OM鎺ュ彛錛堟寚鍚戠殑铏氬嚱鏁拌〃錛夌殑澶翠笁涓嚱鏁板繀欏繪槸IUnknown鎺ュ彛鐨勫嚱鏁幫細(xì)QueryInterface,AddRef鍜孯elease銆傚湪C++涓紝縐頒負(fù)浠嶪Unknown鎺ュ彛緇ф壙銆?br>瀵逛簬璋冪敤QueryInterface鍝嶅簲鏌ヨIID_IUnknwon寰楀埌鐨勬帴鍙f寚閽堝鹼紝鍚屼竴涓璞″疄鐜扮殑鎵鏈夋帴鍙e繀欏葷浉鍚屻傝繖鏄垽鏂袱涓狢OM瀵硅薄鏄惁鏄悓涓涓璞$殑鏍囧噯銆?/p>

 

瀹忓畾涔?#8220;#define IUNK_VTABLE_OF(x) ((IUnknownVtbl *)((x)->lpVtbl))“璇存槑

鍦ㄩ澶勭悊杈撳嚭鏂囦歡main.i涓彲浠ユ壘鍒癐UnknownVtbl鍜孖FooVtbl鐨勫0鏄庯細(xì)
    typedef struct IUnknownVtbl
    {
       
       
        HRESULT ( __stdcall *QueryInterface )(
            IUnknown * This,
             const IID * const riid,
             void **ppvObject);
       
        ULONG ( __stdcall *AddRef )(
            IUnknown * This);
       
        ULONG ( __stdcall *Release )(
            IUnknown * This);
       
       
    } IUnknownVtbl;
   
    struct IUnknown
    {
         struct IUnknownVtbl *lpVtbl;
    };   
   

struct IFooVtbl
{
 
 HRESULT (__stdcall * QueryInterface)   (IFoo * This,  const IID * const, void **) ;
 ULONG (__stdcall * AddRef)    (IFoo * This) ;
 ULONG (__stdcall * Release)   (IFoo * This) ;

 HRESULT (__stdcall * SetValue)         (IFoo * This,  int) ;
 HRESULT (__stdcall * GetValue)         (IFoo * This,  int *) ;
};

璇ュ畯瀹氫箟鐨勪綔鐢ㄥ氨鏄妸IFoo鎺ュ彛涓殑IFooVtbl綾誨瀷鐨勬寚閽堟嬁鍑烘潵錛?x)->lpVtbl)錛夛紝騫跺己鍒惰漿鎹紙(IUnknownVtbl *)錛夋垚IUnknownVtbl銆?br>“寮哄埗杞崲”鐨勭粨鏋滄槸浠涔堝憿錛熸槸鎬庝箞鍋氬埌鐨勫憿錛?br>寰堟槑鏄撅紝緇撴灉灝辨槸寰楀埌鐨勬寚閽堜笉鍐嶆槸IFooVtbl *綾誨瀷錛岃屾槸鍙樻垚浜?jiǎn)IUnknownVtbl *綾誨瀷銆傝嚦浜庡仛娉曪紝緋葷粺搴旇璁板綍姣忎竴涓彉閲忋佽〃杈懼紡鐨勭被鍨嬨傚綋榪涜寮哄埗綾誨瀷杞崲鏃訛紝灝憋紙涓存椂鍦幫級(jí)淇敼鍏剁被鍨嬩負(fù)杞崲鍒扮殑綾誨瀷銆?br>鍚岀悊錛孮ueryInterface, AddRef, Release瀹忓畾涔変腑鐨?IUnknown *)涔熸槸榪欑鐢ㄦ硶銆?/p>

鍙互鐪嬪埌錛屽畯“IUNK_VTABLE_OF“鐨勪綔鐢ㄦ槸渚涘畯QueryInterface,瀹廇ddRef錛屽畯Release寮曠敤錛屾妸IFooVtbl *綾誨瀷杞崲涓篒UnknownVtbl *綾誨瀷錛屾渶緇堣揪鍒拌皟鐢↖UnknownVtbl涓畾涔夌殑涓変釜QueryInterface,AddRef,Release鍑芥暟銆?/p>

閭d箞錛岃繖縐嶅ぇ璐瑰懆绔犵殑鐩殑鏄粈涔堝憿錛熶負(fù)浠涔堜笉浠FooVtbl涓笁涓嚱鏁扮殑瀹氫箟褰㈠紡錛堜笉閫氳繃寮哄埗杞崲鏉ヨ漿鎹㈡垚蹇呴』鐨勭被鍨嬶級(jí)錛岀洿鎺ヨ皟鐢↖FooVtbl涓畾涔夌殑鍑芥暟鍛紵铏界劧寮哄埗杞崲鍦ㄥ弬鏁板間笂騫朵笉浼?xì)閫犳垚鏀瑰彉錛屾渶緇堣皟鐢ㄧ殑涔熸槸IFooVtbl瀹氫箟鐨勫嚱鏁幫紙F(tuán)ooQueryInterface,FooAddRef,FooRelease錛夈?/p>

涓轟粈涔堜竴瀹氳閫氳繃IUnknown鎺ュ彛鎸囬拡璋冪敤榪欎笁涓嚱鏁板憿錛熶慨鏀筈ueryInterface瀹忓畾涔夊涓嬶細(xì)
#define QueryInterface(pif, iid, pintf) \
 (((pif)->lpVtbl)->QueryInterface(pif, iid, (void **)(pintf)))
鍗抽氳繃IFoo鎺ュ彛鎸囬拡鏉ヨ皟鐢ㄧ敱IUnknown寮曞叆鐨勫嚱鏁幫紝鏈変粈涔堜笉瀵圭殑鍦版柟鍚楋紵

璇曢獙琛ㄦ槑錛屽皢QueryInterface瀹忓畾涔夊涓嬩篃鍙互緙栬瘧閫氳繃錛屾墽琛岃搗鏉ヤ篃娌℃湁鍑虹幇浠諱綍寮傚父銆?br>#define QueryInterface(pif, iid, pintf) \
 (((pif)->lpVtbl)->QueryInterface(pif, iid, (void **)(pintf)))

 

瀵逛簬IUnknown鎺ュ彛鐨勪笁涓嚱鏁幫紝璋冪敤鏃朵紶閫掔殑鍙傛暟鏄疘Unknown *綾誨瀷錛堣QueryInterface, AddRef, Release瀹忓畾涔夛級(jí)錛岃屽嚱鏁板畾涔変腑錛團(tuán)ooQueryInterface, FooAddRef, FooRelease錛夊0鏄庣殑鍙傛暟鏄疘Foo *綾誨瀷錛岃繖縐嶄笉涓鑷寸殑鎯呭喌鏄庝箞鍑虹幇鐨勶紵榪欑涓嶄竴鑷翠笉浼?xì)鏈夐棶棰樺悧锛?/p>

榪欑涓嶄竴鑷寸殑浜х敓鏄敱浜庝粠涓嶅悓鐨勮搴︾湅寰呭紩璧風(fēng)殑銆傚鏋滀粠IUnknown鎺ュ彛鏉ョ湅錛岄偅涔堟帴鍙e嚱鏁頒腑鐨勭涓涓弬鏁扮被鍨嬪氨鏄疘Unknown *;濡傛灉浠嶪Foo鏉ョ湅錛岄偅涔堢涓涓弬鏁扮殑綾誨瀷灝辨槸IFoo *銆?/p>

榪欑涓嶄竴鑷存у彧鏄拡瀵逛簬緙栬瘧鍣ㄥ浜庣被鍨嬬殑緙栬瘧瑕佹眰鏈夋剰涔夌殑錛屽湪鎺ュ彛瀹炵幇鍙?qiáng)鋴社敤鏃跺Q屼紶閫掔粰lpVtbl->QueryInterface, lpVtbl->AddRef,lpVtbl->Release鐨勭涓涓弬鏁板湪鍊間笂閮芥槸鐩稿悓鐨勶紝閮芥槸瀹炵幇璇ユ帴鍙g殑鍐呭瓨鍦板潃錛堝湪鏈緥涓槸COutside瀵硅薄鐨勯鍦板潃錛夈?/p>

 

涓浜涜娉曠幇璞″洖欏?/p>

鍑芥暟鎸囬拡鍙橀噺瀹氫箟銆佽祴鍊煎強(qiáng)璋冪敤銆?br>HRESULT (__stdcall * pQI)   (IFoo * This,  const IID * const, void **) ;
瀹氫箟涓涓嚱鏁版寚閽堝彉閲弍QI,璇ュ彉閲忔寚鍚?#8220;榪斿洖HRESULT,鍙?涓弬鏁板垎鍒負(fù)綾誨瀷IFoo *,const IID * const, void **”鐨勫嚱鏁般?/p>

typedef HRESULT (__stdcall * QIType)   (IFoo * This,  const IID * const, void **) ;
瀹氫箟涓涓嚱鏁版寚閽堢被鍨嬶紝璇ョ被鍨嬬殑鎸囬拡鎸囧悜“榪斿洖HRESULT,鍙?涓弬鏁板垎鍒負(fù)綾誨瀷IFoo *,const IID * const, void **”鐨勫嚱鏁般?/p>

HRESULT __stdcall QueryInterface(IFoo * This,  const IID * const, void **) ;//鍑芥暟澹版槑紺轟緥
pQI = 0;   // 鍑芥暟鎸囬拡璧嬪鹼紝0琛ㄧず涓嶆寚鍚戜換浣曞嚱鏁般?br>pQI = QueryInterface;  // 鍑芥暟鎸囬拡璧嬪鹼紝pQI鎸囧悜QueryInterface銆?br>pQI = &QueryInterface; // 涓庝笂闈㈢瓑浠楓?/p>

QueryInterface(&this->ifoo, riid, ppv);  // 浣跨敤鍑芥暟鍚嶇洿鎺ヨ皟鐢?br>pQI(&this->ifoo, riid, ppv);             // 鍑芥暟鎸囬拡璋冪敤
(*pQI)(&this->ifoo, riid, ppv);          // 絎簩縐嶅嚱鏁版寚閽堣皟鐢ㄦ柟寮?/p>


瀹忓畾涔夈佸睍寮瑙勫垯
瀵逛簬瀹忥紝涓鐩存湁涓縐嶉浘閲岀湅鑺辯殑鎰熻錛屼技涔庡緢闅忔剰錛屾庝箞鏉ラ兘琛岋紝姣斿錛?br>#define AddRef(pif) \
 (IUNK_VTABLE_OF(pif)->AddRef((IUnknown *)(pif)))

瀹忓畾涔夊簲璇ユ槸鍙互宓屽鐨勶紝鍗沖畯瀹氫箟鐨?#8220;鍐呭“涓繕鍙互鍖呭惈錛堝祵濂楋級(jí)瀹忥紝濡傛湰渚嬶紝“IUNK_VTABLE_OF”灝辨槸宓屽瀹忋傚湪灞曞紑鐨勬椂鍊欙紝灝嗗祵濂楃殑瀹忎篃涓騫跺睍寮錛堟浛鎹㈡垚瀹氫箟鐨勫唴瀹癸級(jí)錛岀洿鍒頒笉鍐嶆湁瀹忎負(fù)姝€?br>閭d箞灝辨湁涓や釜鐤戦棶錛?br>1銆傚鏋滆宓屽鐨勫畯鍖呭惈錛堢洿鎺ユ垨闂存帴錛夊畾涔夌殑瀹忥紝閭d箞灞曞紑灝辨病瀹屾病浜?jiǎn)锛屾d驚鐜簡(jiǎn)銆?br>2銆傚鏋滃畾涔夌殑鍐呭涓湁璺熷畾涔夌殑瀹忓悓鍚嶇殑瀛楃涓詫紙姣斿涓婇潰鐨勪緥瀛怚UNK_VTABLE_OF錛夛紝閭d箞鎬庝箞鍖哄垎榪欏悓鍚嶇殑涓滀笢鏄祵濂楃殑瀹忥紙闇瑕佸睍寮錛夛紝榪樻槸涓鑸殑瀛楃涓詫紙涓嶉渶瑕佸睍寮錛夛紵


鍑芥暟璋冪敤瑙勮寖綰﹀畾銆乵ain鍑芥暟璋冪敤瑙勮寖銆?/p>

涓寮濮嬫妸鍑犱釜鏂囦歡姹囨誨埌欏圭洰閲屾椂錛岀紪璇戦氫笉榪囷紝閿欒鎻愮ず澶ц嚧鎰忔濇槸錛屼笉鑳芥妸涓縐嶈皟鐢ㄨ鑼冪殑鍑芥暟鎸囬拡杞崲鎴愬彟涓縐嶈皟鐢ㄨ鑼冪殑鍑芥暟鎸囬拡銆傚悗鏉ユ妸璋冪敤瑙勮寖鏀逛負(fù)   /Gz(__stdcall),緙栬瘧涓猴紙Compile As錛夋敼涓?TC(Compile As C Code)灝卞ソ浜?jiǎn)銆?/p>

鎯蟲(chóng)潵鏄浜?c鏂囦歡錛岀紪璇戝櫒緙虹渷浣跨敤鐨勬槸__cdecl錛岃孖Foo涓殑鎺ュ彛瀹忓畾涔夊湪win32涓嬪睍寮鎴愪簡(jiǎn)__stdcall錛屾墍浠ュ嚭鐜頒簡(jiǎn)鐭涚浘銆傝屼嬌鐢?Gz寮哄埗鏈0鏄庤皟鐢ㄨ鑼冪殑鍑芥暟浣跨敤__stdcall錛屽疄鐜板氨涓庡0鏄庝竴鑷翠簡(jiǎn)銆?/p>


(size_t)&(((s *)0)->m)

c++紼嬪簭鍛樹(shù)篃璁?dāng)R兘鐭ラ亾錛岃闂湴鍧“0”澶勭殑鎴愬憳鏄竴澶у繉錛屼細(xì)閫犳垚GP銆傜劧鑰岋紝鍙栧湴鍧“0”澶勭殑鎴愬憳鐨勫湴鍧錛屽嵈鏄釜鍚堟硶鐨勬搷浣溿傝櫧鐒跺湴鍧“0”澶勫茍娌℃湁浠涔堝唴瀹癸紝浣嗘槸錛屽鏋滃湪鍦板潃0澶勫瓨鏀句竴涓唴瀹癸紝閭d箞璇ュ唴瀹逛腑鐨勬垚鍛樹(shù)篃鏄湁鍦板潃鐨勩傛湰渚嬩腑姝f槸宸у鍦板埄鐢ㄨ繖縐嶆柟娉曪紝浠庢帴鍙e湴鍧璁$畻寰楀嚭瀹炵幇璇ユ帴鍙g殑瀹炰緥鍦板潃錛岃繘鑰岃闂疄渚嬬殑鍐呴儴鍙橀噺銆?br>
------------------------------------------------------------------------------------
2009騫?鏈?鏃?br>闄勪笂婧愮爜錛?a href="http://m.shnenglu.com/Files/gracelee/outside.zip">/Files/gracelee/outside.zip

浠g爜鎵ц緇撴灉錛?br>



]]>
鏈夊叧include guard鐨勪竴涓ソ甯栧瓙錛堟敹钘忥級(jí)http://m.shnenglu.com/gracelee/archive/2009/02/19/74233.html灝忚懕铇擱叡灝忚懕铇擱叡Thu, 19 Feb 2009 01:04:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/02/19/74233.htmlhttp://m.shnenglu.com/gracelee/comments/74233.htmlhttp://m.shnenglu.com/gracelee/archive/2009/02/19/74233.html#Feedback2http://m.shnenglu.com/gracelee/comments/commentRss/74233.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/74233.html
鍘熻創(chuàng)鍦板潃錛?a >http://www.keil.com/forum/docs/thread10237.asp

浣滆?nbsp;Per Westermark

The

#ifndef xx
#define xx
...
#endif

method is to make sure that a header file isn't included more than once from the same c file.

You can not - and normally don't want to - stop multiple c files from including the same header file.

A header file is included because:
1) You have specifically added a line #include "xx" or #include <xx> in the source file. Don't do that unless you want the file to be included :)
2) You are including one header file, that it it's turn (one or more steps away) includes another header file. But a header file should only contain a recursive #include if it really needs that other file for some declarations. Hence, you need to include it.

What does this mean?

If the header file must be seen by multiple source files, you can't use it to allocate global variables, since the linker would then complain about multiple sets of global variables with the same name. This can be solved with the following:

//globals.h
#ifndef _GLOBALS_H
#define _GLOBALS_H
#if defined MAIN
#define EXTERN
#else
#define EXTERN extern
#endif
...
EXTERN int my_global_variable;
#endif // _GLOBALS_H

// main.c
#define MAIN
#include "globals.h"
...
// misc.c
#include "globals.h"
...

In this case, only the inclusion in main.c will result in an "allocation" of global variables, because the #define EXTERN will be empty. All other source files that includes "globals.h" will just see the type information for the global variables.



]]>
鑷姩綾誨瀷杞崲鈥斺旀搷浣滅閲嶈澆http://m.shnenglu.com/gracelee/archive/2009/01/16/72176.html灝忚懕铇擱叡灝忚懕铇擱叡Fri, 16 Jan 2009 07:51:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/01/16/72176.htmlhttp://m.shnenglu.com/gracelee/comments/72176.htmlhttp://m.shnenglu.com/gracelee/archive/2009/01/16/72176.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/72176.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/72176.html
鐪嬩笅闈唬鐮侊細(xì)

 1 class CBase {
 2 public:
 3     CBase()
 4     {
 5         cout << "CBase constructor()" << endl;
 6     }
 7     virtual ~CBase()
 8     {
 9         cout << "CBase destructor()" << endl;
10     }
11     
12     operator long()
13     {
14         cout << "CBase::operator long()" << endl;
15         return 0;
16     }
17     
18     operator char()
19     {
20         cout << "CBase::operator char()" << endl;
21         return 'a';
22     }
23 }
24 ;
25 class CDerived:public CBase
26 {
27 public:
28     CDerived()
29     {
30          cout << "CDerived constructor()" << endl;
31     }
32              
33     virtual ~CDerived()
34     {
35         cout << "CDerived destructor()" << endl;
36     }
37              
38     operator long()
39     {
40         cout << "CDerived::operator long()" << endl;
41         //return CBase::operator long();
           return *((CBase *)this);//change the above code to this looks better
42     }
43              
44 };
45 
46 void main()
47 {
48     CDerived d;
49     long lTmp = d;
50     cout << "lTmp=" << lTmp << endl;
51     char cTmp = d;
52     cout << "cTmp=" << cTmp << endl;
53 
54 }


鐢變簬瀹氫箟浜?jiǎn)鎿嶄綔绗﹂噸铦睠Derived::operator long() 鍜孋Base::operator long()錛?9琛屽緱浠ョ紪璇戦氳繃銆傚悓鐞嗭紝瀹氫箟浜?jiǎn)CBase::operator char()錛?1琛屽彲浠ョ紪璇戙?br>
鎵ц緇撴灉涓猴細(xì)
CBase constructor()
CDerived constructor()
CDerived::operator long()
CBase::operator long()
lTmp=0
CBase::operator char()
cTmp=a
CDerived destructor()
CBase destructor()

榪欓噷娑夊強(qiáng)鍒扮殑姒傚康涓昏鏈夛細(xì)
1 綾繪垚鍛樻搷浣滅閲嶈澆錛堜嬌寰楃敤鎴峰畾涔夌被鍨嬭漿鎹負(fù)鍐呭緩綾誨瀷鎴愪負(fù)鍙兘銆傚浜庣敤鎴峰畾涔夌被鍨嬩箣闂寸殑杞崲錛岃繕鍙互閫氳繃鏋勯犲嚱鏁扮殑鏂瑰紡榪涜錛?br>2 鑷姩綾誨瀷杞崲銆傝嚜鍔ㄧ被鍨嬭漿鎹㈠彂鐢熺殑鎯呭喌鏈変互涓嬪嚑縐嶏細(xì)
鍑芥暟璋冪敤鏃朵紶閫掔殑瀹炲弬綾誨瀷涓庡嚱鏁板0鏄庝腑鎸囧畾鐨勫弬鏁扮被鍨嬩笉鍖歸厤
鍑芥暟榪斿洖鐨勫璞$被鍨嬩笌鍑芥暟澹版槑涓寚瀹氱殑榪斿洖綾誨瀷涓嶅尮閰?br>琛ㄨ揪寮忎腑鎿嶄綔鏁扮殑綾誨瀷涓嶄竴鑷達(dá)紙榪欐鏄笂闈緥瀛愪腑鐨勬儏鍐碉級(jí)

鏈夋剰鎬濈殑鏄紝鍗充嬌涓嶅畾涔塁Base::operator char()錛屼笂闈㈢殑51琛屼粛鑳介氳繃錛岀湡寰楁劅鍙圭紪璇戝櫒鐨勮仾鏄庢墠鏅轟簡(jiǎn)錛屾垨璁稿彧鏄紪璇戝櫒source涓浜?jiǎn)涓浜涚殑if{}else{}鍛紵

]]>
鍥炲綊http://m.shnenglu.com/gracelee/archive/2008/10/31/65620.html灝忚懕铇擱叡灝忚懕铇擱叡Fri, 31 Oct 2008 05:24:00 GMThttp://m.shnenglu.com/gracelee/archive/2008/10/31/65620.htmlhttp://m.shnenglu.com/gracelee/comments/65620.htmlhttp://m.shnenglu.com/gracelee/archive/2008/10/31/65620.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/65620.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/65620.html鐪嬬湅鏈鏂扮殑闅忕瑪錛岀珶鐒舵湁涓騫村娌℃潵浜?jiǎn)锛岃嚜宸辫畡勫崥瀹㈡爣棰樺Q岀湡鏄鑷繁鐨勮鍒恒?br>
寰堜箙浠ュ墠鍐欑殑甯栧瓙錛岀幇鍦ㄧ湅鍒拌繕鏈変漢鍦ㄥ洖澶嶏紝鏈夌偣鎰熷姩錛屼篃鍙楀埌涓鐐歸紦鑸烇細(xì)濡傛灉鏈変粈涔堟槸姘告亽鐨勮瘽錛岄偅涔堟枃瀛楀綋灞炰竴縐嶅惂錛岃櫧鐒舵垜鑻嶇櫧鐨勮璦浼?xì)鍦ň|戠粶嫻╃氳屼簲鍏夊崄鑹茬殑淇℃伅涓娣卞煁鑰屾棤浜烘敞鎰忥紝姣曠珶涔熸槸涓縐嶆浘緇忓瓨鍦ㄨ繃錛屽彂鐢熻繃鐨勮璇併?br>
璁板綍鑷繁鐨勫績(jī)鎯咃紝璁╃敓鍛藉湪榪欑涔﹀啓涓壘鍒板綊灞炲拰瀹夋叞錛岃繖灝辨槸鍗氬浜庢垜鐨勯瓍鍔涘惂銆?/p>

]]>
VBScript鍐欑殑璁$畻寮傛垨鐨勪竴涓皬宸ュ叿http://m.shnenglu.com/gracelee/archive/2007/08/03/29278.html灝忚懕铇擱叡灝忚懕铇擱叡Fri, 03 Aug 2007 05:05:00 GMThttp://m.shnenglu.com/gracelee/archive/2007/08/03/29278.htmlhttp://m.shnenglu.com/gracelee/comments/29278.htmlhttp://m.shnenglu.com/gracelee/archive/2007/08/03/29278.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/29278.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/29278.html
'==========================================================================
'
'
'
 NAME: calc_xor.vbs
'
'
 COMMENT: Calculates the result of 'xor' all elements in the input
'
'
==========================================================================

Option Explicit

Dim strInput

'Promt for string to search for in log files
strInput = InputBox("Enter data to calc on.","calc xor","")

if strInput = "" then
    wscript.quit
end If

'MsgBox(Len(strInput))

Dim arrayBytes()
ReDim arrayBytes(Len(strInput)/2)

Dim i,nBytes
Dim chHalf1,chHalf2,chWhole
= 1
nBytes 
= 0

Do While (i < Len(strInput))
'Skip spaces between elements
Do While Asc(Mid(strInput,i,1)) = 32 'space
    i = i + 1
Loop 

    chHalf1 
= Asc(Mid(strInput,i,1))
    chHalf2 
= Asc(Mid(strInput,i+1,1))
    
'Check and convert first half

    
If chHalf1 >= 48 And chHalf1 <= 57 Then
        chHalf1 
= chHalf1 - 48
    
ElseIf chHalf1 >= 65 And chHalf1 <= 70 Then
        chHalf1 
= chHalf1 - 65 + 10
    
ElseIf chhalf1 >= 97 And chHalf1 <= 104 Then
        chHalf1 
= chHalf1 - 97 + 10
    
Else
        
MsgBox("invalid character")
        wscript.quit
    
End If
    
    
' Check and convert the second half
    If chHalf2 >= 48 And chHalf2 <= 57 Then
        chHalf2 
= chHalf2 - 48
    
ElseIf chHalf2 >= 65 And chHalf2 <= 70 Then
        chHalf2 
= chHalf2 - 65 + 10
    
ElseIf chHalf2 >= 97 And chHalf2 <= 104 Then
        chHalf2 
= chHalf2 - 97 + 10
    
Else
        
MsgBox("invalid character")
        wscript.quit
    
End If
    
    
' Combine the first and second halves together to form a whole byte
    chWhole = chHalf1 * 16 + chHalf2
    arrayBytes(nBytes) 
= chWhole
    i 
= i + 2
    nBytes 
= nBytes + 1
Loop

'MsgBox(CStr(nBytes) + " bytes all together")

Dim WshSHell
set WshShell = CreateObject("WScript.Shell")
WshShell.Run(
"calc")
WScript.Sleep(
100)
WshShell.AppActivate(
"Calculator")
WScript.Sleep(
100)

WshShell.SendKeys(
"{F6}"'Change to Decimal
'
WshShell.SendKeys("{F4}") 'Change to single byte
WScript.Sleep(100)
WshShell.SendKeys(
"0")
For i =1 to nBytes
    WshShell.SendKeys(
"{^}")
    WScript.Sleep(
100)
    WshShell.SendKeys(arrayBytes(i
-1))
    WScript.Sleep(
100)
    WshShell.SendKeys(
"{=}")
    WScript.Sleep(
100)
Next

WshShell.SendKeys(
"{F5}"'Change to Hex for easy recognition





]]>
鐢╯printf鏍煎紡鍖栧瓧絎︿覆http://m.shnenglu.com/gracelee/archive/2007/07/31/29085.html灝忚懕铇擱叡灝忚懕铇擱叡Tue, 31 Jul 2007 08:43:00 GMThttp://m.shnenglu.com/gracelee/archive/2007/07/31/29085.htmlhttp://m.shnenglu.com/gracelee/comments/29085.htmlhttp://m.shnenglu.com/gracelee/archive/2007/07/31/29085.html#Feedback2http://m.shnenglu.com/gracelee/comments/commentRss/29085.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/29085.htmlsprintf(mess,"This is field 1,Field 2,Field 3\n");

褰撹繖鏍風(fēng)殑鍩熷緢澶氱殑鏃跺欙紝涓琛屾斁涓嶄笅錛屼負(fù)浜?jiǎn)渚夸簬闃呰锛岄渶瑕佹妸瀹冧滑鍒嗘垚鍑犺錛?br>sprintf(mess,"This is filed 1,\
    Field 2,\
    Field 3,\
    ...
    Field n\n");

浣嗘槸錛岃繖鏍峰甫鏉ヤ釜闂錛屽氨鏄牸寮忓寲鍚庣殑mess鐨勫悇涓煙涔嬮棿灝變駭鐢熶簡(jiǎn)涓嶆兂瑕佺殑瀛楃錛堝絀烘牸絳夛紝浣跨敤UE鍙互娓呮鐨勭湅鍒幫級(jí)錛屽師鍥犳槸鐢變簬浣跨敤浜?jiǎn)绠?huà)琛岀"\"錛坙ine-continuation character錛夛紝鑰屼笉鐢ㄧ畫(huà)琛岀鍙堟棤娉曢氳繃緙栬瘧錛圕2001錛夈?br>
榪欐椂鍙互鐢ㄥ弻寮曞彿鏉ユ妸鍚勪釜鍩熷垎闅斿紑錛岃繖鏍峰氨鏃㈣В鍐充簡(jiǎn)鍙鎬х殑闂錛屽張瑙e喅浜?jiǎn)缂栬瘧闂锛?xì)
sprintf(mess,"This is filed 1,"
    "Field 2,"
    "Field 3,"
    ...
    "Field n\n");




]]>
[闅忚闅忚]living鐨勪袱縐嶈瘝鎬х敤娉?/title><link>http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.html</link><dc:creator>灝忚懕铇擱叡</dc:creator><author>灝忚懕铇擱叡</author><pubDate>Tue, 19 Jun 2007 01:58:00 GMT</pubDate><guid>http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.html</guid><wfw:comment>http://m.shnenglu.com/gracelee/comments/26606.html</wfw:comment><comments>http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/gracelee/comments/commentRss/26606.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/gracelee/services/trackbacks/26606.html</trackback:ping><description><![CDATA[1.noun 鐢熸椿錛岀敓璁?br><br>What Londoners do to make a living have changed considerably since the 19th century.<br><br>19涓栫邯浠ユ潵錛屼雞鏁︿漢璋嬬敓鐨勬柟寮忓彂鐢熶簡(jiǎn)寰堝ぇ鏀瑰彉銆?br><br>鍑犱釜甯歌鐨勮瘝緇勶細(xì)<br>living room<br>living condition<br><br><br>2.adj  媧葷殑<br><br>London is itself a living museum with thousand years of history and culture.<br><br>浼︽暒浠ュ叾鍑犲崈騫寸殑鍘嗗彶鍜屾枃鍖栵紝鍏舵湰韜氨鏄竴搴у崥鐗╅櫌銆?br><br>“living”浣滀負(fù)褰㈠璇嶇敤灝辨湁蹇呰鎻愪竴涓?#8220;live”銆?#8220;live”浣滃艦瀹硅瘝涔熸湁“媧葷殑”鎰忔濓紝浣嗘劅瑙変笂榪欓噷浼間箮涓嶈兘鏇挎崲“living”錛屼笉鐭ラ亾瀵逛笉瀵廣?br><br><img src ="http://m.shnenglu.com/gracelee/aggbug/26606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/gracelee/" target="_blank">灝忚懕铇擱叡</a> 2007-06-19 09:58 <a href="http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.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://2589999.com" target="_blank">在线观看欧美</a>| <a href="http://8181777.com" target="_blank">久久久久国产精品人</a>| <a href="http://qqszdq.com" target="_blank">亚洲第一在线</a>| <a href="http://www38044.com" target="_blank">欧美日本国产在线</a>| <a href="http://87ssyy.com" target="_blank">欧美福利电影网</a>| <a href="http://writeingo.com" target="_blank">正在播放日韩</a>| <a href="http://edtxt.com" target="_blank">欧美一区成人</a>| <a href="http://663747.com" target="_blank">亚洲日本成人在线观看</a>| <a href="http://by3180.com" target="_blank">亚洲天堂免费在线观看视频</a>| <a href="http://www-136hk.com" target="_blank">激情综合电影网</a>| <a href="http://788111c.com" target="_blank">在线一区二区日韩</a>| <a href="http://jnjpsm.com" target="_blank">亚洲国产成人91精品</a>| <a href="http://anquye16.com" target="_blank">在线一区二区三区四区</a>| <a href="http://aimashe.com" target="_blank">影音先锋另类</a>| <a href="http://sxhrdyb.com" target="_blank">亚洲欧美福利一区二区</a>| <a href="http://7777525.com" target="_blank">亚洲片在线观看</a>| <a href="http://www77577.com" target="_blank">欧美一区二区在线看</a>| <a href="http://lfxhfh.com" target="_blank">中文精品在线</a>| <a href="http://jiazhuangma.com" target="_blank">久久久精品999</a>| <a href="http://ayxchc.com" target="_blank">免费成人黄色av</a>| <a href="http://scqike.com" target="_blank">亚洲精品资源美女情侣酒店</a>| <a href="http://4430x.com" target="_blank">国产伦精品一区二区三区在线观看 </a>| <a href="http://scqike.com" target="_blank">国产精品网曝门</a>| <a href="http://thisisfil.com" target="_blank">欧美黄网免费在线观看</a>| <a href="http://quanfadq.com" target="_blank">国产精品一区二区你懂的</a>| <a href="http://xxoo668.com" target="_blank">亚洲国产乱码最新视频</a>| <a href="http://avhai.com" target="_blank">国产午夜精品视频</a>| <a href="http://yy0754.com" target="_blank">一本久久a久久免费精品不卡</a>| <a href="http://f9494.com" target="_blank">在线日本高清免费不卡</a>| <a href="http://880895.com" target="_blank">亚洲欧美日韩国产中文</a>| <a href="http://hhh699.com" target="_blank">在线午夜精品自拍</a>| <a href="http://y9z8.com" target="_blank">欧美a级片一区</a>| <a href="http://www633998.com" target="_blank">免费成人黄色片</a>| <a href="http://njggmy.com" target="_blank">狠狠色香婷婷久久亚洲精品</a>| <a href="http://tzhsdy.com" target="_blank">亚洲一区二区在线播放</a>| <a href="http://tsjcmm.com" target="_blank">99精品视频免费观看</a>| <a href="http://aotaotao.com" target="_blank">久久男人资源视频</a>| <a href="http://3534m.com" target="_blank">久久久亚洲成人</a>| <a href="http://116016.com" target="_blank">国产亚洲激情视频在线</a>| <a href="http://my736.com" target="_blank">在线综合亚洲</a>| <a href="http://dh03.com" target="_blank">亚洲免费视频一区二区</a>| <a href="http://959425.com" target="_blank">欧美日韩精品在线视频</a>| <a href="http://airsixth.com" target="_blank">亚洲国产精品一区</a>| <a href="http://d1112.com" target="_blank">亚洲欧洲中文日韩久久av乱码</a>| <a href="http://3374com.com" target="_blank">久久久亚洲国产天美传媒修理工</a>| <a href="http://6u6uuu666.com" target="_blank">久久精品91久久香蕉加勒比</a>| <a href="http://coerverbeijing.com" target="_blank">欧美性做爰猛烈叫床潮</a>| <a href="http://ssss96.com" target="_blank">99视频精品全部免费在线</a>| <a href="http://3314133.com" target="_blank">一本久久综合亚洲鲁鲁</a>| <a href="http://shiyoudiban.com" target="_blank">欧美激情第二页</a>| <a href="http://lmjqav.com" target="_blank">91久久国产综合久久91精品网站</a>| <a href="http://hazymall.com" target="_blank">久久精品国产亚洲一区二区三区</a>| <a href="http://7628x.com" target="_blank">久久国产精品99国产</a>| <a href="http://qiezi2vip.com" target="_blank">国产精品主播</a>| <a href="http://jgj230230.com" target="_blank">欧美一级在线播放</a>| <a href="http://9927tv.com" target="_blank">久久婷婷人人澡人人喊人人爽</a>| <a href="http://by99969.com" target="_blank">国产午夜亚洲精品不卡</a>| <a href="http://cfqcgw.com" target="_blank">欧美与黑人午夜性猛交久久久</a>| <a href="http://www18998.com" target="_blank">久久精品国产久精国产一老狼 </a>| <a href="http://jigu100.com" target="_blank">亚洲毛片网站</a>| <a href="http://302262.com" target="_blank">亚洲视频中文字幕</a>| <a href="http://7811c.com" target="_blank">国产精品成人一区二区三区吃奶 </a>| <a href="http://by777117.com" target="_blank">91久久精品国产91久久性色tv </a>| <a href="http://sesese98.com" target="_blank">久久久久久久久综合</a>| <a href="http://lgaoxiao.com" target="_blank">国产午夜精品美女毛片视频</a>| <a href="http://maokk88.com" target="_blank">欧美在线网址</a>| <a href="http://aqdav037.com" target="_blank">欧美成人午夜77777</a>| <a href="http://jiejiesao8.com" target="_blank">91久久精品久久国产性色也91</a>| <a href="http://sh738.com" target="_blank">欧美激情一区二区三区</a>| <a href="http://mfgun.com" target="_blank">一区二区三区黄色</a>| <a href="http://www31931.com" target="_blank">久久精品国产精品亚洲</a>| <a href="http://www909059.com" target="_blank">在线看国产一区</a>| <a href="http://chinasck.com" target="_blank">欧美精品在线一区</a>| <a href="http://xinghejiuye.com" target="_blank">亚洲影音先锋</a>| <a href="http://www-44442.com" target="_blank">另类欧美日韩国产在线</a>| <a href="http://5177jy.com" target="_blank">亚洲精品一区二区三</a>| <a href="http://ca88tv.com" target="_blank">日韩亚洲视频</a>| <a href="http://maoming365.com" target="_blank">国产日韩欧美不卡</a>| <a href="http://avtt0.com" target="_blank">香蕉乱码成人久久天堂爱免费</a>| <a href="http://njhuike.com" target="_blank">久久精品在线免费观看</a>| <a href="http://ww323.com" target="_blank">亚洲国产婷婷综合在线精品</a>| <a href="http://www-772773.com" target="_blank">欧美精品日韩综合在线</a>| <a href="http://gzw33.com" target="_blank">亚洲手机成人高清视频</a>| <a href="http://430390.com" target="_blank">久久久午夜视频</a>| <a href="http://681656.com" target="_blank">99精品视频免费全部在线</a>| <a href="http://744734.com" target="_blank">国产精品一区二区在线观看网站 </a>| <a href="http://7788444.com" target="_blank">亚洲午夜视频在线观看</a>| <a href="http://sxhrdyb.com" target="_blank">国产精品永久免费在线</a>| <a href="http://susan5.com" target="_blank">开心色5月久久精品</a>| <a href="http://8332777.com" target="_blank">99视频有精品</a>| <a href="http://wwwnnnn.com" target="_blank">久久综合久久美利坚合众国</a>| <a href="http://www780yy.com" target="_blank">99在线热播精品免费</a>| <a href="http://8004006.com" target="_blank">国产精品一区久久久</a>| <a href="http://9993334.com" target="_blank">麻豆精品视频</a>| <a href="http://wocao1997.com" target="_blank">亚洲欧美日韩另类精品一区二区三区</a>| <a href="http://ssni888.com" target="_blank">蜜桃视频一区</a>| <a href="http://zyjzz.com" target="_blank">香蕉久久国产</a>| <a href="http://9113i.com" target="_blank">99成人免费视频</a>| <a href="http://jinlijun.com" target="_blank">国语自产精品视频在线看8查询8</a>| <a href="http://66669801.com" target="_blank">欧美激情麻豆</a>| <a href="http://7343888.com" target="_blank">久久精品综合一区</a>| <a href="http://621768.com" target="_blank">在线一区二区三区做爰视频网站</a>| <a href="http://1588vip.com" target="_blank">韩国在线视频一区</a>| <a href="http://8410555.com" target="_blank">欧美色图首页</a>| <a href="http://270909.com" target="_blank">老牛国产精品一区的观看方式</a>| <a href="http://hankanzhan.com" target="_blank">一区二区三区日韩欧美精品</a>| <a href="http://sdjinchuan.com" target="_blank">免费观看日韩av</a>| <a href="http://138268.com" target="_blank">久久gogo国模啪啪人体图</a>| <a href="http://15013010203.com" target="_blank">日韩系列在线</a>| <a href="http://www49773.com" target="_blank">亚洲第一视频网站</a>| <a href="http://4449992.com" target="_blank">国产欧美视频一区二区</a>| <a href="http://heshundadi.com" target="_blank">欧美日韩国产另类不卡</a>| <a href="http://www1982t.com" target="_blank">久久夜色精品国产欧美乱</a>| <a href="http://hznaja.com" target="_blank">亚洲免费一级电影</a>| <a href="http://www107aa.com" target="_blank">日韩一级免费</a>| <a href="http://music444.com" target="_blank">亚洲人成毛片在线播放</a>| <a href="http://9113i.com" target="_blank">免费观看成人</a>| <a href="http://www25sds.com" target="_blank">久久久免费观看视频</a>| <a href="http://amiee88.com" target="_blank">欧美一区二区在线免费观看</a>| <a href="http://www-919198.com" target="_blank">日韩天堂在线视频</a>| <a href="http://www205sihu.com" target="_blank">亚洲国产欧洲综合997久久</a>| <a href="http://7628x.com" target="_blank">国产亚洲欧美一区二区三区</a>| <a href="http://8p3c.com" target="_blank">欧美性做爰毛片</a>| <a href="http://833077.com" target="_blank">欧美日韩专区在线</a>| <a href="http://ynjzwh.com" target="_blank">欧美人牲a欧美精品</a>| <a href="http://nachang5117.com" target="_blank">欧美aa在线视频</a>| <a href="http://xiangshi888.com" target="_blank">美国三级日本三级久久99</a>| <a href="http://029902.com" target="_blank">久久九九电影</a>| <a href="http://fc3332.com" target="_blank">久久精品视频网</a>| <a href="http://www-68689.com" target="_blank">欧美尤物一区</a>| <a href="http://ziwufuren.com" target="_blank">久久成人av少妇免费</a>| <a href="http://pansinobbs.com" target="_blank">午夜视频一区二区</a>| <a href="http://xcao10.com" target="_blank">午夜久久影院</a>| <a href="http://ddh345.com" target="_blank">欧美一区二区三区免费观看 </a>| <a href="http://yidaiban.com" target="_blank">亚洲国产综合视频在线观看 </a>| <a href="http://dailymailnepal.com" target="_blank">午夜精品久久久久久久99水蜜桃</a>| <a href="http://04781900.com" target="_blank">亚洲精品视频免费</a>| <a href="http://1392266.com" target="_blank">亚洲黄色成人网</a>| <a href="http://china391.com" target="_blank">最新日韩欧美</a>| <a href="http://www-tk8899.com" target="_blank">亚洲国产日韩欧美在线动漫</a>| <a href="http://sapronlee.com" target="_blank">欧美成人精品在线视频</a>| <a href="http://xw4433.com" target="_blank">嫩草影视亚洲</a>| <a href="http://o6186.com" target="_blank">欧美激情偷拍</a>| <a href="http://www895pao.com" target="_blank">亚洲欧洲另类国产综合</a>| <a href="http://ccc159.com" target="_blank">亚洲青涩在线</a>| <a href="http://cn1898.com" target="_blank">aa国产精品</a>| <a href="http://xfrlyy.com" target="_blank">亚洲在线播放</a>| <a href="http://diyiao.com" target="_blank">欧美一区二区三区啪啪</a>| <a href="http://yahuake.com" target="_blank">午夜精品www</a>| <a href="http://www515678.com" target="_blank">欧美在线观看一区二区</a>| <a href="http://567acg.com" target="_blank">久久成人资源</a>| <a href="http://422608.com" target="_blank">欧美在线视频一区</a>| <a href="http://wwwzmcc1.com" target="_blank">欧美一区二区视频网站</a>| <a href="http://y8e8.com" target="_blank">久久国产婷婷国产香蕉</a>| <a href="http://958997.com" target="_blank">久久精品国产精品亚洲精品</a>| <a href="http://mmmm37.com" target="_blank">欧美一区激情视频在线观看</a>| <a href="http://www-988900.com" target="_blank">欧美一区二区女人</a>| <a href="http://www-3121.com" target="_blank">久久久久9999亚洲精品</a>| <a href="http://65kf.com" target="_blank">久久久蜜桃精品</a>| <a href="http://www-kj777.com" target="_blank">麻豆精品一区二区综合av</a>| <a href="http://ayxchc.com" target="_blank">久久一区二区三区四区</a>| <a href="http://aqd072.com" target="_blank">欧美sm视频</a>| <a href="http://521531.com" target="_blank">亚洲精品日韩欧美</a>| <a href="http://www3344cao.com" target="_blank">亚洲一区二区三区在线观看视频</a>| <a href="http://961318.com" target="_blank">亚洲自拍电影</a>| <a href="http://5a07.com" target="_blank">久久嫩草精品久久久久</a>| <a href="http://www3344xz.com" target="_blank">欧美国产在线观看</a>| <a href="http://nxyhbz.com" target="_blank">国产精品久久久久一区二区三区共 </a>| <a href="http://hs045.com" target="_blank">国产日产精品一区二区三区四区的观看方式</a>| <a href="http://77smsm.com" target="_blank">国产女主播一区</a>| <a href="http://erodasy.com" target="_blank">136国产福利精品导航</a>| <a href="http://www36633.com" target="_blank">99精品视频一区</a>| <a href="http://shiselol.com" target="_blank">久久不射2019中文字幕</a>| <a href="http://6055365.com" target="_blank">免费视频久久</a>| <a href="http://gzw33.com" target="_blank">99精品国产一区二区青青牛奶</a>| <a href="http://hbsmhy.com" target="_blank">午夜亚洲影视</a>| <a href="http://www201314.com" target="_blank">欧美黄网免费在线观看</a>| <a href="http://www492002.com" target="_blank">国产精品免费久久久久久</a>| <a href="http://5c55c5c.com" target="_blank">国外精品视频</a>| <a href="http://cqrebo.com" target="_blank">亚洲一级黄色</a>| <a href="http://mm77gg.com" target="_blank">美腿丝袜亚洲色图</a>| <a href="http://jinlijun.com" target="_blank">99精品视频一区</a>| <a href="http://www520590.com" target="_blank">久久九九国产精品怡红院</a>| <a href="http://3333577.com" target="_blank">欧美人与禽猛交乱配视频</a>| <a href="http://6661639.com" target="_blank">国产亚洲一区二区三区</a>| <a href="http://toomicsvip.com" target="_blank">亚洲精品一区二区三区不</a>| <a href="http://227237.com" target="_blank">欧美一区二区黄色</a>| <a href="http://km43yy.com" target="_blank">亚洲国产成人91精品</a>| <a href="http://yzxq520.com" target="_blank">亚洲欧美激情四射在线日</a>| <a href="http://345521.com" target="_blank">免费成人高清</a>| <a href="http://7776701.com" target="_blank">国产欧美日韩综合</a>| <a href="http://605054.com" target="_blank">一区二区免费看</a>| <a href="http://012928.com" target="_blank">奶水喷射视频一区</a>| <a href="http://ddixx.com" target="_blank">亚洲欧美日韩第一区</a>| <a href="http://7628x.com" target="_blank">欧美激情综合在线</a>| <a href="http://emu160.com" target="_blank">国产综合网站</a>| <a href="http://www17bxbx.com" target="_blank">午夜一区二区三视频在线观看</a>| <a href="http://zgztby.com" target="_blank">91久久精品www人人做人人爽 </a>| <a href="http://js6996.com" target="_blank">亚洲男人影院</a>| <a href="http://wwwcc7777.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>