锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲私人国产精品vA,66精品综合久久久久久久,久久精品国产91久久麻豆自制http://www.shnenglu.com/erran/category/5346.htmlzh-cnMon, 19 May 2008 20:29:22 GMTMon, 19 May 2008 20:29:22 GMT60杞細嫻呰皥wince搴旂敤紼嬪簭鐨勫彲縐繪鎬?/title><link>http://www.shnenglu.com/erran/archive/2007/10/13/34130.html</link><dc:creator>erran</dc:creator><author>erran</author><pubDate>Sat, 13 Oct 2007 09:58:00 GMT</pubDate><guid>http://www.shnenglu.com/erran/archive/2007/10/13/34130.html</guid><wfw:comment>http://www.shnenglu.com/erran/comments/34130.html</wfw:comment><comments>http://www.shnenglu.com/erran/archive/2007/10/13/34130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/erran/comments/commentRss/34130.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/erran/services/trackbacks/34130.html</trackback:ping><description><![CDATA[ <p style="font-size: 10pt; font-family: Arial;">鍘熸枃錛?a href="/milkyway/archive/2007/04/08/21481.html">http://www.shnenglu.com/milkyway/archive/2007/04/08/21481.html</a><br />浣滆咃細<a id="viewpost1_TitleUrl" href="/milkyway/archive/2007/04/08/21481.html"><font color="#2e9ce9" size="3"><br /><br /><br />嫻呰皥wince搴旂敤紼嬪簭鐨勫彲縐繪鎬?/font></a></p> <p style="font-size: 10pt; font-family: Arial;">聽聽聽聽聽 鐢變簬windows緇濆ぇ澶氭暟鎯呭喌涓嬭繍琛屼簬X86騫沖彴涓婏紝涔熷氨涓嶅瓨鍦ㄤ笉鍚屽鉤鍙扮殑鍙Щ妞嶆ч棶棰樸傜劧鑰學indows CE榪愯鍦ㄥ洓澶ф灦鏋勶紙X86錛孲Hx錛孧IPS錛孉RM錛夌殑CPU涓婏紝緙栧啓搴旂敤紼嬪簭鏃跺氨闇瑕佽冭檻瀹冪殑縐繪銆?br />聽聽聽聽聽聽 浠ヤ笅閫氳繃鍦╳ince緋葷粺涓嬭闂墿鐞嗗湴鍧錛屾潵鐪嬬湅濡備綍緙栧啓鍙Щ妞嶆ц緝濂界殑搴旂敤紼嬪簭銆?br />聽聽聽聽聽聽 棣栧厛蹇呴』鏄庣‘涓や釜姒傚康銆?br />聽聽聽聽聽聽 1銆傚湪X86騫沖彴涓嬫墠鏈塈/O鍦板潃榪欎竴璇達紝鍦ㄥ叾浠栦綋緋葷殑CPU錛堝ARM/MIPS錛変笅鏄病鏈塈/O绔彛鐨勩傚洜涓篨86涓嬫妸I/O鍜屽瓨鍌ㄥ櫒鍒嗗紑緙栧潃錛屽鑷村叾鏈変袱縐嶅湴鍧錛涜屽埆鐨凜PU鏄妸涓よ呯粺涓緙栧潃錛屽嵆鎶奍/O鏄犲皠鍒板瓨鍌ㄥ櫒涓娿?br />聽聽聽聽聽聽聽 2銆倃ince鐨勫瓨鍌ㄧ鐞嗘槸閫氳繃MMU瀹炵幇鐨勶紝鍦ㄧ郴緇熷惎鍔ㄥ悗錛屾垜浠彧鑳借闂櫄鎷熷瓨鍌ㄧ┖闂達紝蹇呴』緇忚繃MMU銆備絾鏄湪X86涓嬶紝璁塊棶I/O鍙e拰瀛樺偍鍣ㄨ蛋鐨勫湴鍧鎬葷嚎涓嶅悓錛屼笉鐢ㄧ粡榪嘙MU銆?br />聽聽聽聽聽聽聽聽聽姣斿鎴戜滑鎯寵璁塊棶鎸傚湪鏌愭葷嚎涓婄墿鐞嗗湴鍧涓?60h鐨勭鍙o紝瀵逛簬X86騫沖彴鎴戜滑鍙互鐩存帴宓屽叆姹囩紪鎿嶄綔鐗╃悊鍦板潃錛?鎴栬呬嬌鐢ㄥ湴鍧鎸囬拡璁塊棶鐗╃悊鍦板潃銆備絾瀵逛簬鍏朵粬騫沖彴錛屾垜浠繀欏誨厛浣滀竴涓墿鐞嗗湴鍧鍒拌櫄鎷熷湴鍧鐨勬槧灝勶紝鐒跺悗鎿嶄綔鍏惰櫄鎷熷湴鍧銆傝繖鏍鋒樉鐒剁▼搴忕殑鍙Щ妞嶆т笉濂斤紝鎴戜滑闇瑕佸畾涔壜?#ifdef __x86....#elif defined __arm聽 浣垮緱鍦ㄤ笉鍚屽鉤鍙頒笅紼嬪簭鑳藉欏哄埄榪愯銆?br />聽聽聽聽聽聽聽聽聽 濡傛灉浣跨敤涓嬮潰鐨勪唬鐮佹垜浠氨鍙互涓嶇敤榪欎箞璐瑰姴鐨勫畾涔変笉鍚屽鉤鍙頒簡錛?br />聽聽聽聽聽聽聽聽鍏堝畾涔?br />聽聽聽聽 inIoSpace = 1;<br />聽聽聽 ioPhysicalBase.QuadPart = 0x360;</p> <p style="font-size: 10pt; font-family: Arial;">if( HalTranslateBusAddress( Isa,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //姝ゅ嚱鏁版妸ISA鎬葷嚎涓婄墿鐞嗗湴鍧鏄犲皠涓虹郴緇熺墿鐞嗗湴鍧<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 0,<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ioPhysicalBase,<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 &inIoSpace,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //姝ゅ弬鏁?1璇存槑杞寲鐨勬槸I/O絀洪棿鍦板潃錛?0鏃跺瓨鍌ㄥ櫒鍦板潃<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 &ioPhysicalBase ) )<br />{<br />聽聽聽 if( !inIoSpace )聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ////濡傛灉鏄瓨鍌ㄥ櫒鍦板潃錛岄拡瀵歸潪X86 騫沖彴<br /><br />聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽 ioPortBase = ( PUCHAR ) MmMapIoSpace(聽聽聽聽聽聽聽聽聽聽聽 //姝ゅ嚱鏁版妸緋葷粺鐗╃悊鍦板潃杞寲涓鴻櫄鎷熷湴鍧<br />聽聽聽聽聽聽聽聽聽聽聽 ioPhysicalBase,<br />聽聽聽聽聽聽聽聽聽聽聽 IoLen,<br />聽聽聽聽聽聽聽聽聽聽聽 FALSE );<br />聽聽聽聽聽聽聽 if( ioPortBase == NULL )<br />聽聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽 //TODO: Error handling<br />聽聽聽聽聽聽聽 }<br />聽聽聽 }<br />聽聽聽 else聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //濡傛灉鏄疘/O錛屽嵆X86聽涓嬶紝涓嶉渶瑕佸仛鍦板潃鏄犲皠<br />聽聽聽 {<br />聽聽聽聽聽聽聽 ioPortBase = ( PUCHAR ) ioPhysicalBase.LowPart;<br />聽聽聽 }<br />}<br />else<br />{<br />聽聽聽 //TODO: Error Handling<br />}</p> <p style="font-size: 10pt; font-family: Arial;">聽聽聽聽聽聽聽闅忓悗瀵逛簬绔彛鐨勬搷浣滐紙 ioPortBase錛夛紝鎴戜滑涔熷彲浠ュ厖鍒嗘寲鎺樺畠鐨勫彲縐繪鎬с傞氳繃浣跨敤READ_PORT_UCHAR, <br />WRITE_PORT_UCHAR榪欎簺wince涓嬬殑瀹忔潵瀹炵幇绔彛璇誨啓銆傝屼笉鏄湪X86涓嬬敤鎸囬拡鎿嶄綔錛堜笉浠呯Щ妞嶆у樊錛岃屼笖瀹規槗浜х敓闂錛夈侰E涓嬬殑瀹忓湪鍐呴儴鏄皝瑁呭ソ鐨凙PI鍑芥暟銆備緥濡俉RITE_PORT_UCHAR榪欎釜瀹忓湪X86 澶勭悊鍣ㄤ笂杞寲涓轟竴鏉UT鐨勬眹緙栨寚浠わ紱鑰屽湪ARM澶勭悊鍣ㄤ笂浼氳漿鍖栨垚涓鏉″铏氭嫙鍦板潃鐨勫啓鎸囦護銆?</p> <img src ="http://www.shnenglu.com/erran/aggbug/34130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/erran/" target="_blank">erran</a> 2007-10-13 17:58 <a href="http://www.shnenglu.com/erran/archive/2007/10/13/34130.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞細MultiByteToWideChar鍜學ideCharToMultiByte鐢ㄦ硶璇﹁Вhttp://www.shnenglu.com/erran/archive/2007/10/13/34129.htmlerranerranSat, 13 Oct 2007 09:55:00 GMThttp://www.shnenglu.com/erran/archive/2007/10/13/34129.htmlhttp://www.shnenglu.com/erran/comments/34129.htmlhttp://www.shnenglu.com/erran/archive/2007/10/13/34129.html#Feedback0http://www.shnenglu.com/erran/comments/commentRss/34129.htmlhttp://www.shnenglu.com/erran/services/trackbacks/34129.html

