锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品aa,国产精品久久久久免费a∨大胸,在线精品国产欧美http://m.shnenglu.com/QUIRE-0216/category/4973.htmlzh-cnTue, 20 May 2008 02:02:49 GMTTue, 20 May 2008 02:02:49 GMT60VC甯哥敤鏁版嵁綾誨瀷浣跨敤杞崲璇﹁В (杞?http://m.shnenglu.com/QUIRE-0216/archive/2007/11/08/36114.htmlQUIRE-0216QUIRE-0216Thu, 08 Nov 2007 01:41:00 GMThttp://m.shnenglu.com/QUIRE-0216/archive/2007/11/08/36114.htmlhttp://m.shnenglu.com/QUIRE-0216/comments/36114.htmlhttp://m.shnenglu.com/QUIRE-0216/archive/2007/11/08/36114.html#Feedback0http://m.shnenglu.com/QUIRE-0216/comments/commentRss/36114.htmlhttp://m.shnenglu.com/QUIRE-0216/services/trackbacks/36114.html

鍒氭帴瑙C緙栫▼鐨勬湅鍙嬪線寰瀵硅澶氭暟鎹被鍨嬬殑杞崲鎰熷埌榪鋒儜涓嶈В錛屾湰鏂囧皢浠嬬粛涓浜涘父鐢ㄦ暟鎹被鍨嬬殑浣跨敤銆?/p>

鎴戜滑鍏堝畾涔変竴浜涘父瑙佺被鍨嬪彉閲忓熶互璇存槑

int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="紼嬩僵鍚?;
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;

涓銆佸叾瀹冩暟鎹被鍨嬭漿鎹負瀛楃涓?/p>


鐭暣鍨?int)
itoa(i,temp,10);///灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
itoa(i,temp,2); ///鎸変簩榪涘埗鏂瑰紡杞崲
闀挎暣鍨?long)
ltoa(l,temp,10);
嫻偣鏁?float,double)
鐢╢cvt鍙互瀹屾垚杞崲,榪欐槸MSDN涓殑渚嬪瓙:
int decimal, sign;
char *buffer;
double source = 3.1415926535;
buffer = _fcvt( source, 7, &decimal, &sign );
榪愯緇撴灉:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
decimal琛ㄧず灝忔暟鐐圭殑浣嶇疆,sign琛ㄧず絎﹀彿:0涓烘鏁幫紝1涓鴻礋鏁?
CString鍙橀噺
str = "2008鍖椾含濂ヨ繍";
buf = (LPSTR)(LPCTSTR)str;
BSTR鍙橀噺
BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
char * buf = _com_util::ConvertBSTRToString(bstrValue);
SysFreeString(bstrValue);
AfxMessageBox(buf);
delete(buf);
CComBSTR鍙橀噺
CComBSTR bstrVar("test");
char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str);
AfxMessageBox(buf);
delete(buf);

_bstr_t鍙橀噺
_bstr_t綾誨瀷鏄BSTR鐨勫皝瑁咃紝鍥犱負宸茬粡閲嶈澆浜?鎿嶄綔絎︼紝鎵浠ュ緢瀹規槗浣跨敤
_bstr_t bstrVar("test");
const char *buf = bstrVar;///涓嶈淇敼buf涓殑鍐呭
AfxMessageBox(buf);


閫氱敤鏂規硶(閽堝闈濩OM鏁版嵁綾誨瀷)
鐢╯printf瀹屾垚杞崲
char  buffer[200];
char  c = '1';
int   i = 35;
long  j = 1000;
float f = 1.7320534f;
sprintf( buffer, "%c",c);
sprintf( buffer, "%d",i);
sprintf( buffer, "%d",j);
sprintf( buffer, "%f",f);

浜屻佸瓧絎︿覆杞崲涓哄叾瀹冩暟鎹被鍨?br>strcpy(temp,"123");

鐭暣鍨?int)
i = atoi(temp);
闀挎暣鍨?long)
l = atol(temp);
嫻偣(double)
d = atof(temp);
CString鍙橀噺
CString name = temp;
BSTR鍙橀噺
BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
...///瀹屾垚瀵筨strValue鐨勪嬌鐢?br>SysFreeString(bstrValue);

CComBSTR鍙橀噺
CComBSTR綾誨瀷鍙橀噺鍙互鐩存帴璧嬪?br>CComBSTR bstrVar1("test");
CComBSTR bstrVar2(temp);

_bstr_t鍙橀噺
_bstr_t綾誨瀷鐨勫彉閲忓彲浠ョ洿鎺ヨ祴鍊?br>_bstr_t bstrVar1("test");
_bstr_t bstrVar2(temp);


涓夈佸叾瀹冩暟鎹被鍨嬭漿鎹㈠埌CString
浣跨敤CString鐨勬垚鍛樺嚱鏁癋ormat鏉ヨ漿鎹?渚嬪:


鏁存暟(int)
str.Format("%d",i);
嫻偣鏁?float)
str.Format("%f",i);
瀛楃涓叉寚閽?char *)絳夊凡緇忚CString鏋勯犲嚱鏁版敮鎸佺殑鏁版嵁綾誨瀷鍙互鐩存帴璧嬪?br>str = username;
瀵逛簬Format鎵涓嶆敮鎸佺殑鏁版嵁綾誨瀷錛屽彲浠ラ氳繃涓婇潰鎵璇寸殑鍏充簬鍏跺畠鏁版嵁綾誨瀷杞寲鍒癱har *鐨勬柟娉曞厛杞埌char *錛岀劧鍚庤祴鍊肩粰CString鍙橀噺銆?/p>

鍥涖丅STR銆乢bstr_t涓嶤ComBSTR


CComBSTR 鏄疉TL瀵笲STR鐨勫皝瑁咃紝_bstr_t鏄疌++瀵笲STR鐨勫皝瑁?BSTR鏄?2浣嶆寚閽?浣嗗茍涓嶇洿鎺ユ寚鍚戝瓧涓茬殑緙撳啿鍖恒?br>char *杞崲鍒癇STR鍙互榪欐牱:
BSTR b=_com_util::ConvertStringToBSTR("鏁版嵁");///浣跨敤鍓嶉渶瑕佸姞涓奵omutil.h鍜宑omsupp.lib
SysFreeString(bstrValue);
鍙嶄箣鍙互浣跨敤
char *p=_com_util::ConvertBSTRToString(b);
delete p;
鍏蜂綋鍙互鍙傝冧竴錛屼簩孌佃惤閲岀殑鍏蜂綋璇存槑銆?/p>

CComBSTR涓巁bstr_t瀵瑰ぇ閲忕殑鎿嶄綔絎﹁繘琛屼簡閲嶈澆錛屽彲浠ョ洿鎺ヨ繘琛?,!=,==絳夋搷浣滐紝鎵浠ヤ嬌鐢ㄩ潪甯告柟渚褲?br>鐗瑰埆鏄痏bstr_t,寤鴻澶у浣跨敤瀹冦?/p>


浜斻乂ARIANT 銆乢variant_t 涓?COleVariant


VARIANT鐨勭粨鏋勫彲浠ュ弬鑰冨ご鏂囦歡VC98\Include\OAIDL.H涓叧浜庣粨鏋勪綋tagVARIANT鐨勫畾涔夈?br>瀵逛簬VARIANT鍙橀噺鐨勮祴鍊鹼細棣栧厛緇檝t鎴愬憳璧嬪鹼紝鎸囨槑鏁版嵁綾誨瀷錛屽啀瀵硅仈鍚堢粨鏋勪腑鐩稿悓鏁版嵁綾誨瀷鐨勫彉閲忚祴鍊鹼紝涓句釜渚嬪瓙錛?br>VARIANT va;
int a=2001;
va.vt=VT_I4;///鎸囨槑鏁村瀷鏁版嵁
va.lVal=a; ///璧嬪?/p>

瀵逛簬涓嶉┈涓婅祴鍊肩殑VARIANT錛屾渶濂藉厛鐢╒oid VariantInit(VARIANTARG FAR* pvarg);榪涜鍒濆鍖?鍏舵湰璐ㄦ槸灝唙t璁劇疆涓篤T_EMPTY,涓嬭〃鎴戜滑鍒椾婦vt涓庡父鐢ㄦ暟鎹殑瀵瑰簲鍏崇郴:

Byte bVal;  // VT_UI1.
Short iVal;  // VT_I2.
long lVal;  // VT_I4.
float fltVal;  // VT_R4.
double dblVal;  // VT_R8.
VARIANT_BOOL boolVal;  // VT_BOOL.
SCODE scode;  // VT_ERROR.
CY cyVal;  // VT_CY.
DATE date;  // VT_DATE.
BSTR bstrVal;  // VT_BSTR.
DECIMAL FAR* pdecVal  // VT_BYREF|VT_DECIMAL.
IUnknown FAR* punkVal;  // VT_UNKNOWN.
IDispatch FAR* pdispVal;  // VT_DISPATCH.
SAFEARRAY FAR* parray;  // VT_ARRAY|*.
Byte FAR* pbVal;  // VT_BYREF|VT_UI1.
short FAR* piVal;  // VT_BYREF|VT_I2.
long FAR* plVal;  // VT_BYREF|VT_I4.
float FAR* pfltVal;  // VT_BYREF|VT_R4.
double FAR* pdblVal;  // VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal;  // VT_BYREF|VT_BOOL.
SCODE FAR* pscode;  // VT_BYREF|VT_ERROR.
CY FAR* pcyVal;  // VT_BYREF|VT_CY.
DATE FAR* pdate;  // VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal;  // VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal;  // VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal;  // VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray;  // VT_ARRAY|*.
VARIANT FAR* pvarVal;  // VT_BYREF|VT_VARIANT.
void FAR* byref;  // Generic ByRef.
char cVal;  // VT_I1.
unsigned short uiVal;  // VT_UI2.
unsigned long ulVal;  // VT_UI4.
int intVal;  // VT_INT.
unsigned int uintVal;  // VT_UINT.
char FAR * pcVal;  // VT_BYREF|VT_I1.
unsigned short FAR * puiVal;  // VT_BYREF|VT_UI2.
unsigned long FAR * pulVal;  // VT_BYREF|VT_UI4.
int FAR * pintVal;  // VT_BYREF|VT_INT.
unsigned int FAR * puintVal;  //VT_BYREF|VT_UINT.


_variant_t鏄疺ARIANT鐨勫皝瑁呯被錛屽叾璧嬪煎彲浠ヤ嬌鐢ㄥ己鍒剁被鍨嬭漿鎹紝鍏舵瀯閫犲嚱鏁頒細鑷姩澶勭悊榪欎簺鏁版嵁綾誨瀷銆?br>浣跨敤鏃墮渶鍔犱笂#include <comdef.h>
渚嬪錛?br>long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;


COleVariant鐨勪嬌鐢ㄤ笌_variant_t鐨勬柟娉曞熀鏈竴鏍鳳紝璇峰弬鑰冨涓嬩緥瀛愶細
COleVariant v3 = "瀛楃涓?, v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;


鍏佸叾瀹冧竴浜汣OM鏁版嵁綾誨瀷

鏍規嵁ProgID寰楀埌CLSID
HRESULT CLSIDFromProgID( LPCOLESTR lpszProgID,LPCLSID pclsid);
CLSID clsid;
CLSIDFromProgID( L"MAPI.Folder",&clsid);

鏍規嵁CLSID寰楀埌ProgID
WINOLEAPI ProgIDFromCLSID( REFCLSID clsid,LPOLESTR * lplpszProgID);
渚嬪鎴戜滑宸茬粡瀹氫箟浜?CLSID_IApplication,涓嬮潰鐨勪唬鐮佸緱鍒癙rogID
LPOLESTR pProgID = 0;
ProgIDFromCLSID( CLSID_IApplication,&pProgID);
...///鍙互浣跨敤pProgID
CoTaskMemFree(pProgID);//涓嶈蹇樿閲婃斁

涓冦丄NSI涓嶶nicode
Unicode縐頒負瀹藉瓧絎﹀瀷瀛椾覆,COM閲屼嬌鐢ㄧ殑閮芥槸Unicode瀛楃涓層?/p>

灝咥NSI杞崲鍒癠nicode
(1)閫氳繃L榪欎釜瀹忔潵瀹炵幇錛屼緥濡? CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)閫氳繃MultiByteToWideChar鍑芥暟瀹炵幇杞崲,渚嬪:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '\0';
(3)閫氳繃A2W瀹忔潵瀹炵幇,渚嬪:
USES_CONVERSION;
CLSIDFromProgID( A2W(szProgID),&clsid);
灝哢nicode杞崲鍒癆NSI
(1)浣跨敤WideCharToMultiByte,渚嬪:
// 鍋囪宸茬粡鏈変簡涓涓猆nicode 涓?wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL );
(2)浣跨敤W2A瀹忔潵瀹炵幇,渚嬪:
USES_CONVERSION;
pTemp=W2A(wszSomeString);
鍏佸叾瀹?/p>

瀵規秷鎭殑澶勭悊涓垜浠粡甯擱渶瑕佸皢WPARAM鎴朙PARAM絳?2浣嶆暟鎹紙DWORD)鍒嗚В鎴愪袱涓?6浣嶆暟鎹紙WORD),渚嬪錛?br>LPARAM lParam;
WORD loValue = LOWORD(lParam);///鍙栦綆16浣?br>WORD hiValue = HIWORD(lParam);///鍙栭珮16浣?/p>


瀵逛簬16浣嶇殑鏁版嵁(WORD)鎴戜滑鍙互鐢ㄥ悓鏍風殑鏂規硶鍒嗚В鎴愰珮浣庝袱涓?浣嶆暟鎹?BYTE),渚嬪:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///鍙栦綆8浣?br>BYTE hiValue = HIBYTE(wValue);///鍙栭珮8浣?/p>


涓や釜16浣嶆暟鎹紙WORD錛夊悎鎴?2浣嶆暟鎹?DWORD,LRESULT,LPARAM,鎴朩PARAM)
LONG MAKELONG( WORD wLow, WORD wHigh );
WPARAM MAKEWPARAM( WORD wLow, WORD wHigh );
LPARAM MAKELPARAM( WORD wLow, WORD wHigh );
LRESULT MAKELRESULT( WORD wLow, WORD wHigh );


涓や釜8浣嶇殑鏁版嵁(BYTE)鍚堟垚16浣嶇殑鏁版嵁(WORD)
WORD MAKEWORD( BYTE bLow, BYTE bHigh );


浠嶳(red),G(green),B(blue)涓夎壊寰楀埌COLORREF綾誨瀷鐨勯鑹插?br>COLORREF RGB( BYTE byRed,BYTE byGreen,BYTE byBlue );
渚嬪COLORREF bkcolor = RGB(0x22,0x98,0x34);


浠嶤OLORREF綾誨瀷鐨勯鑹插煎緱鍒癛GB涓変釜棰滆壊鍊?br>BYTE Red = GetRValue(bkcolor); ///寰楀埌綰㈤鑹?br>BYTE Green = GetGValue(bkcolor); ///寰楀埌緇塊鑹?br>BYTE Blue = GetBValue(bkcolor); ///寰楀埌鍏伴鑹?/p>


涔濄佹敞鎰忎簨欏?br>鍋囧闇瑕佷嬌鐢ㄥ埌ConvertBSTRToString姝ょ被鍑芥暟,闇瑕佸姞涓婂ご鏂囦歡comutil.h,騫跺湪setting涓姞鍏omsupp.lib鎴栬呯洿鎺ュ姞涓?pragma comment( lib, "comsupp.lib" )



]]>
MFC搴旂敤紼嬪簭涓寚閽堢殑浣跨敤(杞?http://m.shnenglu.com/QUIRE-0216/archive/2007/09/14/32198.htmlQUIRE-0216QUIRE-0216Fri, 14 Sep 2007 01:58:00 GMThttp://m.shnenglu.com/QUIRE-0216/archive/2007/09/14/32198.htmlhttp://m.shnenglu.com/QUIRE-0216/comments/32198.htmlhttp://m.shnenglu.com/QUIRE-0216/archive/2007/09/14/32198.html#Feedback0http://m.shnenglu.com/QUIRE-0216/comments/commentRss/32198.htmlhttp://m.shnenglu.com/QUIRE-0216/services/trackbacks/32198.html

MFC搴旂敤紼嬪簭涓寚閽堢殑浣跨敤

1) 鍦╒iew涓幏寰桪oc鎸囬拡
2) 鍦ˋpp涓幏寰桵ainFrame鎸囬拡
3) 鍦╒iew涓幏寰桵ainFrame鎸囬拡
4) 鑾峰緱View錛堝凡寤虹珛錛夋寚閽?/u>
5) 鑾峰緱褰撳墠鏂囨。鎸囬拡
6) 鑾峰緱鐘舵佹爮涓庡伐鍏鋒爮鎸囬拡
7) 鑾峰緱鐘舵佹爮涓庡伐鍏鋒爮鍙橀噺
8) 鍦∕ainframe鑾峰緱鑿滃崟鎸囬拡
9) 鍦ㄤ換浣曠被涓幏寰楀簲鐢ㄧ▼搴忕被
10) 浠庢枃妗g被鍙栧緱瑙嗗浘綾葷殑鎸囬拡(1)
11) 鍦ˋpp涓幏寰楁枃妗fā鏉挎寚閽?/u>
12) 浠庢枃妗fā鏉胯幏寰楁枃妗g被鎸囬拡
13) 鍦ㄦ枃妗g被涓幏寰楁枃妗fā鏉挎寚閽?/u>
14) 浠庢枃妗g被鍙栧緱瑙嗗浘綾葷殑鎸囬拡(2)
15) 浠庝竴涓鍥劇被鍙栧緱鍙︿竴瑙嗗浘綾葷殑鎸囬拡