鍦ㄨ繘琛宑e鐨勫紑鍙戞椂錛岀粡甯歌璁″埌瀛楃鐨勮漿鎹紝鐗瑰埆鏄郴緇熶腑鍖呭惈緗戠粶閫氳鏃訛紝鏇存槸濡傛銆俢e涓潎鏄疷nicode緙栫爜錛岃岀綉緇滈氳涓鑸兘浣跨敤BYTE榪涜鏁版嵁浼犺緭銆?/p>

浠ヤ笅鏄湪緗戜笂鎵懼埌鐨勪竴綃囨枃绔狅紝浠嬬粛鐨勫緢璇︾粏銆?/p>

聽1.浣跨敤鏂規硶璇﹁В

聽 鍦ㄦ湰鏂囧紑濮嬩箣澶?鍏堢畝瑕佸湴璇翠竴涓嬩綍涓虹煭瀛楃鍜屽瀛楃.
聽 鎵璋撶殑鐭瓧絎?灝辨槸鐢?bit鏉ヨ〃紺虹殑瀛楃,鍏稿瀷鐨勫簲鐢ㄦ槸ASCII鐮?鑰屽瀛楃,欏懼悕鎬濅箟,灝辨槸鐢?6bit琛ㄧず鐨勫瓧絎?鍏稿瀷鐨勬湁UNICODE.鍏充簬windows涓嬬殑ASCII鍜孶NICODE鐨勬洿澶氫俊鎭?鍙互鍙傝冭繖涓ゆ湰緇忓吀钁椾綔:銆妛indows 紼嬪簭璁捐銆?銆妛indows 鏍稿績緙栫▼銆?榪欎袱鏈功鍏充簬榪欎袱縐嶅瓧絎﹂兘鏈夋瘮杈冭緇嗙殑瑙h.

聽 瀹藉瓧絎﹁漿鎹負澶氫釜鐭瓧絎︽槸涓涓毦鐐?涓嶈繃鎴戜滑鍙鎺屾彙鍒板叾涓殑瑕侀,渚垮彲濡傞奔寰楁按.
聽 濂藉惂,閭e氨璁╂垜浠紑濮嬪惂.

聽 榪欎釜鏄垜浠渶瑕佽漿鍖栫殑澶氬瓧鑺傚瓧絎︿覆: 聽
聽 char sText[20] = {"澶氬瓧鑺傚瓧絎︿覆!OK!"};

聽 鎴戜滑闇瑕佺煡閬撹漿鍖栧悗鐨勫瀛楃闇瑕佸灝戜釜鏁扮粍絀洪棿.铏界劧鍦ㄨ繖涓噷紼嬮噷闈?鎴戜滑鍙互鐩存帴瀹氫箟涓涓?0*2瀹藉瓧絎︾殑鏁扮粍,騫朵笖浜嬪疄涓婂皢榪愯寰楅潪甯歌交鏉炬剦蹇?浣嗗亣濡傚瀛楄妭瀛楃涓叉洿澶?杈懼埌涓婂崈涓箖鑷充笂涓囦釜,鎴戜滑灝嗕細鍙戠幇鍏朵腑嫻垂鐨勫唴瀛樺皢浼氳秺鏉ヨ秺澶?鎵浠ヤ互澶氬瓧鑺傚瓧絎︾殑涓暟鐨勪袱鍊嶄綔涓哄瀛楃鏁扮粍涓嬫爣鐨勫0鏄庣粷瀵逛笉鏄竴涓ソ涓繪剰.
聽 鎵騫?鎴戜滑鑳藉紜煡鎵闇瑕佺殑鏁扮粍絀洪棿.
聽 鎴戜滑鍙渶瑕佸皢MultiByteToWideChar()鐨勭鍥涗釜褰㈠弬璁句負-1,鍗沖彲榪斿洖鎵闇鐨勭煭瀛楃鏁扮粍絀洪棿鐨勪釜鏁?
聽 DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, sText, -1, NULL, 0);

聽 鎺ヤ笅鏉?鎴戜滑鍙渶瑕佸垎閰嶅搷搴旂殑鏁扮粍絀洪棿:
聽 wchar_t *pwText;
聽 pwText = new wchar_t[dwNum];
聽 if(!pwText)
聽 {
聽聽 delete []pwText;
聽 }

聽 鎺ョ潃,鎴戜滑灝卞彲浠ョ潃鎵嬭繘琛岃漿鎹簡.鍦ㄨ繖閲屼互杞崲鎴怉SCII鐮佸仛涓轟緥瀛?
聽 MultiByteToWideChar (CP_ACP, 0, psText, -1, sText, dwSize);

聽 鏈鍚?浣跨敤瀹屾瘯褰撶劧瑕佽寰楅噴鏀懼崰鐢ㄧ殑鍐呭瓨:
聽 delete []psText;


聽 鍚岀悊,瀹藉瓧絎﹁漿涓哄瀛楄妭瀛楃鐨勪唬鐮佸涓? 聽
聽 wchar_t wText[20] = {L"瀹藉瓧絎﹁漿鎹㈠疄渚?OK!"};
聽 DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
聽 char *psText;
聽 psText = new char[dwNum];
聽 if(!psText)
聽 {
聽聽 delete []psText;
聽 }
聽 WideCharToMultiByte (CP_OEMCP,NULL,lpcwszStr,-1,psText,dwNum,NULL,FALSE);
聽 delete []psText;

聽聽 濡傛灉涔嬪墠鎴戜滑宸茬粡鍒嗛厤濂界┖闂?騫朵笖鐢變簬瀛楃涓茶緝鐭?鍙互涓嶇悊浼氭氮璐圭殑絀洪棿,浠呬粎鍙槸鎯崇畝鍗曞湴灝嗙煭瀛楃鍜屽瀛楃鐩鎬簰杞崲,閭f湁娌℃湁浠涔堢畝渚跨殑鏂規硶鍛?
聽聽 WIN32 API閲屾病鏈夌鍚堣繖縐嶈姹傜殑鍑芥暟,浣嗘垜浠彲浠ヨ嚜宸辮繘琛屽皝瑁?
聽聽聽 聽
聽 //-------------------------------------------------------------------------------------
聽 //Description:
聽 // This function maps a character string to a wide-character (Unicode) string
聽 //
聽 //Parameters:
聽 // lpcszStr: [in] Pointer to the character string to be converted
聽 // lpwszStr: [out] Pointer to a buffer that receives the translated string.
聽 // dwSize: [in] Size of the buffer
聽 //
聽 //Return Values:
聽 // TRUE: Succeed
聽 // FALSE: Failed
聽 //
聽 //Example:
聽 // MByteToWChar(szA,szW,sizeof(szW)/sizeof(szW[0]));
聽 //---------------------------------------------------------------------------------------
聽 BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize)
聽 {
聽聽聽 // Get the required size of the buffer that receives the Unicode
聽聽聽 // string.
聽聽聽 DWORD dwMinSize;
聽聽聽 dwMinSize = MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, NULL, 0);

聽聽聽 if(dwSize < dwMinSize)
聽聽聽 {
聽聽聽聽 return FALSE;
聽聽聽 }

聽聽 聽
聽聽聽 // Convert headers from ASCII to Unicode.
聽聽聽 MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, lpwszStr, dwMinSize); 聽
聽聽聽 return TRUE;
聽 }

聽 //-------------------------------------------------------------------------------------
聽 //Description:
聽 // This function maps a wide-character string to a new character string
聽 //
聽 //Parameters:
聽 // lpcwszStr: [in] Pointer to the character string to be converted
聽 // lpszStr: [out] Pointer to a buffer that receives the translated string.
聽 // dwSize: [in] Size of the buffer
聽 //
聽 //Return Values:
聽 // TRUE: Succeed
聽 // FALSE: Failed
聽 //
聽 //Example:
聽 // MByteToWChar(szW,szA,sizeof(szA)/sizeof(szA[0]));
聽 //---------------------------------------------------------------------------------------
聽 BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize)
聽 {
聽聽 DWORD dwMinSize;
聽聽 dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
聽聽 if(dwSize < dwMinSize)
聽聽 {
聽聽聽 return FALSE;
聽聽 }
聽聽 WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE);
聽聽 return TRUE;
聽 }


聽 浣跨敤鏂規硶涔熷緢綆鍗?紺轟緥濡備笅:
聽 wchar_t wText[10] = {L"鍑芥暟紺轟緥"};
聽 char sText[20]= {0};
聽 WCharToMByte(wText,sText,sizeof(sText)/sizeof(sText[0]));
聽 MByteToWChar(sText,wText,sizeof(wText)/sizeof(wText[0]));

聽 榪欎袱涓嚱鏁扮殑緙虹偣鍦ㄤ簬鏃犳硶鍔ㄦ佸垎閰嶅唴瀛?鍦ㄨ漿鎹㈠緢闀跨殑瀛楃涓叉椂鍙兘浼氭氮璐硅緝澶氬唴瀛樼┖闂?浼樼偣鏄?鍦ㄤ笉鑰冭檻嫻垂絀洪棿鐨勬儏鍐典笅杞崲杈冪煭瀛楃涓查潪甯告柟渚?


2.MultiByteToWideChar()鍑芥暟涔辯爜鐨勯棶棰?br />
聽 鏈夌殑鏈嬪弸鍙兘宸茬粡鍙戠幇,鍦ㄦ爣鍑嗙殑WinCE4.2鎴朩inCE5.0 SDK妯℃嫙鍣ㄤ笅,榪欎釜鍑芥暟閮芥棤娉曟甯稿伐浣?鍏惰漿鎹箣鍚庣殑瀛楃鍏ㄦ槸涔辯爜.鍙婃椂鏇存敼MultiByteToWideChar()鍙傛暟涔熶緷鐒跺姝?
聽 涓嶈繃榪欎釜涓嶆槸浠g爜闂,鍏剁粨鐥囧湪浜庢墍瀹氬埗鐨勬搷浣滅郴緇?濡傛灉鎴戜滑瀹氬埗鐨勬搷浣滅郴緇熼粯璁よ璦涓嶆槸涓枃,涔熶細鍑虹幇榪欑鎯呭喌.鐢變簬鏍囧噯鐨凷DK榛樿璇█涓鴻嫳鏂?鎵浠ヨ偗瀹氫細鍑虹幇榪欎釜闂.鑰岃繖涓棶棰樼殑瑙e喅,涓嶈兘鍦ㄧ畝鍗曞湴鏇存敼鎺у埗闈㈡澘鐨?鍖哄煙閫夐」"鐨?榛樿璇█",鑰屾槸瑕佸湪緋葷粺瀹氬埗鐨勬椂鍊?閫夋嫨榛樿璇█涓?涓枃".
聽 緋葷粺瀹氬埗鏃墮夋嫨榛樿璇█鐨勪綅緗簬:
聽 Platform -> Setting... -> locale -> default language ,閫夋嫨"涓枃",鐒跺悗緙栬瘧鍗沖彲.



erran 2007-10-13 17:55 鍙戣〃璇勮
]]>
EVC涓嬪疄鐜癢inCE杞歡鎹㈣偆涔婥DialogSkhttp://www.shnenglu.com/erran/archive/2006/12/26/16889.htmlerranerranTue, 26 Dec 2006 13:49:00 GMThttp://www.shnenglu.com/erran/archive/2006/12/26/16889.htmlhttp://www.shnenglu.com/erran/comments/16889.htmlhttp://www.shnenglu.com/erran/archive/2006/12/26/16889.html#Feedback0http://www.shnenglu.com/erran/comments/commentRss/16889.htmlhttp://www.shnenglu.com/erran/services/trackbacks/16889.html榪欓噷瀹炵幇浜嗗璇濈瓙鐨勬崲鑲わ紝嫻嬭瘯鏁堟灉榪樺彲浠ャ?/font>


///////////////////////////////////////////////////
//
//  CDialogSK : dialog skin
//
//  writer: erran
//
//  time: 2006-03-24
//
///////////////////////////////////////////////////

錛僫 nclude "BaseSK.h"      /// EVC涓嬪疄鐜癢inCE杞歡鎹㈣偆涔嬪嚱鏁癟ransparentBitBlt
錛僫 nclude "BitmapSK.h"   /// EVC涓嬪疄鐜癢inCE杞歡鎹㈣偆涔嬫崲鑲ゅ熀紜綾籆BitmapSK

class CDialogSK: public CDialog
{

public:
 // constructor and Destructor
 CDialogSK();
 CDialogSK(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
 CDialogSK(UINT nIDTemplate, CWnd* pParentWnd = NULL);
 ~CDialogSK();

protected:
 // common constructor
 Constructor(); 
 // Destructor,Release the bitmap
 Destructor();

protected:
 //window title text
 CString m_titleText;

protected:
 //interface bitmap
 CBitmapSK m_bmpLeft;  //dialog border left bitmap
 CBitmapSK m_bmpRight; //dialog border right bitmap
 CBitmapSK m_bmpBottom;//dialog border bottom bitmap
 CBitmapSK m_bmpTitle;   //two bitmap, dlg active and disactive
 CBitmapSK m_bmpTitleBtn;//max min close btn bitmap
 CBitmapSK m_bmpBkDlg; //dialog back ground bitmap
protected:
 //transparent color of bitmap
 COLORREF m_transColorLeft;
 COLORREF m_transColorRight;
 COLORREF m_transColorBottom;
 COLORREF m_transColorTitle;
 COLORREF m_transColorTitleBtn;
 COLORREF m_transColorBackDlg;

protected:

 //window border width and height
 // the border can not more than the border bmp size
 int m_borderLeftWidth;
 int m_borderRightWidth;
 int m_borderBottomHeight;
 int m_titleHeight;
 //offset in the bitmap
 int m_offsetLeft1, m_offsetLeft2;
 int m_offsetRight1, m_offsetRight2;
 int m_offsetBottom1, m_offsetBottom2;
 int m_offsetTitle1, m_offsetTitle2;

public:
 //window style
 BOOL m_titlable;
 BOOL m_sizable;
 BOOL m_minable;
 BOOL m_maxable;
 BOOL m_sysmenu;

 BOOL m_isActive;

public:
 BOOL m_winTransable;

public:
 //msg
 void OnPaint();
 BOOL OnEraseBkgnd(CDC* pDC);

public:
 // draw skin (x,y) is this dialog region
 BOOL DrawRight(CDC *pDC, int x, int y, int height, int state);
 BOOL DrawLeft(CDC *pDC, int x, int y, int height, int state);
 BOOL DrawBottom(CDC *pDC, int x, int y, int width, int state);
 BOOL DrawTitle(CDC *pDC, int x, int y, int width, int state);

 BOOL DrawFrame(CDC *pDC, int x, int y,int width, int height, int state);
 BOOL DrawBkDlg(CDC *pDC, int x, int y,int width, int height, int state); 
 
 BOOL DrawButton( CDC * pDC, int i, int state );

};

 

錛僫 nclude "stdafx.h"
錛僫 nclude "DialogSK.h"

/////////////////////////////////////////////////////////////////////////////
// CDialogSK dialog


CDialogSK::CDialogSK()
:CDialog()
{
}

CDialogSK::CDialogSK(LPCTSTR lpszTemplateName, CWnd* pParentWnd/*= NULL*/)
:CDialog(lpszTemplateName, pParentWnd)
{
}

CDialogSK::CDialogSK(UINT nIDTemplate, CWnd* pParentWnd/*/= NULL*/)
:CDialog(nIDTemplate, pParentWnd)
{
 
}

CDialogSK::~CDialogSK()
{
}

CDialogSK::Constructor()
{
   /*嫻嬭瘯鐢?br> m_bmpLeft.LoadBitmapEx(NULL, IDB_LEFT); 
 m_bmpRight.LoadBitmapEx(NULL, IDB_RIGHT);
 m_bmpBottom.LoadBitmapEx(NULL, IDB_BOTTOM);
 m_bmpTitle.LoadBitmapEx(NULL, IDB_TOP); 
  
 m_titleHeight = m_bmpTitle.Height()/2;
 m_borderLeftWidth = m_bmpLeft.Width()/2;
 m_borderRightWidth = m_bmpRight.Width()/2;
 m_borderBottomHeight = m_bmpBottom.Height()/2;

 m_offsetLeft1 = 10;
 m_offsetLeft2 = 10;
 m_offsetRight1 = 10;
 m_offsetRight2 = 10;
 m_offsetBottom1 = 10;
 m_offsetBottom2 = 10;
 m_offsetTitle1 = 10;
 m_offsetTitle2 = 10;
   */

}

CDialogSK::Destructor()
{
}


BOOL CDialogSK::DrawRight(CDC *pDC, int x, int y, int height, int state)

 int bmpwidth, bmpheight;
 m_bmpRight.Size(bmpwidth, bmpheight);

 //bitmap rect
 RECT srctop, srcmid, desmid, srcdown;