VC涓紪紼嬪浜庡垰鍒氬紑濮嬪涔犵殑鍚屽錛屾渶澶х殑闅滅鍜岄棶棰樺氨鏄秷鎭満鍒跺拰鎸囬拡鑾峰彇涓庢搷浣溿傚叾瀹炶繖浜涘唴瀹瑰熀鏈笂鏄瘡鏈琕C瀛︿範宸ュ叿涔︿笂蹇呰鐨勫唴瀹癸紝鑰屼笖閫氳繃MSDN寰堝闂閮借兘瑙e喅銆?br>涓嬮潰鏂囧瓧涓昏鏄釜浜哄湪緙栫▼涓寚閽堜嬌鐢ㄧ殑涓浜涗綋浼氾紝璇寸殑涓嶅綋鐨勫湴鏂硅鎸囨銆?br>涓鑸垜浠嬌鐢ㄧ殑妗嗘灦鏄疺C鎻愪緵鐨刉izard鐢熸垚鐨凪FC App Wizard(exe)妗嗘灦錛屾棤璁烘槸澶氭枃妗h繕鏄崟鏂囨。錛岄兘瀛樺湪鎸囬拡鑾峰彇鍜屾搷浣滈棶棰樸?br>涓嬮潰榪欒妭鍐呭涓昏鏄竴鑸殑妗嗘灦錛岀劧鍚庡啀璁插綰跨▼涓殑鎸囬拡浣跨敤銆備嬌鐢ㄥ埌鐨勭被闇瑕佸寘鍚搷搴旂殑澶存枃浠躲傞鍏堜竴鑸幏寰楁湰綾?瑙嗭紝鏂囨。錛屽璇濇閮芥敮鎸?瀹炰緥鎸囬拡this錛岀敤this鐨勭洰鐨勶紝涓昏鍙互閫氳繃綾諱腑鐨勫嚱鏁板悜鍏朵粬綾繪垨鑰呭嚱鏁頒腑鍙戞寚閽堬紝浠ヤ究浜庡湪闈炴湰綾諱腑鎿嶄綔鍜屼嬌鐢ㄦ湰綾諱腑鐨勫姛鑳姐?br>
1錛?鍦╒iew涓幏寰桪oc鎸囬拡
CYouSDIDoc *pDoc=GetDocument();涓涓鍙兘鏈変竴涓枃妗c?/pre>
                         2) 鍦ˋpp涓幏寰桵ainFrame鎸囬拡
CWinApp 涓殑 m_pMainWnd鍙橀噺灝辨槸MainFrame鐨勬寚閽?br>涔熷彲浠ワ細
CMainFrame *pMain =(CMainFrame *)AfxGetMainWnd();
3) 鍦╒iew涓幏寰桵ainFrame鎸囬拡
CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;
4) 鑾峰緱View錛堝凡寤虹珛錛夋寚閽?
CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;
                        CyouView *pView=(CyouView *)pMain->GetActiveView();
5) 鑾峰緱褰撳墠鏂囨。鎸囬拡
CDocument * pCurrentDoc =(CFrameWnd *)m_pMainWnd->GetActiveDocument();
6) 鑾峰緱鐘舵佹爮涓庡伐鍏鋒爮鎸囬拡
CStatusBar * pStatusBar錛?CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
                        CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);
                        
7) 濡傛灉妗嗘灦涓姞鍏ュ伐鍏鋒爮鍜岀姸鎬佹爮鍙橀噺榪樺彲浠ヨ繖鏍?
(CMainFrame *)GetParent()->m_wndToolBar;
                        (CMainFrame *)GetParent()->m_wndStatusBar;
                        
8) 鍦∕ainframe鑾峰緱鑿滃崟鎸囬拡
CMenu *pMenu=m_pMainWnd->GetMenu();
9) 鍦ㄤ換浣曠被涓幏寰楀簲鐢ㄧ▼搴忕被
鐢∕FC鍏ㄥ眬鍑芥暟AfxGetApp()鑾峰緱銆?br>
10) 浠庢枃妗g被鍙栧緱瑙嗗浘綾葷殑鎸囬拡
鎴戞槸浠?a target=_blank>http://download.cqcnc.com/soft/program/article/vc/vc405.html瀛﹀埌鐨勶紝浠庢枃妗h幏寰楄鍥劇被鎸囬拡鐩殑涓鑸負浜嗘帶鍒跺悓涓鏂囨。鐨勫涓鍥劇殑瀹氫綅闂錛屾垜鐨勪綋浼氱壒鍒槸鏂囧瓧澶勭悊CEditView褰撲駭鐢熷涓鍥劇被鏃訛紝榪欎釜鍔熻兘鏄潪甯擱渶瑕佺殑銆?
CDocument綾繪彁渚涗簡涓や釜鍑芥暟鐢ㄤ簬瑙嗗浘綾葷殑瀹氫綅錛?br>GetFirstViewPosition()鍜孏etNextView()
virtual POSITION GetFirstViewPosition() const;
                        virtual CView* GetNextView(POSITION& rPosition) const;
娉ㄦ剰錛欸etNextView()鎷彿涓殑鍙傛暟鐢ㄧ殑鏄紩鐢ㄦ柟寮忥紝鍥犳鎵ц鍚庡煎彲鑳芥敼鍙樸?br>GetFirstViewPosition()鐢ㄤ簬榪斿洖絎竴涓鍥句綅緗紙榪斿洖鐨勫茍闈炶鍥劇被鎸囬拡錛岃屾槸涓涓狿OSITION綾誨瀷鍊鹼級錛孏etNextView()鏈変袱涓姛鑳斤細榪斿洖涓嬩竴涓鍥劇被鐨勬寚閽堜互鍙婄敤寮曠敤璋冪敤鐨勬柟寮忔潵鏀瑰彉浼犲叆鐨凱OSITION綾誨瀷鍙傛暟鐨勫箋傚緢鏄庢樉錛屽湪Test紼嬪簭涓紝鍙湁涓涓鍥劇被錛屽洜姝ゅ彧闇灝嗚繖涓や釜鍑芥暟璋冪敤涓嬈″嵆鍙緱鍒癈TestView鐨勬寚閽堝涓嬶紙闇瀹氫箟涓涓狿OSITION緇撴瀯鍙橀噺鏉ヨ緟鍔╂搷浣滐級錛?
CTestView* pTestView;
                        POSITION pos=GetFirstViewPosition();
                        pTestView=GetNextView(pos);
                        
榪欐牱錛屼究鍙埌浜咰TestView綾葷殑鎸囬拡pTestView.鎵ц瀹屽嚑鍙ュ悗錛屽彉閲弍os=NULL,鍥犱負娌℃湁涓嬩竴涓鍥劇被錛岃嚜鐒朵篃娌℃湁涓嬩竴涓鍥劇被鐨凱OSITION.浣嗘槸榪欏嚑鏉¤鍙ュお綆鍗曪紝涓嶅叿鏈夊お寮虹殑閫氱敤鎬у拰瀹夊叏鐗瑰緛錛涘綋璞″墠闈㈣鐨勯偅鏍鳳紝褰撹鍦ㄥ涓鍥句負涓繑鍥炴煇涓寚瀹氱被鐨勬寚閽堟椂錛屾垜浠渶瑕侀亶鍘嗘墍鏈夎鍥劇被錛岀洿鍒版壘鍒版寚瀹氱被涓烘銆傚垽鏂竴涓被鎸囬拡鎸囧悜鐨勬槸鍚︽煇涓被鐨勫疄渚嬫椂錛屽彲鐢↖sKindOf()鎴愬憳鍑芥暟鏃惰媯鏌ワ紝濡傦細
pView->IsKindOf(RUNTIME_CLASS(CTestView));
鍗沖彲媯鏌View鎵鎸囨槸鍚︽槸CTestView綾匯?br>
鏈変簡浠ヤ笂鍩虹錛屾垜浠凡緇忓彲浠ヤ粠鏂囨。綾誨彇寰椾換浣曠被鐨勬寚閽堛備負浜嗘柟渚匡紝鎴戜滑灝嗗叾浣滀負涓涓枃妗g被鐨勬垚鍛樺嚱鏁幫紝瀹冩湁涓涓弬鏁幫紝琛ㄧず瑕佽幏寰楀摢涓被鐨勬寚閽堛傚疄鐜板涓嬶細
CView* CTestDoc::GetView(CRuntimeClass* pClass)
                        {
                        CView* pView;
                        POSITION pos=GetFirstViewPosition();
                        while(pos!=NULL){
                        pView=GetNextView(pos);
                        if(!pView->IsKindOf(pClass))
                        break;
                        }
                        if(!pView->IsKindOf(pClass)){
                        AfxMessageBox("Connt Locate the View.\r\n http://www.VCKBASE.com");
                        return NULL;
                        }
                        return pView;
                        }

鍏朵腑鐢ㄤ簡涓ゆ瑙嗗浘綾葷殑鎴愬憳鍑芥暟IsKindOf()鏉ュ垽鏂紝鏄洜涓洪鍑簑hile寰幆鏈変笁縐嶅彲鑳斤細

1.pos涓篘ULL錛屽嵆宸茬粡涓嶅瓨鍦ㄤ笅涓涓鍥劇被渚涙搷浣滐紱
2.pView宸茬鍚堣姹傘?br>
1鍜?鍚屾槸婊¤凍銆傝繖鏄洜涓篏etNextView()鐨勫姛鑳芥槸灝嗗綋鍓嶈鍥炬寚閽堟敼鍙樻垚涓涓鍥劇殑浣嶇疆鍚屾椂榪斿洖褰撳墠瑙嗗浘鎸囬拡錛屽洜姝os鏄痯View鐨勪笅涓涓鍥劇被鐨凱OSITION,瀹屽叏鏈夊彲鑳芥棦鏄痯os==NULL鍙堟槸pView絎﹀悎闇瑕併傚綋鎵闇鐨勮鍥炬槸鏈鍚庝竴涓鍥炬槸鏈鍚庝竴涓鍥劇被鏃跺氨濡傚紩銆傚洜姝ら渶閲囩敤涓ゆ鍒ゆ柇銆?br>浣跨敤璇ュ嚱鏁板簲閬靛驚濡備笅鏍煎紡錛堜互鍙栧緱CTestView鎸囬拡涓轟緥錛夛細
CTestView* pTestView=(CTestView*)GetView(RUNTIME_CLASS(CTestView));
RUNTIME_CLASS鏄竴涓畯錛屽彲浠ョ畝鍗曞湴鐞嗚В瀹冪殑浣滅敤錛氬皢綾葷殑鍚嶅瓧杞寲涓篊RuntimeClass涓烘寚閽堛?br>鑷充簬寮哄埗綾誨瀷杞崲涔熸槸涓轟簡瀹夊叏鐗規ц冭檻鐨勶紝鍥犱負浠庡悓涓涓熀綾諱箣闂寸殑鎸囬拡綾誨瀷鏄簰鐩稿吋瀹圭殑銆傝繖縐嶅己鍒剁被鍨嬭漿鎹篃璁稿茍涓嶅繀瑕侊紝浣嗚兘閬垮厤涓浜涘彲鑳藉嚭鐜扮殑楹葷儲銆?br>
3.浠庝竴涓鍥劇被鍙栧緱鍙︿竴瑙嗗浘綾葷殑鎸囬拡 緇煎悎1鍜?錛屽緢瀹規槗寰楀嚭瑙嗗浘綾諱箣闂翠簰鐩歌幏寰楁寚閽堢殑鏂規硶錛氬氨鏄敤鏂囨。綾諱綔涓漿錛屽厛鐢?鐨勬柟娉曞緱鍒版枃妗g被鐨勬寚閽堬紝鍐嶇敤2鐨勬柟娉曪紝浠ユ枃妗g被鐨勮鍥懼畾浣嶅嚱鏁板彇寰楀彟涓涓鍥劇被銆傚悓鏍鳳紝鍙互瀹炵幇鎴愪竴涓嚱鏁幫細
錛堝亣璁捐浠嶤TestAView涓彇寰楁寚鍚戝叾瀹冭鍥劇被鐨勬寚閽堬級
CView* CTestAView::GetView(CRuntimeClass* pClass)
                        {
                        CTestDoc* pDoc=(CTestDoc*)GetDocument();
                        CView* pView;
                        POSITION pos=pDoc->GetFirstViewPosition();
                        while(pos!=NULL){
                        pView=pDoc->GetNextView(pos);
                        if(!pView->IsKindOf(pClass))
                        break;
                        }
                        if(!pView->IsKindOf(pClass)){
                        AfxMessageBox("Connt Locate the View.");
                        return NULL;
                        }
                        return pView;
                        }
榪欎釜鍑芥暟鍜?涓殑GetView()鐩告瘮錛屼竴鏄浜嗙涓鍙ヤ互鍙栧緱鏂囨。綾繪寚閽堬紝浜屾槸鍦℅etFirstViewPosition()鍜孏etNextView()鍓嶅姞涓婁簡鏂囨。綾繪寚閽堬紝浠ヨ〃紺哄畠浠槸鏂囨。綾繪垚鍛樺嚱鏁般?br>鏈変簡姝ゅ嚱鏁幫紱褰撹浠嶤TestAView涓彇寰桟TestBView鐨勬寚閽堟椂錛屽彧闇濡備笅錛?
CTestBView* pTestbView=(CTestView*)GetView(RUNTIME_CLASS(CTestBView));
11錛夊浜庡崟鏂囨。涓篃鍙互鍔犲叆澶氫釜鏂囨。妯℃澘錛屼絾鏄竴鑸殑寮鍙戝氨浣跨敤MDI鏂瑰紡寮鍙戝鏂囨。妯℃澘錛屽叾鏂規硶涓庝笂榪拌鍥劇殑鑾峰彇鏂規硶寰堟帴榪戯紝榪欓噷紼嶅仛瑙i噴錛屽鏋滀笉娓呮錛岃鏌ラ槄MSDN錛岋紙浠ヤ笅鍥涗釜鍐呭錛?1銆?2銆?3銆?4錛夋潵婧愶細http://sanjianxia.myrice.com/vc/vc45.htm錛?br>
鍙互鐢–WinApp::GetFirstDocTemplatePostion鑾峰緱搴旂敤紼嬪簭娉ㄥ唽鐨勭涓涓枃妗fā鏉跨殑浣嶇疆錛?br>鍒╃敤璇ュ兼潵璋冪敤CWinApp::GetNextDocTemplate鍑芥暟錛岃幏寰楃涓涓狢DocTemplate瀵硅薄鎸囬拡銆?
POSITION GetFirstDocTemplate( ) const;
                        CDocTemplate *GetNextDocTemplate( POSITION & pos ) const;
                        
絎簩涓嚱鏁拌繑鍥炵敱pos 鏍囪瘑鐨勬枃妗fā鏉褲侾OSITION鏄疢FC瀹氫箟鐨勪竴涓敤浜庤凱浠f垨瀵硅薄鎸囬拡媯绱㈢殑鍊箋傞氳繃榪欎袱涓嚱鏁幫紝搴旂敤紼嬪簭鍙互閬嶅巻鏁翠釜鏂囨。妯℃澘鍒楄〃銆傚鏋滆媯绱㈢殑鏂囨。妯℃澘鏄ā鏉垮垪琛ㄤ腑鐨勬渶鍚庝竴涓紝鍒檖os鍙傛暟琚疆涓篘ULL銆?br>
12錛変竴涓枃妗fā鏉垮彲浠ユ湁澶氫釜鏂囨。錛屾瘡涓枃妗fā鏉塊兘淇濈暀騫剁淮鎶や簡涓涓墍鏈夊搴旀枃妗g殑鎸囬拡鍒楄〃銆?
鐢–DocTemplate::GetFirstDocPosition鍑芥暟鑾峰緱涓庢枃妗fā鏉跨浉鍏崇殑鏂囨。闆嗗悎涓涓涓枃妗g殑浣嶇疆錛屽茍鐢≒OSITION鍊間綔涓篊DocTemplate::GetNextDoc鐨勫弬鏁版潵閲嶅閬嶅巻涓庢ā鏉跨浉鍏崇殑鏂囨。鍒楄〃銆傚嚱鏁板師褰負錛?
viaual POSITION GetFirstDocPosition( ) const = 0;
                        visual CDocument *GetNextDoc(POSITION & rPos) const = 0;
                        
濡傛灉鍒楄〃涓虹┖錛屽垯rPos琚疆涓篘ULL.

13錛夊湪鏂囨。涓彲浠ヨ皟鐢–Document::GetDocTemplate鑾峰緱鎸囧悜璇ユ枃妗fā鏉跨殑鎸囬拡銆傚嚱鏁板師褰㈠涓嬶細
CDocTemplate * GetDocTemplate ( ) const; 
濡傛灉璇ユ枃妗d笉灞炰簬鏂囨。妯℃澘綆$悊錛屽垯榪斿洖鍊間負NULL銆?

14)涓涓枃妗e彲浠ユ湁澶氫釜瑙嗐傛瘡涓涓枃妗i兘淇濈暀騫剁淮鎶や竴涓墍鏈夌浉鍏寵鐨勫垪琛ㄣ侰Document::AddView灝嗕竴涓榪炴帴鍒版枃妗d笂錛屽皢璇ヨ鍔犲叆鍒版枃妗g浉鑱旂郴鐨勮鐨勫垪琛ㄤ腑錛屽茍灝嗚鐨勬枃妗f寚閽堟寚鍚戣鏂囨。銆傚綋鏈塅ile/New銆丗ile/Open銆乄indows/New鎴朩indow/Split鐨勫懡浠よ屽皢涓涓柊鍒涘緩鐨勮鐨勫璞¤繛鎺ュ埌鏂囨。涓婃椂錛?MFC浼氳嚜鍔ㄨ皟鐢ㄨ鍑芥暟錛屾鏋墮氳繃鏂囨。/瑙嗙殑緇撴瀯灝嗘枃妗e拰瑙嗚仈緋昏搗鏉ャ傚綋鐒訛紝紼嬪簭鍛樹篃鍙互鏍規嵁鑷繁鐨勯渶瑕佽皟鐢ㄨ鍑芥暟銆?
Virtual POSITION GetFirstViewPosition( ) const;
                        Virtual CView * GetNextView( POSITION &rPosition) cosnt;
                        