 if (state == 0)
 {
  srctop = CRect(0, 0, m_borderRightWidth, m_offsetRight1);
  srcmid = CRect(0, m_offsetRight1, m_borderRightWidth, m_offsetRight2);
  srcdown = CRect(0, m_offsetRight2, m_borderRightWidth, bmpheight);
 }
 else
 {
  srctop = CRect(m_borderRightWidth, 0, bmpwidth, m_offsetRight1);
  srcmid = CRect(m_borderRightWidth, m_offsetRight1, bmpwidth, m_offsetRight2);
  srcdown = CRect(m_borderRightWidth, m_offsetRight2, bmpwidth, bmpheight);
 }

 desmid = CRect(x, y+m_offsetRight1, x+m_borderRightWidth, y+height-bmpheight+m_offsetRight2);

 m_bmpRight.Draw(pDC, x, y, &srctop);
 m_bmpRight.Fill(pDC, &desmid, &srcmid);
 m_bmpRight.Draw(pDC, x, y+height-bmpheight+m_offsetRight2, &srcdown);

 return TRUE;
}

BOOL CDialogSK::DrawLeft(CDC *pDC, int x, int y, int height, int state)

 int bmpwidth, bmpheight;
 m_bmpLeft.Size(bmpwidth, bmpheight);

 //bitmap rect
 RECT srctop, srcmid, desmid, srcdown;

 if (state == 0)
 {
  srctop = CRect(0, 0, m_borderLeftWidth, m_offsetLeft1);
  srcmid = CRect(0, m_offsetLeft1, m_borderLeftWidth, m_offsetLeft2);
  srcdown = CRect(0, m_offsetLeft2, m_borderLeftWidth, bmpheight);
 }
 else
 {
  srctop = CRect(m_borderLeftWidth, 0, bmpwidth, m_offsetRight1);
  srcmid = CRect(m_borderLeftWidth, m_offsetLeft1, bmpwidth, m_offsetLeft2);
  srcdown = CRect(m_borderLeftWidth, m_offsetLeft2, bmpwidth, bmpheight);
 }

 desmid = CRect(x, y+m_offsetLeft1, x+m_borderLeftWidth, y+height-bmpheight+m_offsetLeft2);

 m_bmpLeft.Draw(pDC, x, y, &srctop);
 m_bmpLeft.Fill(pDC, &desmid, &srcmid);
 m_bmpLeft.Draw(pDC, x, y+height-bmpheight+m_offsetLeft2, &srcdown);

 return TRUE;
}

BOOL CDialogSK::DrawBottom(CDC *pDC, int x, int y, int width, int state)
{
 int bmpwidth, bmpheight;
 m_bmpBottom.Size(bmpwidth, bmpheight);

 RECT srcleft, srcmid, desmid, srcright;

 if (state == 0)
 {
  srcleft = CRect(0, 0, m_offsetBottom1, m_borderBottomHeight);
  srcmid = CRect(m_offsetBottom1, 0, m_offsetBottom2, m_borderBottomHeight);
  srcright = CRect(m_offsetBottom2, 0, bmpwidth, m_borderBottomHeight);
 }
 else
 {
  srcleft = CRect(0, m_borderBottomHeight, m_offsetBottom1, bmpheight);
  srcmid = CRect(m_offsetBottom1, m_borderBottomHeight, m_offsetBottom2, bmpheight);
  srcright = CRect(m_offsetBottom2, m_borderBottomHeight, bmpwidth, bmpheight);
 }
  
 desmid = CRect(x+m_offsetBottom1, y, x+width-bmpwidth+m_offsetBottom2, y+m_borderBottomHeight);

 m_bmpBottom.Draw(pDC, x, y, &srcleft);
 m_bmpBottom.Fill(pDC, &desmid, &srcmid);
 m_bmpBottom.Draw(pDC, x+width-bmpwidth+m_offsetBottom2, y, &srcright);

 return TRUE;
}

BOOL CDialogSK::DrawTitle(CDC *pDC, int x, int y, int width, int state)

 int bmpwidth, bmpheight;
 m_bmpTitle.Size(bmpwidth, bmpheight);

 RECT srcleft, srcmid, desmid, srcright;

 if (state == 0)
 {
  srcleft = CRect(0, 0, m_offsetTitle1, m_titleHeight);
  srcmid = CRect(m_offsetTitle1, 0, m_offsetTitle2, m_titleHeight);
  srcright = CRect(m_offsetTitle2, 0, bmpwidth, m_titleHeight);
 }
 else
 {
  srcleft = CRect(0, m_titleHeight, m_offsetTitle1, bmpheight);
  srcmid = CRect(m_offsetTitle1, m_titleHeight, m_offsetTitle2, bmpheight);
  srcright = CRect(m_offsetTitle2, m_titleHeight, bmpwidth, bmpheight);
 }

 desmid = CRect(x+m_offsetTitle1, y, x+width-bmpwidth+m_offsetTitle2, y+m_titleHeight);

 m_bmpTitle.Draw(pDC, x, y, &srcleft);
 m_bmpTitle.Fill(pDC, &desmid, &srcmid);
 m_bmpTitle.Draw(pDC, x+width-bmpwidth+m_offsetTitle2, y, &srcright);

 return TRUE;
}

BOOL CDialogSK::DrawFrame(CDC *pDC, int x, int y,int width, int height, int state)
{
 DrawTitle(pDC, x+m_borderLeftWidth, y, width-m_borderLeftWidth-m_borderRightWidth, state); 
 DrawLeft(pDC, x, y, height, state);
 DrawRight(pDC, x+width-m_borderRightWidth, y, height, state);
 DrawBottom(pDC, x+m_borderLeftWidth, y+height-m_borderBottomHeight, width-m_borderLeftWidth-m_borderRightWidth, state); 
 
 return TRUE;
}

BOOL CDialogSK::DrawBkDlg(CDC *pDC, int x, int y,int width, int height, int state)
{
 int bmpwidth, bmpheight;
 m_bmpBkDlg.Size(bmpwidth, bmpheight);
  
 RECT des, src;
 des = CRect(x,y, x+width, y+height);
 src = CRect(0, 0, bmpwidth, bmpheight);

 m_bmpBkDlg.Fill(pDC, &des, &src);

 return TRUE;
}

BOOL CDialogSK::OnEraseBkgnd(CDC* pDC)

 CRect rtClient = CClientRect(m_hWnd);
  
 DrawFrame(pDC, rtClient.left, rtClient.top, rtClient.Width(), rtClient.Height(),0);
 DrawBkDlg(pDC, rtClient.left+m_borderLeftWidth, rtClient.top+m_titleHeight,
       rtClient.Width()-m_borderLeftWidth-m_borderRightWidth,
       rtClient.Height()-m_titleHeight-m_borderBottomHeight,
             0);


 return TRUE;

}

鍛靛懙錛屽氨榪欎箞澶氫簡錛岃繖閲屼笉鏂逛究璐村浘錛岃涓嶅彲浠ョ湅鍒版晥鏋滅殑錛屽懙鍛碉紝嬈㈣繋鎸囨暀銆?/font>



erran 2006-12-26 21:49 鍙戣〃璇勮
]]>
EVC涓嬪疄鐜癢inCE杞歡鎹㈣偆涔嬫崲鑲ゅ熀紜綾籆BitmapSKhttp://www.shnenglu.com/erran/archive/2006/12/26/16888.htmlerranerranTue, 26 Dec 2006 13:45:00 GMThttp://www.shnenglu.com/erran/archive/2006/12/26/16888.htmlhttp://www.shnenglu.com/erran/comments/16888.htmlhttp://www.shnenglu.com/erran/archive/2006/12/26/16888.html#Feedback2http://www.shnenglu.com/erran/comments/commentRss/16888.htmlhttp://www.shnenglu.com/erran/services/trackbacks/16888.html鐢變簬鍦╳ince涓嬩笉鏀寔hook錛屾墍浠ュce涓嬬殑杞歡鎹㈣偆錛屼細寰堟収蹇冿紝涓嶈繃錛屾浘緇忕湅鍒拌繃涓涓浗澶栫殑緗戠珯涓婃湁pocket涓嬪疄鐜癶ook鐨勪唬鐮侊紝娌¤鎳傦紝鍛靛懙錛岃嚜宸卞お姘翠簡,榪欏氨娑夊強鍒板彟澶栦竴涓棶棰樹簡錛岃繕娌℃湁鎵懼埌瀹炵幇hook鐨勬柟娉曪紝鎵鏈夎鍙﹀鎯沖姙娉曚簡錛屾墍浠ヤ笉綆℃庝箞鏍烽兘瑕侀噸鍐欐帶浠訛紝鍙傝冧簡涓浜沄C瀹炵幇鐨勬崲鑲わ紝鍦ㄦ瀹炵幇浜嗗熀鏈被CBitmapSK銆傚叾涓湁涓儊闂風殑鍦版柟鏄痚vc瀵笴Rgn鏀寔鐨勪笉鍏ㄩ潰錛屽浠繪剰褰㈢姸鐨勭獥鍙e疄鐜版湁浜涢夯鐑︼紝鎵浠ユ湁涓噸瑕佺殑鍑芥暟涓嶈兘瀹炵幇錛岃鎯沖叾浠栫殑鍔炴硶瀹炵幇錛?br>//////////////////////////////////////////////////////////////////////
//
// BaseSK.h: interface for the CBitmapSK class.
//
// writer : erran
//
// time:  2006-03-10
//
//////////////////////////////////////////////////////////////////////