搴旂敤紼嬪簭鍙互璋冪敤CDocument::GetFirstViewPosition榪斿洖涓庤皟鐢ㄦ枃妗g浉鑱旂郴鐨勮鐨勫垪琛ㄤ腑鐨勭涓涓鐨勪綅緗紝騫惰皟鐢–Document::GetNextView榪斿洖鎸囧畾浣嶇疆鐨勮錛屽茍灝唕Positon鐨勫肩疆涓哄垪琛ㄤ腑涓嬩竴涓鐨凱OSITION鍊箋傚鏋滄壘鍒扮殑瑙嗕負鍒楄〃涓殑鏈鍚庝竴涓錛屽垯灝唕Position緗負NULL.

15)浠庝竴涓鍥劇被鍙栧緱鍙︿竴瑙嗗浘綾葷殑鎸囬拡
榪欎釜搴旂敤鍦ㄥ瑙嗙殑搴旂敤紼嬪簭涓緢澶氳錛屼竴鑸鏋滆嚜宸卞湪涓葷▼搴忔垨鑰呬富妗嗘灦涓仛濂藉彉閲忚鍙鳳紝涔熷彲浠ヨ幏寰楋紝榪樻湁姣旇緝閫氱敤鐨勫氨鏄敤鏂囨。綾諱綔涓漿錛屼互鏂囨。綾葷殑瑙嗗浘閬嶅巻瀹氫綅錛屽彇寰楀彟涓涓鍥劇被銆傝繖涓姛鑳戒粠鏈枃絎?0欏逛腑鍙互寰楀埌銆?br>
榪欎簺璧勬枡澶ч儴鍒嗛兘鏄粠緗戜笂鍜孧SDN涓幏寰楃殑錛屽啓榪欎釜鏂囨。灝辨槸涓轟簡璁╁ぇ瀹朵笉鐢ㄥ啀瀵繪壘錛屽垪鍑烘爣棰橈紝鍙搷浣滄ф洿寮恒?br>


]]>
閫忔槑浣嶅浘鐨勬樉紺烘垜鐨勪唬鐮佸疄鐜?/title><link>http://m.shnenglu.com/QUIRE-0216/archive/2007/08/30/31218.html</link><dc:creator>QUIRE-0216</dc:creator><author>QUIRE-0216</author><pubDate>Thu, 30 Aug 2007 09:05:00 GMT</pubDate><guid>http://m.shnenglu.com/QUIRE-0216/archive/2007/08/30/31218.html</guid><wfw:comment>http://m.shnenglu.com/QUIRE-0216/comments/31218.html</wfw:comment><comments>http://m.shnenglu.com/QUIRE-0216/archive/2007/08/30/31218.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/QUIRE-0216/comments/commentRss/31218.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/QUIRE-0216/services/trackbacks/31218.html</trackback:ping><description><![CDATA[<p><strong>void TransparentBlt(CDC *pDestDC, int nXDest, int nYDest, int nWidth, int nHeight, CBitmap * pBitmap, int nXsrc, int nYsrc, COLORREF clr)<br>{<br> CDC maskDC, ImageDC;<br> maskDC.CreateCompatibleDC(pDestDC);<br> ImageDC.CreateCompatibleDC(pDestDC);</strong></p> <p><strong> CBitmap maskBMP;<br> maskBMP.CreateBitmap(nWidth, nHeight, 1, 1, NULL);//鍒涘緩鍗曡壊鎺╃爜浣嶅浘<br> CBitmap *pOldBMP = ImageDC.SelectObject(pBitmap);<br> CBitmap *maskOldBMP = maskDC.SelectObject(&maskBMP);<br> <br> ImageDC.SetBkColor(clr);// 璁劇疆閫忔槑鑹?br> maskDC.BitBlt(0, 0, nWidth, nHeight, &ImageDC, nXsrc, nYsrc, SRCCOPY);</strong></p> <p><strong> //璁劇疆鑳屾櫙鑹蹭負榛戣壊錛屽墠鏅壊涓虹櫧鑹詫紝灝嗘帺鐮佷綅鍥句笌鍘熶綅鍥劇浉"涓?<br> ImageDC.SetBkColor(RGB(0, 0, 0));<br> ImageDC.SetTextColor(RGB(255, 255, 255));<br> ImageDC.BitBlt(0, 0, nWidth, nHeight, &maskDC, nXsrc, nYsrc, SRCAND);</strong></p> <p><strong> //璁劇疆鑳屾櫙鑹蹭負鐧借壊錛屽墠鏅壊涓洪粦鑹詫紝灝嗘帺鐮佷綅鍥句笌鑳屾櫙榪涜“涓?#8221;榪愮畻<br> pDestDC->SetBkColor(RGB(255, 255, 255));<br> pDestDC->SetTextColor(RGB(0, 0, 0));<br> pDestDC->BitBlt(nXDest, nYDest, nWidth, nHeight, &maskDC, nXsrc, nYsrc, SRCAND);<br> // "鎴?榪愮畻,鐢熸垚鏈緇堟晥鏋?br> pDestDC->BitBlt(nXDest, nYDest, nWidth, nHeight, &ImageDC, nXsrc, nYsrc, SRCPAINT);</strong></p> <p><strong> if (pOldBMP) ImageDC.SelectObject(pOldBMP);<br> ImageDC.DeleteDC();<br> if (maskOldBMP) maskDC.SelectObject(maskOldBMP);<br> maskDC.DeleteDC();<br> if (maskBMP.m_hObject) maskBMP.DeleteObject();<br>}</strong></p> 鎴戝氨涓嶆庝箞瑙i噴浜?濡備笉鐞嗚В,璇風湅鎴戣漿鐨?<strong>閫忔槑浣嶅浘鐨勬樉紺轟腑鐨?浜屻佸疄鐜癟ransparentBlt鍑芥暟)鐨勫師鐞?/strong>),鍏朵粬閮ㄥ垎閮藉氨浠涔堝繀瑕佷簡!鍛靛懙! <img src ="http://m.shnenglu.com/QUIRE-0216/aggbug/31218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/QUIRE-0216/" target="_blank">QUIRE-0216</a> 2007-08-30 17:05 <a href="http://m.shnenglu.com/QUIRE-0216/archive/2007/08/30/31218.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>閫忔槑浣嶅浘鐨勬樉紺?杞?http://m.shnenglu.com/QUIRE-0216/archive/2007/08/30/31212.htmlQUIRE-0216QUIRE-0216Thu, 30 Aug 2007 08:52:00 GMThttp://m.shnenglu.com/QUIRE-0216/archive/2007/08/30/31212.htmlhttp://m.shnenglu.com/QUIRE-0216/comments/31212.htmlhttp://m.shnenglu.com/QUIRE-0216/archive/2007/08/30/31212.html#Feedback1http://m.shnenglu.com/QUIRE-0216/comments/commentRss/31212.htmlhttp://m.shnenglu.com/QUIRE-0216/services/trackbacks/31212.html鍖呭惈閫忔槑鑹茬殑浣嶅浘鐨勭粯鍒舵柟娉曟湁澶氱錛屾渶綆鍗曠殑鏂規硶鏄皟鐢ㄧ幇鎴愮殑鍑芥暟錛歍ransparentBlt,涔熷彲浠ラ氳繃鑷繁鐨勪唬鐮佸疄鐜扮被浼?TransparentBlt鐨勫姛鑳斤紝瀹炵幇榪囩▼涔熸湁涓ょ褰㈠紡錛屼竴縐嶆槸浜嬪厛鍋氫竴寮犳帺鐮佷綅鍥撅紝鍙︿竴縐嶆槸鍔ㄦ佺敓鎴愭帺鐮佷綅鍥俱傛湰鏂囧皢浠嬬粛鍔ㄦ佺敓鎴愭帺鐮佷綅鍥劇粯鍒跺叿鏈夐忔槑鍖哄煙浣嶅浘鐨勬柟娉曘?br>
涓銆乀ransparentBlt 鍑芥暟鐨勪嬌鐢?

TransparentBlt 鍑芥暟鍦╓indows98/Windows2000浠ヤ笂鐗堟湰榪愯錛岀郴緇熶腑闇瑕佸寘鍚?Msimg32.dll錛屼嬌鐢ㄦ椂鍙互閾炬帴 Msimg32.lib銆?br>Windows98涓嬬殑TransparentBlt浼氫駭鐢熻祫婧愭硠婕忥紝鎵浠ヤ笉寤鴻鍦╓IN98涓嬩嬌鐢ㄨ鍑芥暟銆?br>TransparentBlt鍑芥暟鍘熷瀷濡備笅:

BOOL TransparentBlt(
HDC hdcDest,      // 鐩爣DC
int nXOriginDest,   // 鐩爣X鍋忕Щ
int nYOriginDest,   // 鐩爣Y鍋忕Щ
int nWidthDest,     // 鐩爣瀹藉害
int hHeightDest,    // 鐩爣楂樺害
HDC hdcSrc,         // 婧怐C
int nXOriginSrc,    // 婧怷璧風偣
int nYOriginSrc,    // 婧怸璧風偣
int nWidthSrc,      // 婧愬搴?
int nHeightSrc,     // 婧愰珮搴?
UINT crTransparent  // 閫忔槑鑹?COLORREF綾誨瀷
);
浣跨敤紺轟緥:
CBitmap FootballBMP;
FootballBMP.LoadBitmap(IDB_FOOTBALLBMP);
CDC ImageDC;
ImageDC.CreateCompatibleDC(pDC);
CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP);
TransparentBlt(pDC->m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218, 199, RGB(0,0,0xff));
ImageDC.SelectObject(pOldImageBMP);
浜屻佸疄鐜癟ransparentBlt鍑芥暟

涓轟簡鐞嗚В鍏鋒湁閫忔槑鑹蹭綅鍥劇殑緇樺埗榪囩▼錛屾垜浠潵浜叉墜寤虹珛涓涓叿鏈夊悓TransparentBlt鍔熻兘涓鑷寸殑瀹為獙鍑芥暟錛岀О涔嬩負TransparentBlt2銆?br>
瀹為獙绱犳潗錛氭湁涓ゅ紶浣嶅浘錛歜k.bmp鏄儗鏅綅鍥撅紝football.bmp鍖呭惈閫忔槑鍖哄煙錛岄忔槑鑹蹭負钃濊壊RGB(0,0,0xff)
瀹為獙鐩殑錛氫互bk.bmp涓鴻儗鏅紝灝唂ootball.bmp緇樺埗鍒拌儗鏅腑錛屽艦鎴愬涓嬬殑鏈緇堟晥鏋滃浘銆?br>

 



2.1 閫忔槑浣嶅浘緇樺埗鍘熺悊
鍋囪football.bmp ->杞藉叆 HBITMAP hImageBMP -> 閫夊叆 HDC hImageDC

2.1.1 鐢熸垚瓚崇悆鐨勫崟鑹叉帺鐮佷綅鍥撅紝閫忔槑鍖哄煙涓虹櫧鑹詫紙鍏?錛夛紝闈為忔槑鍖哄煙涓洪粦鑹詫紙鍏?)
HBITMAP hMaskBMP = CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL); // 寤虹珛鍗曡壊浣嶅浘
SetBkColor(hImageDC, RGB(0,0,0xff)); // 璁劇疆鑳屾櫙鑹蹭負钃濊壊
BitBlt(hMaskDC, 0, 0, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCCOPY); // 鎷瘋礉鍒癶MaskDC
榪欐牱瓚崇悆浣嶅浘涓摑鑹插尯鍩熷湪鎺╃爜浣嶅浘涓垚浜嗙櫧鑹詫紝鍏跺畠鍖哄煙涓洪粦鑹詫紝姝ゆ椂hMaskBMP 濡備笅鍥?
(鍥句竴)

2.1.2 璁劇疆鑳屾櫙鑹蹭負榛戣壊錛屽墠鏅壊涓虹櫧鑹詫紝灝嗘帺鐮佷綅鍥?鍥句竴)涓庤凍鐞冧綅鍥劇浉"涓?
SetBkColor(hImageDC, RGB(0,0,0));
SetTextColor(hImageDC, RGB(255,255,255));
BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
榪欐牱錛屾帺鐮佷綅鍥句腑鑳屾櫙鑹詫紙榛戣壊錛夌殑鍖哄煙鍦╤ImageBMP涓淇濈暀錛屽墠鏅壊錛堢櫧鑹詫級鐨勯儴鍒嗗彉涓洪粦鑹層?姝ゆ椂hImageBMP 濡備笅鍥?
(鍥句簩)

2.1.3 璁劇疆鑳屾櫙鑹蹭負鐧借壊錛屽墠鏅壊涓洪粦鑹詫紝灝嗘帺鐮佷綅鍥?鍥句竴)涓庤儗鏅繘琛?#8220;涓?#8221;榪愮畻
SetBkColor(hdcDest,RGB(255,255,255));
SetTextColor(hdcDest,RGB(0,0,0));
BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
鎺╃爜涓櫧鑹插尯鍩燂紙鏁版嵁涓?鐩?#8220;涓?#8221;緇撴灉涓嶅彉錛変嬌鑳屾櫙淇濇寔涓嶅彉錛岄粦鑹插尯鍩熷彉鎴愰粦鑹詫紝姝ゆ椂鑳屾櫙鏄劇ず濡備笅:
(鍥句笁)

2.1.4 灝唄ImageBMP(鍥句簩)涓庤儗鏅?鍥句笁)榪涜“鎴?#8221;榪愮畻
BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCPAINT);
榪欐牱灝卞皢瓚崇悆緇樺埗鍒拌儗鏅笂浜嗐?br>
2.2 TransparentBlt2鍑芥暟鍏ㄩ儴瀹炵幇浠g爜
void TransparentBlt2( HDC hdcDest,      // 鐩爣DC
int nXOriginDest,   // 鐩爣X鍋忕Щ
int nYOriginDest,   // 鐩爣Y鍋忕Щ
int nWidthDest,     // 鐩爣瀹藉害
int nHeightDest,    // 鐩爣楂樺害
HDC hdcSrc,         // 婧怐C
int nXOriginSrc,    // 婧怷璧風偣
int nYOriginSrc,    // 婧怸璧風偣
int nWidthSrc,      // 婧愬搴?
int nHeightSrc,     // 婧愰珮搴?
UINT crTransparent  // 閫忔槑鑹?COLORREF綾誨瀷
)
{
HBITMAP hOldImageBMP, hImageBMP = CreateCompatibleBitmap(hdcDest, nWidthDest, nHeightDest);	// 鍒涘緩鍏煎浣嶅浘
HBITMAP hOldMaskBMP, hMaskBMP = CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL);			// 鍒涘緩鍗曡壊鎺╃爜浣嶅浘
HDC		hImageDC = CreateCompatibleDC(hdcDest);
HDC		hMaskDC = CreateCompatibleDC(hdcDest);
hOldImageBMP = (HBITMAP)SelectObject(hImageDC, hImageBMP);
hOldMaskBMP = (HBITMAP)SelectObject(hMaskDC, hMaskBMP);
// 灝嗘簮DC涓殑浣嶅浘鎷瘋礉鍒頒復鏃禗C涓?
if (nWidthDest == nWidthSrc && nHeightDest == nHeightSrc)
BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, SRCCOPY);
else
StretchBlt(hImageDC, 0, 0, nWidthDest, nHeightDest,
hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY);
// 璁劇疆閫忔槑鑹?
SetBkColor(hImageDC, crTransparent);
// 鐢熸垚閫忔槑鍖哄煙涓虹櫧鑹詫紝鍏跺畠鍖哄煙涓洪粦鑹茬殑鎺╃爜浣嶅浘
BitBlt(hMaskDC, 0, 0, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCCOPY);
// 鐢熸垚閫忔槑鍖哄煙涓洪粦鑹詫紝鍏跺畠鍖哄煙淇濇寔涓嶅彉鐨勪綅鍥?
SetBkColor(hImageDC, RGB(0,0,0));
SetTextColor(hImageDC, RGB(255,255,255));
BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
// 閫忔槑閮ㄥ垎淇濇寔灞忓箷涓嶅彉錛屽叾瀹冮儴鍒嗗彉鎴愰粦鑹?
SetBkColor(hdcDest,RGB(255,255,255));
SetTextColor(hdcDest,RGB(0,0,0));
BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
// "鎴?榪愮畻,鐢熸垚鏈緇堟晥鏋?
BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCPAINT);
// 娓呯悊銆佹仮澶?
SelectObject(hImageDC, hOldImageBMP);
DeleteDC(hImageDC);
SelectObject(hMaskDC, hOldMaskBMP);
DeleteDC(hMaskDC);
DeleteObject(hImageBMP);
DeleteObject(hMaskBMP);
}
2.3 TransparentBlt鐨勫彟澶栦竴涓増鏈?TransparentBltU