class CBitmapSK : public CBitmap 
{
public:
 
 CBitmapSK();
 virtual ~CBitmapSK();

 //load bitmap by resource file path
 BOOL LoadBitmapEx(LPCTSTR lpszFileName);

 //load bitmap by resource name or ID
 BOOL LoadBitmapEx(LPCTSTR lpszResourceName, UINT nIDResource);

 //attaches a hBitmap to a CBitmap object.
 BOOL Attach(HBITMAP hbmp)
 {
     return CBitmap::Attach(hbmp);
 }
 
 void Size(int &width, int &height)
 {
    BITMAP bm;
    memset(&bm, 0, sizeof(bm));
    CBitmap::GetBitmap(&bm);
    width = bm.bmWidth;
    height = bm.bmHeight;
 }

 //bitmap width
 int Width(void)
 {
    BITMAP bm;
    memset(&bm, 0, sizeof(bm));
    CBitmap::GetBitmap(&bm);
    return bm.bmWidth;
 }

 //bitmap height
 int Height()
 {
    BITMAP bm;
    memset(&bm, 0, sizeof(bm));
    CBitmap::GetBitmap(&bm);
    return bm.bmHeight;
 }

 /////// src(bmp) ---> Des(pDC)

 //draw current bitmap to device(pDC rect(lpr)) 
 BOOL Draw(CDC *pDC, LPRECT lprDes);
 //draw current bitmap to device(pDC rect(lpr)) , transparent 
 BOOL Draw(CDC *pDC, LPRECT lprDes, COLORREF crTrans, BOOL isTrans);

 //draw sub bitmap(the rect lprSrc of current bitmap) to special point( the begin point (x,y) of pDC device)
 BOOL Draw(CDC *pDC, int x, int y, LPRECT lprSrc);
 //draw sub bitmap to special point
 BOOL Draw(CDC *pDC, int x, int y, LPRECT lprSrc, COLORREF crTrans, BOOL isTrans);

 BOOL Fill(CDC *pDC, LPRECT lprDes);
 BOOL Fill(CDC *pDC, LPRECT lprDes, COLORREF crTrans, BOOL isTrans);

 BOOL Fill(CDC *pDC, LPRECT lprDes, LPRECT lprSrc); 
 BOOL Fill(CDC *pDC, LPRECT lprDes, LPRECT lprSrc, COLORREF crTrans, BOOL isTrans);

 //Drawing Transparent Bitmaps,Copies a bitmap transparently onto the destination DC
 BOOL TransparentDraw(CDC * pDC, int x, int y, COLORREF crColour);
 

 //Copies a bitmap from a source rectangle into a destination rectangle,
 //stretching or compressing the bitmap if necessary to fit the dimensions of the destination rectangle.
 BOOL StretchDraw(CDC *pDC, LPRECT lprDes, LPRECT lprSrc);
 //Copies a bitmap from a source rectangle into a destination rectangle,
 //stretching or compressing the bitmap if necessary to fit the dimensions of the destination rectangle. 
 BOOL StretchDraw(CDC *pDC, LPRECT lprSrc);

 //make a region from bitmap, It will show as a window     ::: faulse function :::
 //HRGN CreateRegion(COLORREF crColour, BOOL isTrans = TRUE);  

};

 


////for class CBitmapSK

CBitmapSK::CBitmapSK()
{
 
}

CBitmapSK::~CBitmapSK()
{
 
}

BOOL CBitmapSK::LoadBitmapEx(LPCTSTR lpszFileName)
{
   DeleteObject();

   ASSERT(m_hObject==NULL);

   HBITMAP hBitmap = NULL;

   hBitmap = (HBITMAP)::LoadImage(0, lpszFileName, IMAGE_BITMAP, 0, 0, 0);

   if(hBitmap == NULL) return FALSE;

   return CBitmap::Attach(hBitmap);
}

BOOL CBitmapSK::LoadBitmapEx(LPCTSTR lpszResourceName, UINT nIDResource)
{
   DeleteObject();

   ASSERT(m_hObject==NULL);
 
   if (lpszResourceName != NULL)
  {
    return CBitmap::LoadBitmap(lpszResourceName);
  }

  if (nIDResource != 0)
  {
     return CBitmap::LoadBitmap(nIDResource);
  }
 
  return FALSE;
}

BOOL CBitmapSK::Draw(CDC *pDC, LPRECT lprDes)
{
  ASSERT(pDC!=NULL);

  CDC dc;

  dc.CreateCompatibleDC(pDC);

  CBitmap *bmp = dc.SelectObject(this); 

  pDC->BitBlt(lprDes->left, lprDes->top,
    lprDes->right - lprDes->left, lprDes->bottom - lprDes->top,
    &dc, 0, 0, SRCCOPY);

  dc.SelectObject(bmp);  

  dc.DeleteDC();
  bmp = NULL;

  return TRUE;
}

BOOL CBitmapSK::Draw(CDC *pDC, LPRECT lprDes, COLORREF crTrans, BOOL isTrans)
{
  ASSERT(pDC!=NULL);

  if (!isTrans)
  {
    return Draw(pDC, lprDes);
  }
  else
  {
    return TransparentBitBlt(pDC->GetSafeHdc(),
             lprDes->left,lprDes->top,Width(),Height(),
             (HBITMAP)this->GetSafeHandle(),0,0,crTrans,NULL);
  }
}


BOOL CBitmapSK::Draw( CDC *pDC, int x, int y, LPRECT lprSrc)
{
   ASSERT(pDC!=NULL);

   CDC dc;

   dc.CreateCompatibleDC(pDC);

   CBitmap *pOldbmp = dc.SelectObject(this);

   if (lprSrc != NULL)
   {
     //Copies a bitmap from the source device context to this current device context
     pDC->BitBlt(x, y, lprSrc->right - lprSrc->left, lprSrc->bottom - lprSrc->top,
               &dc, lprSrc->left, lprSrc->top, SRCCOPY);
   }
   else
   {
      pDC->BitBlt(x, y, Width(), Height(), &dc, 0, 0, SRCCOPY);
   }

   dc.SelectObject(pOldbmp);
   dc.DeleteDC();
   pOldbmp = NULL;

   return TRUE;
}


BOOL CBitmapSK::Draw( CDC *pDC, int x, int y, LPRECT lprSrc, COLORREF crTrans, BOOL isTrans)
{
    ASSERT(pDC!=NULL);

    if (!isTrans)
   {
     return Draw(pDC, x, y, lprSrc);
    }
   else
  {
    return TransparentBitBlt(pDC->GetSafeHdc(), x, y, lprSrc->right - lprSrc->left, lprSrc->bottom - lprSrc->top,
         (HBITMAP)this->GetSafeHandle(), lprSrc->left, lprSrc->top, crTrans, NULL );
  }
}


BOOL CBitmapSK::Fill(CDC *pDC, LPRECT lprDes, LPRECT lprSrc)

   ASSERT(pDC!=NULL);

   int widthDes, widthSrc, heightDes, heightSrc;
   widthDes = abs(lprDes->right - lprDes->left);
   widthSrc = abs(lprSrc->right - lprSrc->left);
   heightDes = abs(lprDes->bottom - lprDes->top);
   heightSrc = abs(lprSrc->bottom - lprSrc->top);

   int paddingx, paddingy, i, j;
   paddingx = int(widthDes / widthSrc);
   paddingy = int(heightDes / heightSrc);
 
   CDC dc;
   dc.CreateCompatibleDC(pDC);
   CBitmap *pOldbmp = dc.SelectObject(this);

   if (widthDes <= widthSrc)        
  {
    if (heightDes <= heightSrc)
   {
      Draw(pDC, lprDes);
    }
   else
   {   
     for (i=1; i<paddingy; i++)
     {
        pDC->BitBlt(lprDes->left, lprDes->top + heightSrc*(i-1), widthDes, heightSrc,&dc, lprSrc->left, lprSrc->top, SRCCOPY);
     }
     pDC->BitBlt(lprDes->left,lprDes->top + heightSrc*(i-1), widthDes, heightDes - heightSrc*(i-1), &dc, lprSrc->left, lprSrc->top, SRCCOPY);
   }
 }
 else
 {
   if (heightDes <= heightSrc)
   {
      for (i=1; i<paddingx; i++)
     {
         pDC->BitBlt(lprDes->left + widthSrc*(i-1), lprDes->top, widthSrc, heightDes, &dc, lprSrc->left, lprSrc->top, SRCCOPY);
     }
     pDC->BitBlt(lprDes->left + widthSrc*(i-1), lprDes->top, widthDes - widthSrc*(i-1), heightDes, &dc, lprSrc->left, lprSrc->top, SRCCOPY);
   }
   else
   {
     for (j=1; j<=paddingy; j++)
    {
       for (i=1; i<=paddingx; i++)
       {
           pDC->BitBlt(lprDes->left + widthSrc*(i-1),lprDes->top + heightSrc*(j-1), widthSrc, heightSrc, &dc, lprSrc->left, lprSrc->top, SRCCOPY);    
       }
       pDC->BitBlt(lprDes->left + widthSrc*(i-1), lprDes->top + heightSrc*(j-1),widthDes - widthSrc*(i-1), heightSrc, &dc, lprSrc->left, lprSrc->top, SRCCOPY);
    }
   }
   for (i=1; i<=paddingx; i++)
   {
      pDC->BitBlt(lprDes->left + widthSrc*(i-1), lprDes->top + heightSrc*(j-1), widthSrc, heightDes - heightSrc*(j-1), &dc, lprSrc->left, lprSrc->top, SRCCOPY);
   }
   pDC->BitBlt(lprDes->left + widthSrc*(i-1), lprDes->top + heightSrc*(j-1),  widthDes - widthSrc*(i-1),
      heightDes - heightSrc*(j-1), &dc, lprSrc->left, lprSrc->top, SRCCOPY);
  }
 
  dc.SelectObject(pOldbmp);
  dc.DeleteDC();
  pOldbmp = NULL;

  return TRUE;
}