TransparentBltU鏄疌hristian Graus 鍦╓inDEV鍙戣〃鐨勪竴涓嚱鏁幫紝鍔熻兘涓嶵ransparentBlt涓鑷達紝浠ヤ笅鏄叏閮ㄥ疄鐜頒唬鐮?
bool TransparentBltU(
HDC dcDest,         // handle to Dest DC
int nXOriginDest,   // x-coord of destination upper-left corner
int nYOriginDest,   // y-coord of destination upper-left corner
int nWidthDest,     // width of destination rectangle
int nHeightDest,    // height of destination rectangle
HDC dcSrc,          // handle to source DC
int nXOriginSrc,    // x-coord of source upper-left corner
int nYOriginSrc,    // y-coord of source upper-left corner
int nWidthSrc,      // width of source rectangle
int nHeightSrc,     // height of source rectangle
UINT crTransparent  // color to make transparent
)
{
if (nWidthDest < 1) return false;
if (nWidthSrc < 1) return false;
if (nHeightDest < 1) return false;
if (nHeightSrc < 1) return false;
HDC dc = CreateCompatibleDC(NULL);
HBITMAP bitmap = CreateBitmap(nWidthSrc, nHeightSrc, 1, GetDeviceCaps(dc,
BITSPIXEL), NULL);
if (bitmap == NULL)
{
DeleteDC(dc);
return false;
}
HBITMAP oldBitmap = (HBITMAP)SelectObject(dc, bitmap);
if (!BitBlt(dc, 0, 0, nWidthSrc, nHeightSrc, dcSrc, nXOriginSrc,
nYOriginSrc, SRCCOPY))
{
SelectObject(dc, oldBitmap);
DeleteObject(bitmap);
DeleteDC(dc);
return false;
}
HDC maskDC = CreateCompatibleDC(NULL);
HBITMAP maskBitmap = CreateBitmap(nWidthSrc, nHeightSrc, 1, 1, NULL);
if (maskBitmap == NULL)
{
SelectObject(dc, oldBitmap);
DeleteObject(bitmap);
DeleteDC(dc);
DeleteDC(maskDC);
return false;
}
HBITMAP oldMask =  (HBITMAP)SelectObject(maskDC, maskBitmap);
SetBkColor(maskDC, RGB(0,0,0));
SetTextColor(maskDC, RGB(255,255,255));
if (!BitBlt(maskDC, 0,0,nWidthSrc,nHeightSrc,NULL,0,0,BLACKNESS))
{
SelectObject(maskDC, oldMask);
DeleteObject(maskBitmap);
DeleteDC(maskDC);
SelectObject(dc, oldBitmap);
DeleteObject(bitmap);
DeleteDC(dc);
return false;
}
SetBkColor(dc, crTransparent);
BitBlt(maskDC, 0,0,nWidthSrc,nHeightSrc,dc,0,0,SRCINVERT);
SetBkColor(dc, RGB(0,0,0));
SetTextColor(dc, RGB(255,255,255));
BitBlt(dc, 0,0,nWidthSrc,nHeightSrc,maskDC,0,0,SRCAND);
HDC newMaskDC = CreateCompatibleDC(NULL);
HBITMAP newMask;
newMask = CreateBitmap(nWidthDest, nHeightDest, 1,
GetDeviceCaps(newMaskDC, BITSPIXEL), NULL);
if (newMask == NULL)
{
SelectObject(dc, oldBitmap);
DeleteDC(dc);
SelectObject(maskDC, oldMask);
DeleteDC(maskDC);
DeleteDC(newMaskDC);
DeleteObject(bitmap);
DeleteObject(maskBitmap);
return false;
}
SetStretchBltMode(newMaskDC, COLORONCOLOR);
HBITMAP oldNewMask = (HBITMAP) SelectObject(newMaskDC, newMask);
StretchBlt(newMaskDC, 0, 0, nWidthDest, nHeightDest, maskDC, 0, 0,
nWidthSrc, nHeightSrc, SRCCOPY);
SelectObject(maskDC, oldMask);
DeleteDC(maskDC);
DeleteObject(maskBitmap);
HDC newImageDC = CreateCompatibleDC(NULL);
HBITMAP newImage = CreateBitmap(nWidthDest, nHeightDest, 1,
GetDeviceCaps(newMaskDC, BITSPIXEL), NULL);
if (newImage == NULL)
{
SelectObject(dc, oldBitmap);
DeleteDC(dc);
DeleteDC(newMaskDC);
DeleteObject(bitmap);
return false;
}
HBITMAP oldNewImage = (HBITMAP)SelectObject(newImageDC, newImage);
StretchBlt(newImageDC, 0, 0, nWidthDest, nHeightDest, dc, 0, 0, nWidthSrc,
nHeightSrc, SRCCOPY);
SelectObject(dc, oldBitmap);
DeleteDC(dc);
DeleteObject(bitmap);
BitBlt( dcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest,
newMaskDC, 0, 0, SRCAND);
BitBlt( dcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest,
newImageDC, 0, 0, SRCPAINT);
SelectObject(newImageDC, oldNewImage);
DeleteDC(newImageDC);
SelectObject(newMaskDC, oldNewMask);
DeleteDC(newMaskDC);
DeleteObject(newImage);
DeleteObject(newMask);
return true;
}

璇存槑錛氭湰鏂囨彁渚涚殑TransparentBlt2鍑芥暟鏃ㄥ湪璇存槑閫忔槑浣嶅浘鐨勬樉紺哄師鐞嗭紝鍦╓indows2000浠ヤ笂鐜瀹為檯榪愮敤涓緩璁嬌鐢ㄧ幇鎴愮殑TransparentBlt鍑芥暟鏉ョ粯鍒墮忔槑浣嶅浘銆?

]]>
鐢ㄥ璇濇鍒涘緩CDialogBar媧劇敓鐨勭被http://m.shnenglu.com/QUIRE-0216/archive/2007/08/24/30771.htmlQUIRE-0216QUIRE-0216Fri, 24 Aug 2007 09:17:00 GMThttp://m.shnenglu.com/QUIRE-0216/archive/2007/08/24/30771.htmlhttp://m.shnenglu.com/QUIRE-0216/comments/30771.htmlhttp://m.shnenglu.com/QUIRE-0216/archive/2007/08/24/30771.html#Feedback0http://m.shnenglu.com/QUIRE-0216/comments/commentRss/30771.htmlhttp://m.shnenglu.com/QUIRE-0216/services/trackbacks/30771.html  涓銆?/span>鍒涘緩DialogBar鐨勬淳鐢熺被

棣栧厛錛屽垱寤哄璇濇璧勬簮錛氬湪瀵硅瘽妗嗚祫婧愮紪杈戝櫒鍐呯敓鎴愪竴涓?/span>Dialog璧勬簮錛屽茍灝嗗叾椋庢牸錛?/span>Style錛夊睘鎬у繀欏昏緗負Child錛屼笉鑳借緗負Overlapped鎴?/span>Popup錛屽惁鍒欒繍琛岃偗瀹氬嚭閿欙紱鑷充簬杈圭晫灞炴у垯闅忕敤鎴瘋嚜宸卞枩嬈紝涓鑸兘鏄夋嫨None銆傚叾浣欏睘鎬т篃闅忕敤鎴烽夋嫨錛屼竴鑸病鏈夌壒孌婅姹傝繕鏄夋嫨榛樿鐨勫ソ銆?/span>

鍏舵錛屽垱寤哄熀浜?/span>CDialog鐨勬淳鐢熺被錛氭墦寮ClassWizard錛屼負浠ヤ笂鍒涘緩鐨勮祫婧愭坊鍔犱竴涓互CDialog涓哄熀綾葷殑媧劇敓綾伙紙鍥犱負ClassWizard娌℃湁灝?/span>CDialogBar鍒楀湪鍩虹被鐩綍娓呭崟涓紝鎵浠ョ敤鎴峰彧鑳藉厛浠?/span>CDialog綾繪淳鐢燂級銆?/span>

鍐嶆錛屼慨鏀規淳鐢熺被浠?/span>CDialogBar涓哄熀綾伙細閫氬父闇瑕佹墜宸ヤ慨鏀瑰嚑澶勪唬鐮侊紝鍦ㄦ湰渚嬩腑媧劇敓綾諱互CDataStatus鍛藉悕銆傦紙娉細浠ュ悗璁茶В涓嚒鏄墜宸ユ敼鍔ㄩ兘鏄互鐏拌儗鏅樉紺猴級

1銆?/span> 鍦ㄥご鏂囦歡涓慨鏀圭戶鎵垮叧緋?/span>

灝?/span>class CDataStatus : public CDialog 鏀逛負class CDataStatus : public CDialogBar

2銆?/span> 鍦ㄤ唬鐮佹枃浠朵腑淇鏋勯犲嚱鏁扮戶鎵垮叧緋?/span>

灝?/span>CDataStatus::CDataStatus(CWnd* pParent /*=NULL*/)

: CDialog(CDataStatus::IDD, pParent)

{

    //{{AFX_DATA_INIT(CDataStatus)

           // NOTE: the ClassWizard will add member initialization here

    //}}AFX_DATA_INIT

}

鏀逛負

CDataStatus::CDataStatus(CWnd* pParent /*=NULL*/)

{

    //{{AFX_DATA_INIT(CDataStatus)

           // NOTE: the ClassWizard will add member initialization here

    //}}AFX_DATA_INIT

}