BOOL CBitmapSK::TransparentDraw(CDC * pDC, int x, int y, COLORREF crTrans)
{
  ASSERT(pDC!=NULL);

  return TransparentBitBlt(pDC->GetSafeHdc(), x, y, Width(), Height(), (HBITMAP)this->GetSafeHandle(),
        0, 0, crTrans, NULL  );
}


BOOL CBitmapSK::StretchDraw(CDC *pDC, LPRECT lprDes, LPRECT lprSrc)
{
 ASSERT(pDC!=NULL);

 if(lprDes == NULL) return FALSE;
 
 CDC dc;
 dc.CreateCompatibleDC(pDC);
 CBitmap *pOldbmp = dc.SelectObject(this);

 //SetStretchBltMode(pDC->GetSafeHdc(), COLORONCOLOR);

 if(!lprSrc)
 {
  pDC->StretchBlt(lprDes->left, lprDes->top, lprDes->right,  lprDes->bottom,  &dc,  0, 0,  Width(),  Height(), SRCCOPY);
 }
 else
 {
  pDC->StretchBlt(lprDes->left, lprDes->top, lprDes->right - lprDes->left, lprDes->bottom - lprDes->top,
      &dc, lprSrc->left, lprSrc->top, lprSrc->right - lprSrc->left, lprSrc->bottom - lprSrc->top,SRCCOPY);
 }
 
 dc.SelectObject(pOldbmp);
 dc.DeleteDC();
 pOldbmp = NULL;

 return TRUE; 
}

BOOL CBitmapSK::StretchDraw(CDC *pDC, LPRECT lprSrc)
{
 ASSERT(pDC!=NULL);

 CDC dc;
 dc.CreateCompatibleDC(pDC);
 CBitmap *pOldbmp = dc.SelectObject(this);
 
 pDC->StretchBlt(lprSrc->left, lprSrc->top, lprSrc->right, lprSrc->bottom, &dc,
     0,      0,      Width(),      Height(),     SRCCOPY);
 
 dc.SelectObject(pOldbmp);
 dc.DeleteDC();
 pOldbmp = NULL;

 return TRUE; 
}

浣跨敤榪欎釜綾誨疄鐜頒簡瀵硅瘽絳愮殑鎹㈣偆錛屾祴璇曡繕琛屻?/font>

鏆傛椂榪樻病鍙戠幇ce涓嬬殑鎹㈣偆絎笁鏂規帶浠訛紝瑙佽繃鏈濂界殑涔熷氨鏄偅涓狢CeButton浜嗭紝榪樻槸鍦‥VC3.0涓嬪紑鍙戠殑銆傘傘?/font>



erran 2006-12-26 21:45 鍙戣〃璇勮
]]>
EVC涓嬪疄鐜癢inCE杞歡鎹㈣偆涔嬪嚱鏁癟ransparentBitBlthttp://www.shnenglu.com/erran/archive/2006/12/26/16887.htmlerranerranTue, 26 Dec 2006 13:43:00 GMThttp://www.shnenglu.com/erran/archive/2006/12/26/16887.htmlhttp://www.shnenglu.com/erran/comments/16887.htmlhttp://www.shnenglu.com/erran/archive/2006/12/26/16887.html#Feedback0http://www.shnenglu.com/erran/comments/commentRss/16887.htmlhttp://www.shnenglu.com/erran/services/trackbacks/16887.html榪欎釜鏄鎹㈣偆鏂規硶鐨勫熀紜鍑芥暟: 鐩稿叧璧勬枡錛歁icrosoft Knowledge Base Article - Q79212
///{{{{  for global function
///HOWTO: Drawing Transparent Bitmaps 
see: Microsoft Knowledge Base Article - Q79212
// TransparentBlt - Copies a bitmap transparently onto the destination DC
// hdcDes - Handle to destination device context
// xDes  - x-coordinate of destination rectangle's upper-left corner
// yDes  - y-coordinate of destination rectangle's upper-left corner
// width - Width of destination rectangle
// height - height of destination rectangle
// hbmSrc - Handle of the source bitmap
// xSrc  - x-coordinate of source rectangle's upper-left corner
// ySrc  - y-coordinate of source rectangle's upper-left corner
// crTrans  - The transparent color
// hPal     - Logical palette to be used with bitmap. Can be NULL
BOOL TransparentBitBlt(HDC hdcDes,
        int xDes,
        int yDes,
        int width,
        int height,
        HBITMAP hbmSrc,
        int xSrc,
        int ySrc,
        COLORREF crTrans,
        HPALETTE hPal
        )

{
 ASSERT(hdcDes!=NULL);//if(hdcDes == NULL) return FALSE;
 ASSERT(hbmSrc!=NULL);//if(hbmSrc == NULL) return FALSE;

 CDC dc, memDC, maskDC, tempDC;
 dc.Attach(hdcDes);
 maskDC.CreateCompatibleDC(&dc);
 CBitmap maskBmp;
 
 //add these to store return of SelectObject() calls
 CBitmap *pOldMemBmp = NULL;
 CBitmap *pOldMaskBmp = NULL;
 HBITMAP hOldTempBmp = NULL;
 
 memDC.CreateCompatibleDC(&dc);
 tempDC.CreateCompatibleDC(&dc);
 CBitmap bmpImage;
 bmpImage.CreateCompatibleBitmap(&dc, width, height);
 pOldMemBmp = memDC.SelectObject(&bmpImage);
 
 // Select and realize the palette
 if( dc.GetDeviceCaps(RASTERCAPS) & RC_PALETTE && hPal )
 {
  ::SelectPalette(dc, hPal, FALSE);
  dc.RealizePalette();
  
  ::SelectPalette(memDC, hPal, FALSE);
 }
 
 hOldTempBmp = (HBITMAP)::SelectObject(tempDC.m_hDC, hbmSrc);
 
 memDC.BitBlt(0, 0, width, height, &tempDC, xSrc, ySrc, SRCCOPY);
 
 // Create monochrome bitmap for the mask
 maskBmp.CreateBitmap(width, height, 1, 1, NULL);
 pOldMaskBmp = maskDC.SelectObject(&maskBmp);
 memDC.SetBkColor(crTrans);
 
 // Create the mask from the memory DC
 maskDC.BitBlt(0, 0, width, height, &memDC, 0, 0, SRCCOPY);
 
 // Set the background in memDC to black. Using SRCPAINT with black
 // and any other color results in the other color, thus making
 // black the transparent color
 memDC.SetBkColor(RGB(0,0,0));
 memDC.SetTextColor(RGB(255,255,255));
 memDC.BitBlt(0, 0, width, height, &maskDC, 0, 0, SRCAND);
 
 // Set the foreground to black. See comment above.
 dc.SetBkColor(RGB(255,255,255));
 dc.SetTextColor(RGB(0,0,0));
 dc.BitBlt(xDes, yDes, width, height, &maskDC, 0, 0, SRCAND);
 
 // Combine the foreground with the background
 dc.BitBlt(xDes, yDes, width, height, &memDC, 0, 0, SRCPAINT);
 
 
 if (hOldTempBmp)
  ::SelectObject(tempDC.m_hDC, hOldTempBmp);
 if (pOldMaskBmp)
  maskDC.SelectObject(pOldMaskBmp);
 if (pOldMemBmp)
  memDC.SelectObject(pOldMemBmp);
 
 dc.Detach();

 maskBmp.DeleteObject();
 bmpImage.DeleteObject();

 maskDC.DeleteDC();
 memDC.DeleteDC();
 tempDC.DeleteDC();

 pOldMemBmp = NULL;
 pOldMaskBmp = NULL;
 hOldTempBmp = NULL;

 return TRUE;
}

///}}} for global function

 

鍙︿笁涓緢鏈夋剰鎬濈殑綾伙紝浠庨珮鎵嬮偅“鐩?#8221;鏉ョ殑錛屽懙鍛?


class CWinRect: public CRect
{
public:
 CWinRect(HWND hWnd)
 {
  ::GetWindowRect(hWnd, this);
 }
 CWinRect(const CWnd *pWnd)
 {
  ::GetWindowRect(pWnd->GetSafeHwnd(), this);
 }

};

class CWinText: public CString
{
public:
 CWinText(HWND hWnd)
 {
  (CWnd::FromHandle(hWnd))->GetWindowText(*this); 
 }
 CWinText(const CWnd *pWnd)
 {
  pWnd->GetWindowText(*this);
 }
};


class CClientRect: public CRect
{
public:
 CClientRect(HWND hWnd)
 {
  ::GetClientRect(hWnd, this);
 }
 CClientRect(CWnd *pWnd)
 {
  ::GetClientRect(pWnd->GetSafeHwnd(), this);
 }
};



erran 2006-12-26 21:43 鍙戣〃璇勮
]]>
Windows CE涓婣ctiveX 鎺т歡鐨勪嬌鐢?/title><link>http://www.shnenglu.com/erran/archive/2006/05/30/7908.html</link><dc:creator>erran</dc:creator><author>erran</author><pubDate>Tue, 30 May 2006 15:46:00 GMT</pubDate><guid>http://www.shnenglu.com/erran/archive/2006/05/30/7908.html</guid><wfw:comment>http://www.shnenglu.com/erran/comments/7908.html</wfw:comment><comments>http://www.shnenglu.com/erran/archive/2006/05/30/7908.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/erran/comments/commentRss/7908.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/erran/services/trackbacks/7908.html</trackback:ping><description><![CDATA[<p class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><span style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋"><font face=瀹嬩綋><font size=2><br>鍦?span lang=EN-US>WinCe</span>涓嬩嬌鐢?span lang=EN-US>ActiveX</span>鎺т歡涓?span lang=EN-US>Window(2k,xp)</span>涓嬫渶澶х殑涓嶅悓涔嬪灝辨槸瑕佺紪璇戜袱涓増鏈殑<span lang=EN-US>ocx</span>錛屼竴涓畨瑁呭埌<span lang=EN-US>window</span>涓婏紝榪欐牱灝卞彲浠ュ湪<span lang=EN-US>EVC</span>鐜涓嬩嬌鐢ㄨ<span lang=EN-US>ocx</span>榪涜緙栫▼浜嗭紝涓涓畨瑁呭埌<span lang=EN-US>wince</span>涓婏紝鐢ㄤ簬浣跨敤榪欎釜<span lang=EN-US>ocx</span>鐨勭▼搴忚皟鐢ㄣ?br><span lang=EN-US><o:p></o:p></span></font></font></span></p> <p class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><font face=瀹嬩綋><font size=2><span lang=EN-US style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋"><span style="mso-tab-count: 1"><br>    </span></span><span style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋">鍦ㄦ鍋氫簡涓畝鍗曠殑<span lang=EN-US>ocx</span>璇曚簡璇曪紝鑳藉鍦?span lang=EN-US>EVC4.2/</span>妯℃嫙鍣?span lang=EN-US>wince4.2</span>涓嬫垚鍔熴傚叿浣撴楠ゅ涓嬶細<br><span lang=EN-US><o:p></o:p></span></span></font></font></p> <p class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><font face=瀹嬩綋><font size=2><span lang=EN-US style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋"><span style="mso-tab-count: 1"><br>    </span>1. </span><span style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋">寮鍙?span lang=EN-US>CE</span>鐗?span lang=EN-US>OCX</span>鎺т歡銆傚厛鍦?span lang=EN-US>EVC</span>涓紑鍙戣嚜宸辯殑<span lang=EN-US>OCX</span>鎺т歡銆傜紪璇戞垚鍔熶互鍚庯紝<span lang=EN-US>ocx</span>浼氳鑷姩涓嬭澆鍒版ā鎷熷櫒閲屽幓銆?br><span lang=EN-US><o:p></o:p></span></span></font></font></p> <p class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><font face=瀹嬩綋><font size=2><span lang=EN-US style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋"><span style="mso-tab-count: 1"><br>    </span>2. </span><span style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋">鍦ㄦā鎷熷櫒涓敞鍐岃鎺т歡<span lang=EN-US>.</span>娉ㄥ唽鏂規硶錛氱敤<span lang=EN-US>EVC</span>鐨?span lang=EN-US>remote filter viewer</span>鍔犺澆鐩綍<span lang=EN-US>C:\Program Files\Microsoft eMbedded C++ 4.0\EVC\WCE400\TARGET\X86\regsvrce.exe</span>鍒版ā鎷熷櫒<span lang=EN-US>windows</span>鐩綍涓嬨傛垨鑰呯洿鎺ユ嫹璐濊<span lang=EN-US>regsvrce.exe</span>鍒版ā鎷熷櫒閲屻傛嫹璐濇垚鍔熷悗錛屽湪妯℃嫙鍣ㄤ笂榪愯<span lang=EN-US>regsvrce.exe</span>錛屾敞鍐屾帶浠訛紝濡傝繍琛?#8220;<span lang=EN-US>regsvrce CEActivexBtn.ocx</span>”<span lang=EN-US>,</span>鍗蟲敞鍐屼簡<span lang=EN-US>CEActivexBtn </span>鎺т歡銆?br><span lang=EN-US><o:p></o:p></span></span></font></font></p> <p class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><font face=瀹嬩綋><font size=2><span lang=EN-US style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋"><span style="mso-tab-count: 1"><br>    </span>4. </span><span style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋">寮鍙?span lang=EN-US>win32</span>鐗?span lang=EN-US>OCX</span>鎺т歡銆傚湪<span lang=EN-US>VC</span>涓垱寤轟竴涓拰浠ヤ笂宸ョ▼鍚嶅瓧涓鏍風殑宸ョ▼錛堝繀欏諱竴鏍鳳紝鍚﹀垯鍥炰笉鎴愬姛錛夛紝鎶婅宸ョ▼錛?span lang=EN-US>vc</span>宸ョ▼錛変笅鐨?涓や釜宸ョ▼鏂囦歡<span lang=EN-US>dsw</span>鍜?span lang=EN-US>dsp</span>鎷瘋礉鍒?span lang=EN-US>CE</span>鐗堟帶浠跺伐紼嬬殑鐩綍涓嬶紝鍜?span lang=EN-US>vcw</span>鍜?span lang=EN-US>vcp</span>鏀懼埌鍚屼竴涓洰褰曚笅錛岀劧鍚庢墦寮榪欎釜鐩綍涓嬬殑<span lang=EN-US>VC</span>宸ョ▼錛屽彂鐜扮紪璇戦厤緗噷閫夋嫨鐨勬槸“<span lang=EN-US>Win32 Unicode Debug</span>”錛岀紪璇戯紝鍙兘浼氫駭鐢熼摼鎺ラ敊璇紝鍗沖樊<span lang=EN-US>mfc42ud;lib</span>銆傚綋鐒跺鏋?span lang=EN-US>VC</span>瀹夎鐨勫緢瀹屽杽鐨勮瘽錛屼笉浼氫駭鐢熻繖涓敊璇備笉榪囦篃娌″叧緋伙紝鎶婇偅涓厤緗敼浜嗭紝鏀規垚“<span lang=EN-US>Win32 Debug</span>”錛岃繖鏍峰氨鑳界紪璇戞垚鍔熶簡銆傜紪璇戝畬鎴愶紝<span lang=EN-US>VC</span>浼氳嚜鍔ㄦ敞鍐岃<span lang=EN-US>win32</span>鐗堢殑<span lang=EN-US>ocx</span>鎺т歡銆?br><span lang=EN-US><o:p></o:p></span></span></font></font></p> <p class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><span style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋"><font face=瀹嬩綋><font size=2><br>銆銆<span lang=EN-US>5</span>錛庡湪<span lang=EN-US>EVC</span>涓婃坊鍔犺<span lang=EN-US>Win32</span>鐗堢殑錛堜笉鏄?span lang=EN-US>CE</span>鐗堢殑錛?span lang=EN-US>ocx</span>鎺т歡銆傛柟娉曪紝鍒涘緩涓涓?span lang=EN-US>demo</span>宸ョ▼錛屽湪璇ュ伐紼嬬殑瀵硅瘽絳愮紪杈戝櫒閲岋紝鍙抽敭鑿滃崟“<span lang=EN-US>Insert ActiveX Controls</span>”錛屽嚭鐜?span lang=EN-US>Insert ActiveX Controls</span>紿楀彛錛岀偣鍑?#8220;<span lang=EN-US>Add Controls</span>”鎸夐挳錛屾壘鍒扮敤<span lang=EN-US>VC</span>緙栬瘧鐨?span lang=EN-US>Win32</span>鐗?span lang=EN-US>ocx</span>鎺т歡錛屾坊鍔犮?br><span lang=EN-US><o:p></o:p></span></font></font></span></p> <p class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><span style="mso-bidi-font-family: 瀹嬩綋; mso-hansi-font-family: 瀹嬩綋"><font face=瀹嬩綋><font size=2><br>銆銆<span lang=EN-US>OK</span>錛佺幇鍦ㄥ彲浠ュ湪<span lang=EN-US>EVC</span>涓婅皟鐢ㄨ<span lang=EN-US>ocx</span>緙栫▼浜嗐?br><span lang=EN-US><o:p></o:p></span></font></font></span></p> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><font size=2><br>銆銆鍦ㄦ澘鏉夸笂浣跨敤鏃訛紝娉ㄥ唽濂藉氨鍙互浜?/font> </span> <img src ="http://www.shnenglu.com/erran/aggbug/7908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/erran/" target="_blank">erran</a> 2006-05-30 23:46 <a href="http://www.shnenglu.com/erran/archive/2006/05/30/7908.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>EVC瀹炵幇WIN CE涓嬫埅灞忓茍涓斾繚瀛樺埌鏂囦歡[By Erran] http://www.shnenglu.com/erran/archive/2006/05/14/7094.htmlerranerranSat, 13 May 2006 17:34:00 GMThttp://www.shnenglu.com/erran/archive/2006/05/14/7094.htmlhttp://www.shnenglu.com/erran/comments/7094.htmlhttp://www.shnenglu.com/erran/archive/2006/05/14/7094.html#Feedback2http://www.shnenglu.com/erran/comments/commentRss/7094.htmlhttp://www.shnenglu.com/erran/services/trackbacks/7094.html