3銆?/span> 灝?/span>DDX緇戝畾鍑芥暟涓殑緇ф壙鍏崇郴鍘繪帀

鍗沖皢void CDataStatus::DoDataExchange(CDataExchange* pDX)

{

    CDialog::DoDataExchange(pDX);

    //{{AFX_DATA_MAP(CCurrentCheckDlg)

    ………..

    //}}AFX_DATA_MAP

}

鏀逛負

void CDataStatus::DoDataExchange(CDataExchange* pDX)

{

    //{{AFX_DATA_MAP(CCurrentCheckDlg)

    ………….

    //}}AFX_DATA_MAP

}

4銆?/span> 閲嶆柊鍒濆鍖栧嚱鏁幫紙榪欎釜鐩稿綋閲嶈錛屽鏋滀笉榪欎箞鍋氱殑璇濓紝DDX鍑芥暟褰㈠悓铏氳錛屽綋鐒剁敤鎴風殑宸ュ叿鏉″鏋滄病鏈夌敤鍒?/span>DDX鐨勮瘽褰撶劧鍙互涓嶅姞榪欐浠g爜錛夛細

棣栧厛鍦?/span>ClassWizard鐨?/span>MessageMap涓娑堟伅璇?/span>CDataStatus綾葷殑WM_INITDIALOG娑堟伅娣誨姞澶勭悊鍑芥暟榛樿鍚嶄負OnInitDialog銆?/span>

鍏舵鎵嬪伐淇敼浠g爜濡備笅錛?/span>

1銆?/span>             娣誨姞娑堟伅鏄犲皠鍑芥暟銆傜敱浜庡璇濇褰㈠紡鐨勫垵濮嬪寲鍑芥暟娑堟伅騫舵湭鍔犺澆鍒版秷鎭槧灝勫唴錛屼負姝ゆ垜浠渶瑕佹墜宸ユ坊鍔狅紝瑕佷笉鐒朵唬鐮佹棤娉曟嫤鎴宸ュ叿鏉$殑鍒濆鍖栨秷鎭紝褰㈠紡濡備笅錛?/span>

灝?/span>BEGIN_MESSAGE_MAP(CDataStatus, CDialogBar)

       //{{AFX_MSG_MAP(CDataStatus)

       .......

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

鏀逛負錛?/span>

BEGIN_MESSAGE_MAP(CDataStatus, CDialogBar)

       //{{AFX_MSG_MAP(CDataStatus)

       .......

       ON_MESSAGE(WM_INITDIALOG,OnInitDialog)

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

2銆?/span>             淇敼OnInitDialog鍑芥暟錛屾鍑芥暟騫舵湭浼犻掑弬鏁幫紝浣嗘槸鍦ㄨ繖閲屾垜浠渶瑕佽瀹冧紶閫掑弬鏁幫紝浠g爜濡備笅淇敼錛堝綋鐒跺ご鏂囦歡涓紝瀵瑰0鏄庝篃瑕佸仛淇敼錛屽湪榪欓噷灝變笉浣滆禈榪頒簡錛?/span>

灝?/span>BOOL CDataStatus::OnInitDialog()

{

       CDialogBar::OnInitDialog();

   

       // TODO: Add extra initialization here

       return TRUE; // return TRUE unless you set the focus to a control

              // EXCEPTION: OCX Property Pages should return FALSE

}

鏀逛負錛?/span>

BOOL CDataStatus::OnInitDialog(UINT wParam,LONG lParam)

{

       //CDialogBar::OnInitDialog();

        

       // TODO: Add extra initialization here

       BOOL bRet = HandleInitDialog(wParam,lParam);

       if (!UpdateData(FALSE))

       {

              TRACE("InitCDataStatus Failed錛?/span>");

       }

       return TRUE; // return TRUE unless you set the focus to a control

                     // EXCEPTION: OCX Property Pages should return FALSE

}

 

浜屻?/span>鍦ㄦ鏋剁被涓疄鐜拌媧劇敓綾葷殑瀵硅薄鍖?/span>

棣栧厛錛屽湪妗嗘灦綾葷殑澶存枃浠跺唴澹版槑瀹炰緥瀵硅薄錛屾湰渚嬪疄渚嬪寲錛?/span>CDataStatus    m_wndDataStatus;褰撶劧澶存枃浠朵腑涓嶅彲閬垮厤瑕佸寘鍚柊媧劇敓綾葷殑澶存枃浠躲?/span>

鍏舵錛屽湪妗嗘灦綾葷殑OnCreate鍑芥暟鍐呭垱寤哄璞″茍灝嗗璞$粦瀹氬璇濇璧勬簮銆傚艦寮忎笌鍒涘緩ToolBar鍘熺悊涓鏍鳳紝鏈緥瀹炰緥濡備笅錛?/span>

if (!m_wndDataStatus.Create(this,IDD_DATASTATUS,WS_VISIBLE|WS_CHILD

|CBRS_SIZE_DYNAMIC|CBRS_BOTTOM,IDD_DATASTATUS))

      {

             TRACE0("Failed to create CDataStatus bar!");

             return -1;

      }

鍐嶆錛屾渶涓哄叧閿殑涓鐐瑰氨鏄噸鍐欐鏋剁被鐨?/span>OnCmdMsg铏氬嚱鏁般傚鏋滀笉閲嶅啓璇ュ嚱鏁幫紝閭d箞涓嶅厜DDX鍔熻兘鏃犳硶瀹炵幇錛岃繛鏈鍩烘湰鐨?/span>OnCommand浜嬩歡閮芥棤娉曞疄鐜般傝屼笖榪樺緱鎵嬪伐娣誨姞浠g爜錛屽艦寮忓涓嬶細

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra,

AFX_CMDHANDLERINFO* pHandlerInfo)

{

      // TODO: Add your specialized code here and/or call the base class

      return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

}

鏀逛負錛?/span>

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)

{

      // TODO: Add your specialized code here and/or call the base class

      if (m_wndDataStatus.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))

             return    TRUE;

      return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

}

涓夈?/span>鍦?/span>CReBar涓婃坊鍔犺瀹炰緥鍖栧璞?/span>

鍏跺疄榪欎竴姝ュ掓槸鐩稿綋綆鍗曪紝鍙槸鑷繁浠ュ墠娌$敤榪囪繖涓被錛屾墍浠ュ湪榪欓噷涔熼『渚跨敤浜嗕竴涓嬨?/span>

棣栧厛錛屽湪妗嗘灦綾葷殑澶存枃浠朵腑鐢?/span>CRebar澹版槑涓涓璞★紝濡?/span>CReBar   m_wndReBar;

鍏舵錛屽湪妗嗘灦綾葷殑浠g爜鏂囦歡涓殑OnCreat鍑芥暟浣撳唴錛岀敓鎴愬璞★紝浠g爜濡備笅錛?/span>

if (!m_wndReBar.Create(this,RBS_BANDBORDERS,WS_CHILD |

WS_VISIBLE| CBRS_BOTTOM|WS_CLIPSIBLINGS|WS_CLIPCHILDREN))

      {

             TRACE0("Failed to create Rebar \n");

             return -1;

      }

鍐嶆錛屽氨鏄皢鎵瑕佹坊鍔犵殑toolbar浠ュ強鏂扮敓鎴愮殑CDataStatus瀵硅薄m_wndDataStatus鍔犺繘Rebar鐨勫璞?/span>m_wndReBar涓紝浠g爜濡備笅錛?/span>

m_wndReBar.AddBar(&m_wndDataStatus,NULL,NULL,

RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP);



]]>
久久无码人妻一区二区三区午夜| 狠狠色丁香婷婷久久综合不卡| 四虎亚洲国产成人久久精品| 亚洲人成电影网站久久| 人人狠狠综合久久88成人| a级毛片无码兔费真人久久| 2020久久精品亚洲热综合一本| 久久精品国产男包| 国产国产成人久久精品| 伊人久久久AV老熟妇色| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久久无码精品午夜| 欧美亚洲国产精品久久高清| 青青青青久久精品国产 | 久久久久久久综合综合狠狠| 久久久噜噜噜久久熟女AA片| 亚洲国产成人久久精品99| 999久久久无码国产精品| 狠狠色婷婷久久一区二区| 久久www免费人成精品香蕉| 99精品国产在热久久无毒不卡| 久久精品中文无码资源站| 久久综合五月丁香久久激情| 久久99精品国产麻豆不卡| 国内精品久久久久影院免费| 亚洲综合精品香蕉久久网| 四虎影视久久久免费观看| 久久亚洲国产精品五月天婷| 国产成人久久久精品二区三区| 国产韩国精品一区二区三区久久| 久久亚洲AV成人出白浆无码国产| 久久午夜福利无码1000合集| 思思久久99热只有频精品66| 久久综合亚洲色一区二区三区| 久久久国产亚洲精品| 久久亚洲AV无码精品色午夜麻豆| 热RE99久久精品国产66热| 亚洲国产综合久久天堂| 久久99精品久久久大学生| 久久99国产综合精品| 热re99久久精品国产99热|