鍦╓inCE涓? 鐢變簬WinCE鐨勭簿綆,鏈夊緢澶歸in32涓嬬殑鏍囧噯API涓嶆敮鎸?鎵浠ユ湁寰堝鍦╲c涓婅兘澶熻交鏄撳疄鐜扮殑鍔熻兘, 鍦╡vc涓湁鐐歸毦搴?蹇呴』鍙橀氫竴涓?灝辨嬁鎴彇灞忓箷鏉ヨ,涓涓父鐢ㄧ殑鍑芥暟GetDIBits鍦╳ince灝盪nsupported.褰撴椂涓轟簡瀹炵幇榪欎釜鍔熻兘,棰囪垂浜嗕簡涓鐣績琛錛屽綋鐒跺叾涓昏榪樻槸鍥犱負瀵筧pi涓嶆槸寰堢啛鎮夈?/font>

鏈鍒濅嬌鐢ㄧ殑鎴睆鏂規硶璇存潵榪樼湡鏈変簺涓漢錛屼竴涓竴涓偣鐨勫彇寰楅鑹插鹼紝鍐嶄繚瀛樺埌bmp鏂囦歡涓幓錛岃繖鏍風▼搴忚繍琛岀殑閫熷害瓚呮參錛屼繚瀛樹竴涓?00X600鐨刡mp宸笉澶氳涓涓ゅ垎閽燂紙鐮斿崕8251鏉匡級錛岃寰楁湁浜涗笉瀵瑰ご錛屽喅瀹氭兂鍔炴硶鏀硅繘涓涓嬶紝灝變嬌鍔插湴鐪嬩簡涓涓婥harles Petzold鍏堢敓鐨勩奝rogramming Windows銆嬶紙榪欐湰涔﹀緢緇忓吀錛屽煎緱濂藉ソ鐮旂┒涓涓嬶級錛岀粓浜庢妸鏃墮棿緙╃煭鍒板嚑縐掗挓浜嗭紝涓嬮潰榪欎釜鍑芥暟鍦╡vc鍜寁c涓嬮兘test pass(涓嶇敤鏇存敼)錛屾湁涓嶈凍涔嬪嬈㈣繋鎸囨錛屽嚱鏁幫細

// this function create a bmp file to save the current screen;
// supported eVC++ 4.0 (wince 4.0) and vc++ 6.0 , test pass;

void CSnapDlg::OnScreenSave(const char *filename)

    HDC  hScrDC, hMemDC;        
    int  width, height; 
 
 //the pointer will save all pixel point's color value
 BYTE  *lpBitmapBits = NULL;
       
 //creates a device context for the screen device
    hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);

  //get the screen point size
    width = GetDeviceCaps(hScrDC, HORZRES);
    height = GetDeviceCaps(hScrDC, VERTRES);

    //creates a memory device context (DC) compatible with the screen device(hScrDC) 
    hMemDC = CreateCompatibleDC(hScrDC);

 //initialise the struct BITMAPINFO for the bimap infomation錛?/font>
 //in order to use the function CreateDIBSection
 //
on wince os, each pixel stored by 24 bits(biBitCount=24) 
 //and no compressing(biCompression=0)

    BITMAPINFO RGB24BitsBITMAPINFO;
    ZeroMemory(&RGB24BitsBITMAPINFO, sizeof(BITMAPINFO));
    RGB24BitsBITMAPINFO.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    RGB24BitsBITMAPINFO.bmiHeader.biWidth = width;
    RGB24BitsBITMAPINFO.bmiHeader.biHeight = height;
    RGB24BitsBITMAPINFO.bmiHeader.biPlanes = 1;
    RGB24BitsBITMAPINFO.bmiHeader.biBitCount = 24;
  
 
//use the function CreateDIBSection and SelectObject 
 //in order to get the bimap pointer : lpBitmapBits

    HBITMAP directBmp = CreateDIBSection(hMemDC, (BITMAPINFO*)&RGB24BitsBITMAPINFO,
       DIB_RGB_COLORS, (void **)&lpBitmapBits, NULL, 0);
 HGDIOBJ previousObject = SelectObject(hMemDC, directBmp);

 // copy the screen dc to the memory dc
 BitBlt(hMemDC, 0, 0, width, height, hScrDC, 0, 0, SRCCOPY);
 
 //if you only want to get the every pixel color value,
 //you can begin here and the following part of this function will be unuseful;
 //the following part is in order to write file;

 //bimap file header in order to write bmp file
 BITMAPFILEHEADER bmBITMAPFILEHEADER;
 ZeroMemory(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER));
 bmBITMAPFILEHEADER.bfType = 0x4d42;  //bmp 
    bmBITMAPFILEHEADER.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
    bmBITMAPFILEHEADER.bfSize = bmBITMAPFILEHEADER.bfOffBits + ((width*height)*3); ///3=(24 / 8)
 
 //write into file
 FILE *mStream = NULL;
 if((mStream = fopenfilename, "wb")))
 {  
  //write bitmap file header
  fwrite(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER), 1, mStream);
  //write bitmap info
  fwrite(&(RGB24BitsBITMAPINFO.bmiHeader), sizeof(BITMAPINFOHEADER), 1, mStream);
  //write bitmap pixels data
  fwrite(lpBitmapBits, 3*width*height, 1, mStream);
 
 //close file
  fclose(mStream);
 }
 
 //delete
 DeleteObject(hMemDC);
 DeleteObject(hScrDC);
 DeleteObject(directBmp);
 DeleteObject(previousObject);
}

榪樻槸鐢ㄨ嫳璇綔浜嗘敞閲婏紝铏界劧鑻辮瀛︾殑寰堢碂緋曪紝榪樻槸瑙夊緱榪欎釜涔犳儻姣旇緝濂絶~ ..




erran 2006-05-14 01:34 鍙戣〃璇勮
]]>
久久精品免费一区二区三区| 久久美女人爽女人爽| 国产成人无码精品久久久免费 | 国产精品久久自在自线观看| 亚洲狠狠婷婷综合久久蜜芽| 7777精品伊人久久久大香线蕉 | 亚洲国产精品狼友中文久久久| 亚洲嫩草影院久久精品| 久久er国产精品免费观看2| 97久久综合精品久久久综合| 久久精品人人做人人爽电影蜜月 | 久久嫩草影院免费看夜色| 国产精品成人无码久久久久久 | 久久精品www| 亚洲成色999久久网站| 亚洲天堂久久精品| 狠狠人妻久久久久久综合蜜桃| 久久久久亚洲AV成人网| 久久毛片免费看一区二区三区| 亚洲欧美日韩精品久久亚洲区 | 久久国产高潮流白浆免费观看| 久久香蕉国产线看观看精品yw| 久久精品国产亚洲AV大全| 久久精品免费一区二区三区| 久久久久亚洲AV成人网人人软件| 欧美国产精品久久高清| 精品综合久久久久久97| WWW婷婷AV久久久影片| 国内精品久久久久久不卡影院| 亚洲欧美日韩精品久久亚洲区 | 久久99国产综合精品免费| 情人伊人久久综合亚洲| 久久久久国产精品嫩草影院| 久久午夜无码鲁丝片秋霞| 国内精品久久国产大陆| 久久影院亚洲一区| 久久久久久国产精品免费无码| 99久久亚洲综合精品网站| 久久久久99这里有精品10| 国产精品久久久久久影院| 无码人妻少妇久久中文字幕|