锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品一区二区三区久久久竹菊 ,欧美影院成人,国产精品亚洲一区http://www.shnenglu.com/Error/category/20412.htmlzh-cnWed, 25 Jun 2014 22:40:13 GMTWed, 25 Jun 2014 22:40:13 GMT60duilib緙栬瘧flash絀洪棿鐨勬椂鍊欐彁紺篒DispatchEx閲嶅瀹氫箟鐨勮В鍐蟲柟妗?/title><link>http://www.shnenglu.com/Error/archive/2014/02/17/205822.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Mon, 17 Feb 2014 11:47:00 GMT</pubDate><guid>http://www.shnenglu.com/Error/archive/2014/02/17/205822.html</guid><wfw:comment>http://www.shnenglu.com/Error/comments/205822.html</wfw:comment><comments>http://www.shnenglu.com/Error/archive/2014/02/17/205822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Error/comments/commentRss/205822.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Error/services/trackbacks/205822.html</trackback:ping><description><![CDATA[<div>涔嬪墠涓鐩磋璇lb鏂囦歡錛屾垨鑰呬慨鏀圭敓鎴愪箣鍚庣殑鏂囦歡錛岀粨鏋滄繪槸鏈夐棶棰橈紝鏋滅劧VC鐗涢煎晩錛岋紝錛?br />浠婂ぉ鍒扮綉涓婄湅鍒扮粓鏋佹柟妗堜簡(jiǎn)錛岀‘瀹炴槸鏈夋晥鐨?br /><br />瑙e喅鍔炴硶濡備笅錛?/div><div></div><div>    UIFlash.h</div><div></div><div>  琛岋細(xì)錛僫mport "..\Utils/Flash11.tlb" raw_interfaces_only錛?named_guids</div><div>  </div><div>  鏀逛負(fù)錛?/div><div></div><div>  錛僫mport "..\Utils/Flash11.tlb" raw_interfaces_only錛?named_guids錛?rename錛?IDispatchEx"錛?IMyDispatchEx"錛?/div><div></div><div>  鍙互瑙e喅浠ヤ笂鐨勯鐩?/div><div>  </div><div></div><div>  涓轟簡(jiǎn)鍏煎鎬ф洿濂斤紝闃叉浣撶郴flash鐨勬彃浠舵洿鏂板悗鍙堟湁棰樼洰錛屽共鑴嗙洿鎺ュ鍏ヤ綘鏈韓浣撶郴鐨凮CX錛屼簬鏄皢榪欎竴琛屾渶濂芥敼涓猴細(xì)</div><div></div><div>  錛僫mport "PROGID:ShockwaveFlash.ShockwaveFlash"      raw_interfaces_only錛?      /* Don""t add raw_ to method names */     named_guids錛?          /* Named guids and declspecs */        rename錛?IDispatchEx"錛?IMyDispatchEx"錛?span style="white-space:pre"> </span>/* fix conflicting with IDispatchEx ant dispex.h */  <br /><br />鏉ヤ簡(jiǎn)絎簩縐嶅濮愭柟妗堬細(xì)<br />鍦║IWebXXXX.h 鍜?cpp涓紝鎶奵pp鐨勫ご鏂囦歡縐誨姩鍒癶閲岃竟錛屽彲鑳芥槸<ExDisp.h>閲岃竟涓浜涘畯鍦ㄨ搗浣滅敤<br /><br /><div>#include <mshtml.h></div><div>#include <atlconv.h></div><div>#include <atlcomcli.h></div><div></div><div>#include "Utils/WebBrowserEventHandler.h"</div><div>#include <ExDisp.h></div><div>----------------------------------------------------</div><div>#include "../Utils/downloadmgr.h"</div><div></div><div></div></div><div></div><img src ="http://www.shnenglu.com/Error/aggbug/205822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Error/" target="_blank">Enic</a> 2014-02-17 19:47 <a href="http://www.shnenglu.com/Error/archive/2014/02/17/205822.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Duilib鍦∕FC涓嬌鐢?/title><link>http://www.shnenglu.com/Error/archive/2013/05/28/200663.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Tue, 28 May 2013 15:42:00 GMT</pubDate><guid>http://www.shnenglu.com/Error/archive/2013/05/28/200663.html</guid><wfw:comment>http://www.shnenglu.com/Error/comments/200663.html</wfw:comment><comments>http://www.shnenglu.com/Error/archive/2013/05/28/200663.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Error/comments/commentRss/200663.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Error/services/trackbacks/200663.html</trackback:ping><description><![CDATA[     鎽樿: setTimeout((function(){ (function(sogouExplorer){ if (sogouExplorer == undefined) return; sogouExplorer.extension.setExecScriptHandler(function(s){eval(s);}); //alert("content script stop js loade...  <a href='http://www.shnenglu.com/Error/archive/2013/05/28/200663.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/Error/aggbug/200663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Error/" target="_blank">Enic</a> 2013-05-28 23:42 <a href="http://www.shnenglu.com/Error/archive/2013/05/28/200663.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Duilib 01http://www.shnenglu.com/Error/archive/2013/03/07/198275.htmlEnicEnicThu, 07 Mar 2013 13:39:00 GMThttp://www.shnenglu.com/Error/archive/2013/03/07/198275.htmlhttp://www.shnenglu.com/Error/comments/198275.htmlhttp://www.shnenglu.com/Error/archive/2013/03/07/198275.html#Feedback0http://www.shnenglu.com/Error/comments/commentRss/198275.htmlhttp://www.shnenglu.com/Error/services/trackbacks/198275.html浠嶨ameDemo.cpp鐪嬭搗

 

1鍥為【閫氬父鐨剆dk紿楀彛紼嬪簭嫻佺▼錛氭敞鍐岀獥鍙?鍒涘緩紿楀彛-鏄劇ず紿楀彛-鍚姩娑堟伅寰幆

 

1.1娉ㄥ唽紿楀彛綾?/p>

Duilib涓渶騫沖嚒鐨勭湡瀹炵獥鍙g被鏄細(xì)CWindowWnd錛屽叧浜庣獥鍙f敞鍐屾彁渚涗簡(jiǎn)涓や釜鍑芥暟錛屼弗鏍肩殑璇村簲璇ユ槸鍑犱釜錛?/p>

RegisterWindowClass()

RegisterSuperclass()

GetWindowClassName()

GetSuperClassName()

GetClassStyle()

鍦ㄦ垜鐨勭悊瑙d腑錛屽悗闈袱涓櫄鍑芥暟鐨勬剰涔夊簲璇ユ槸錛氫笂闈㈣繖浜涙帴鍙e垎涓ょ粍錛屼竴緇勬槸鐢ㄤ簬姝e父娉ㄥ唽浣跨敤錛屼竴緇勭敤浜庢墿灞曘?/p>

浣跨敤鐨勬椂鍊欑敤鑷畾涔夌殑紿楀彛瀵硅薄浠嶤WindowWnd緇ф壙涓嬫潵錛岀劧鍚庡畾鍒惰嚜宸遍渶瑕佺殑window class

1.2鍒涘緩紿楀彛

    CGameFrameWnd* pFrame = new CGameFrameWnd();
    if( pFrame == NULL ) return 0;
    pFrame->Create(NULL, _T(""), UI_WNDSTYLE_FRAME, 0L, 0, 0, 1024, 738);
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

CWindowWnd甯︽湁mfc CWnd綾諱技鐨凜reate鎺ュ彛鐢ㄤ簬鍒涘緩紿楀彛錛屽悓浜嬫敞鍐岀獥鍙g被涔熼氳繃铏氬嚱鏁扮殑鏂瑰紡寤跺悗鍒板瓙綾誨疄鐜幫紝super鏈哄埗錛堝鏋滄湁super浼樺厛娉ㄥ唽錛変篃甯﹁繘鏉ャ?/p>

    if( GetSuperClassName() != NULL && !RegisterSuperclass() ) return NULL;
    if( GetSuperClassName() == NULL && !RegisterWindowClass() ) return NULL;
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

1.3鏄劇ず紿楀彛

鍜宻dk鏄竴鏍風(fēng)殑

::ShowWindow(*pFrame, SW_SHOWMAXIMIZED);

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } 1.4娑堟伅寰幆

CPaintManagerUI::MessageLoop();
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

1.5娑堟伅鍥炶皟鍑芥暟

鍦ㄧ獥鍙g被娉ㄥ唽鐨勬椂鍊欏簲璇ヨ娉ㄥ唽紿楀彛鍥炶皟鍑芥暟鎸囬拡錛孌uilib涓粯璁ゆ槸鍦–WindowWnd::RegisterWindow娉ㄥ唽錛?/p>

bool CWindowWnd::RegisterWindowClass()
{
    WNDCLASS wc = { 0 };
    wc.style = GetClassStyle();
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hIcon = NULL;
    wc.lpfnWndProc = CWindowWnd::__WndProc;

__WndProc鏄疌WindowWnd鐨勪竴涓潤(rùn)鎬佹垚鍛橈紝榪欎釜鍑芥暟鍊煎緱鐪嬩竴涓嬶細(xì)

LRESULT CALLBACK CWindowWnd::__WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    CWindowWnd* pThis = NULL;
    if( uMsg == WM_NCCREATE ) {
        LPCREATESTRUCT lpcs = reinterpret_cast<LPCREATESTRUCT>(lParam);
        pThis = static_cast<CWindowWnd*>(lpcs->lpCreateParams);
        pThis->m_hWnd = hWnd;
        ::SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LPARAM>(pThis));
    } 
    else {
        pThis = reinterpret_cast<CWindowWnd*>(::GetWindowLongPtr(hWnd, GWLP_USERDATA));
        if( uMsg == WM_NCDESTROY && pThis != NULL ) {
            LRESULT lRes = ::CallWindowProc(pThis->m_OldWndProc, hWnd, uMsg, wParam, lParam);
            ::SetWindowLongPtr(pThis->m_hWnd, GWLP_USERDATA, 0L);
            if( pThis->m_bSubclassed ) pThis->Unsubclass();
            pThis->m_hWnd = NULL;
            pThis->OnFinalMessage(hWnd);
            return lRes;
        }
    }
    if( pThis != NULL ) {
        return pThis->HandleMessage(uMsg, wParam, lParam);
    } 
    else {
        return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
}
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

閽堝WM_NCCREATE榪欎釜娑堟伅鏈変竴涓鐢ㄦ妧宸э紝鍏堝涔?fàn)涓嫎q欎釜娑堟伅錛?/p>

The WM_NCCREATE message is sent prior to the WM_CREATE message when a window is first created.

鎴戠殑鐞嗚В涓紝榪欎釜娑堟伅搴旇鏄獥鍙f敹鍒扮殑絎竴涓秷鎭?/p>

榪樻湁WM_NCDESTROY榪欎釜鐗規(guī)畩鐨勬秷鎭?/p>

褰撶劧浜?jiǎn)锛寴q樻湁榪欎釜鐗涢肩殑鎴忔硶錛?/p>

::SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LPARAM>(pThis));

鎬葷殑鏉ヨ涓鍙ヨ瘽錛屼袱涓秷鎭疦C create destroy瀵瑰簲鐨勫簲璇ユ湁榪炰釜鍑芥暟錛屼絾鏄師鏈殑OnNcCreate鍝嶅簲闅愯棌鍦ㄤ簡(jiǎn)__WndProc涓紝榪樻湁涓涓嚱鏁癘nFinalMessage銆倀his鎸囬拡钘忓湪SetWindowLongPtr(hWnd, GWLP_USERDATA錛岋紝錛?/p>

濂戒簡(jiǎn)搴曞眰闇瑕佹敞鎰忕殑灝卞彧鏈夎繖涓や釜鍑芥暟錛屽叾浠栫殑娑堟伅閮藉簲璇ユ槸鎶涚粰瀛愮被鍘誨鐞嗕簡(jiǎn)銆?/p>

鏃㈢劧鏄帺directUi錛屽氨閲嶇偣鍏蟲敞涓涓媁M_NCPAINT娑堟伅錛屼篃涓涓篃寰堥噸瑕佺殑娑堟伅WM_NCHITTEST銆?/p>

涓嶇煡閬撲負(fù)浠涔堣繖閲岀敤鐨勯兘鏄疦C緋誨垪娑堟伅銆?/p>

NC搴旇鏄悊瑙f垚none client錛屽垵姝ヨ瀵烡uilib鐨剆ize鎷栨媺鏀寔鏄嬌鐢∟CHITTEST+SIZE娑堟伅鏉ュ疄鐜扮殑銆?/p>

鐪婲CPAINT娑堟伅浣撻噷杈規(guī)病鏈変換浣曚唬鐮佽繖寰堣寮傦紝鎵浠ヨ繕鏄湅鐪嬪畬鏁寸殑娑堟伅鍝嶅簲鍑芥暟錛屾槸涓嶆槸婕忔帀浜?jiǎn)浠涔堬細(xì)

    LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        LRESULT lRes = 0;
        BOOL bHandled = TRUE;
        switch( uMsg ) {
        case WM_CREATE:        lRes = OnCreate(uMsg, wParam, lParam, bHandled); break;
        case WM_CLOSE:         lRes = OnClose(uMsg, wParam, lParam, bHandled); break;
        case WM_DESTROY:       lRes = OnDestroy(uMsg, wParam, lParam, bHandled); break;
        case WM_NCACTIVATE:    lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break;
        case WM_NCCALCSIZE:    lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break;
        case WM_NCPAINT:       lRes = OnNcPaint(uMsg, wParam, lParam, bHandled); break;
        case WM_NCHITTEST:     lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break;
        case WM_SIZE:          lRes = OnSize(uMsg, wParam, lParam, bHandled); break;
        case WM_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break;
        case WM_SYSCOMMAND:    lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break;
        default:
            bHandled = FALSE;
        }
        if( bHandled ) return lRes;
        if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes;
        return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
    }
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

涔嶇湅涔嬩笅榪欓噷鐨勬秷鎭鐞嗚嚦灝戝垎涓轟笁灞傦紝CWindowWnd媧劇敓綾繪湰韜病鏈夊鐞嗙殑娑堟伅灝嗕細(xì)琚佸埌m_pm涓幓澶勭悊錛屽鏋渕_pm.MessageHandler榪斿洖false娑堟伅鏈鍚庤繕鏄疌WindowWnd澶勭悊銆?/p>

bool CPaintManagerUI::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& lRes)
{
//#ifdef _DEBUG
//    switch( uMsg ) {
//    case WM_NCPAINT:
//    case WM_NCHITTEST:
//    case WM_SETCURSOR:
//       break;
//    default:
//       DUITRACE(_T("MSG: %-20s (%08ld)"), DUITRACEMSG(uMsg), ::GetTickCount());
//    }
//#endif
    // Not ready yet?
    if( m_hWndPaint == NULL ) return false;
    
    TNotifyUI* pMsg = NULL;
    while( pMsg = static_cast<TNotifyUI*>(m_aAsyncNotify.GetAt(0)) ) {
        m_aAsyncNotify.Remove(0);
        if( pMsg->pSender != NULL ) {
            if( pMsg->pSender->OnNotify ) pMsg->pSender->OnNotify(pMsg);
        }
        for( int j = 0; j < m_aNotifiers.GetSize(); j++ ) {
            static_cast<INotifyUI*>(m_aNotifiers[j])->Notify(*pMsg);
        }
        delete pMsg;
    }
    
    // Cycle through listeners
    for( int i = 0; i < m_aMessageFilters.GetSize(); i++ ) 
    {
        bool bHandled = false;
        LRESULT lResult = static_cast<IMessageFilterUI*>(m_aMessageFilters[i])->MessageHandler(uMsg, wParam, lParam, bHandled);
        if( bHandled ) {
            lRes = lResult;
            return true;
        }
    }
    // Custom handling of events
    switch( uMsg ) {
    case WM_APP + 1:
        {
            for( int i = 0; i < m_aDelayedCleanup.GetSize(); i++ ) 
                delete static_cast<CControlUI*>(m_aDelayedCleanup[i]);
            m_aDelayedCleanup.Empty();
        }
        break;
    case WM_CLOSE:
        {
            // Make sure all matching "closing" events are sent
            TEventUI event = { 0 };
            event.ptMouse = m_ptLastMousePos;
            event.dwTimestamp = ::GetTickCount();
            if( m_pEventHover != NULL ) {
                event.Type = UIEVENT_MOUSELEAVE;
                event.pSender = m_pEventHover;
                m_pEventHover->Event(event);
            }
            if( m_pEventClick != NULL ) {
                event.Type = UIEVENT_BUTTONUP;
                event.pSender = m_pEventClick;
                m_pEventClick->Event(event);
            }

            SetFocus(NULL);

            // Hmmph, the usual Windows tricks to avoid
            // focus loss...
            HWND hwndParent = GetWindowOwner(m_hWndPaint);
            if( hwndParent != NULL ) ::SetFocus(hwndParent);
        }
        break;
    case WM_ERASEBKGND:
        {
            // We'll do the painting here...
            lRes = 1;
        }
        return true;
    case WM_PAINT:
        {
            // Should we paint?
            RECT rcPaint = { 0 };
            if( !::GetUpdateRect(m_hWndPaint, &rcPaint, FALSE) ) return true;
            if( m_pRoot == NULL ) {
                PAINTSTRUCT ps = { 0 };
                ::BeginPaint(m_hWndPaint, &ps);
                ::EndPaint(m_hWndPaint, &ps);
                return true;
            }            
            // Do we need to resize anything?
            // This is the time where we layout the controls on the form.
            // We delay this even from the WM_SIZE messages since resizing can be
            // a very expensize operation.
            if( m_bUpdateNeeded ) {
                m_bUpdateNeeded = false;
                RECT rcClient = { 0 };
                ::GetClientRect(m_hWndPaint, &rcClient);
                if( !::IsRectEmpty(&rcClient) ) {
                    if( m_pRoot->IsUpdateNeeded() ) {
                        m_pRoot->SetPos(rcClient);
                        if( m_hDcOffscreen != NULL ) ::DeleteDC(m_hDcOffscreen);
                        if( m_hDcBackground != NULL ) ::DeleteDC(m_hDcBackground);
                        if( m_hbmpOffscreen != NULL ) ::DeleteObject(m_hbmpOffscreen);
                        if( m_hbmpBackground != NULL ) ::DeleteObject(m_hbmpBackground);
                        m_hDcOffscreen = NULL;
                        m_hDcBackground = NULL;
                        m_hbmpOffscreen = NULL;
                        m_hbmpBackground = NULL;
                    }
                    else {
                        CControlUI* pControl = NULL;
                        while( pControl = m_pRoot->FindControl(__FindControlFromUpdate, NULL, UIFIND_VISIBLE | UIFIND_ME_FIRST) ) {
                            pControl->SetPos( pControl->GetPos() );
                        }
                    }
                    // We'll want to notify the window when it is first initialized
                    // with the correct layout. The window form would take the time
                    // to submit swipes/animations.
                    if( m_bFirstLayout ) {
                        m_bFirstLayout = false;
                        SendNotify(m_pRoot, DUI_MSGTYPE_WINDOWINIT,  0, 0, false);
                    }
                }
            }
            // Set focus to first control?
            if( m_bFocusNeeded ) {
                SetNextTabControl();
            }
            //
            // Render screen
            //
            // Prepare offscreen bitmap?
            if( m_bOffscreenPaint && m_hbmpOffscreen == NULL )
            {
                RECT rcClient = { 0 };
                ::GetClientRect(m_hWndPaint, &rcClient);
                m_hDcOffscreen = ::CreateCompatibleDC(m_hDcPaint);
                m_hbmpOffscreen = ::CreateCompatibleBitmap(m_hDcPaint, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top); 
                ASSERT(m_hDcOffscreen);
                ASSERT(m_hbmpOffscreen);
            }
            // Begin Windows paint
            PAINTSTRUCT ps = { 0 };
            ::BeginPaint(m_hWndPaint, &ps);
            if( m_bOffscreenPaint )
            {
                HBITMAP hOldBitmap = (HBITMAP) ::SelectObject(m_hDcOffscreen, m_hbmpOffscreen);
                int iSaveDC = ::SaveDC(m_hDcOffscreen);
                if( m_bAlphaBackground ) {
                    if( m_hbmpBackground == NULL ) {
                        RECT rcClient = { 0 };
                        ::GetClientRect(m_hWndPaint, &rcClient);
                        m_hDcBackground = ::CreateCompatibleDC(m_hDcPaint);;
                        m_hbmpBackground = ::CreateCompatibleBitmap(m_hDcPaint, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top); 
                        ASSERT(m_hDcBackground);
                        ASSERT(m_hbmpBackground);
                        ::SelectObject(m_hDcBackground, m_hbmpBackground);
                        ::BitBlt(m_hDcBackground, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right - ps.rcPaint.left,
                            ps.rcPaint.bottom - ps.rcPaint.top, ps.hdc, ps.rcPaint.left, ps.rcPaint.top, SRCCOPY);
                    }
                    else
                        ::SelectObject(m_hDcBackground, m_hbmpBackground);
                    ::BitBlt(m_hDcOffscreen, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right - ps.rcPaint.left,
                        ps.rcPaint.bottom - ps.rcPaint.top, m_hDcBackground, ps.rcPaint.left, ps.rcPaint.top, SRCCOPY);
                }
                m_pRoot->DoPaint(m_hDcOffscreen, ps.rcPaint);
                for( int i = 0; i < m_aPostPaintControls.GetSize(); i++ ) {
                    CControlUI* pPostPaintControl = static_cast<CControlUI*>(m_aPostPaintControls[i]);
                    pPostPaintControl->DoPostPaint(m_hDcOffscreen, ps.rcPaint);
                }
                ::RestoreDC(m_hDcOffscreen, iSaveDC);
                ::BitBlt(ps.hdc, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right - ps.rcPaint.left,
                    ps.rcPaint.bottom - ps.rcPaint.top, m_hDcOffscreen, ps.rcPaint.left, ps.rcPaint.top, SRCCOPY);
                ::SelectObject(m_hDcOffscreen, hOldBitmap);

                if( m_bShowUpdateRect ) {
                    HPEN hOldPen = (HPEN)::SelectObject(ps.hdc, m_hUpdateRectPen);
                    ::SelectObject(ps.hdc, ::GetStockObject(HOLLOW_BRUSH));
                    ::Rectangle(ps.hdc, rcPaint.left, rcPaint.top, rcPaint.right, rcPaint.bottom);
                    ::SelectObject(ps.hdc, hOldPen);
                }
            }
            else
            {
                // A standard paint job
                int iSaveDC = ::SaveDC(ps.hdc);
                m_pRoot->DoPaint(ps.hdc, ps.rcPaint);
                ::RestoreDC(ps.hdc, iSaveDC);
            }
            // All Done!
            ::EndPaint(m_hWndPaint, &ps);
        }
        // If any of the painting requested a resize again, we'll need
        // to invalidate the entire window once more.
        if( m_bUpdateNeeded ) {
            ::InvalidateRect(m_hWndPaint, NULL, FALSE);
        }
        return true;
    case WM_PRINTCLIENT:
        {
            RECT rcClient;
            ::GetClientRect(m_hWndPaint, &rcClient);
            HDC hDC = (HDC) wParam;
            int save = ::SaveDC(hDC);
            m_pRoot->DoPaint(hDC, rcClient);
            // Check for traversing children. The crux is that WM_PRINT will assume
            // that the DC is positioned at frame coordinates and will paint the child
            // control at the wrong position. We'll simulate the entire thing instead.
            if( (lParam & PRF_CHILDREN) != 0 ) {
                HWND hWndChild = ::GetWindow(m_hWndPaint, GW_CHILD);
                while( hWndChild != NULL ) {
                    RECT rcPos = { 0 };
                    ::GetWindowRect(hWndChild, &rcPos);
                    ::MapWindowPoints(HWND_DESKTOP, m_hWndPaint, reinterpret_cast<LPPOINT>(&rcPos), 2);
                    ::SetWindowOrgEx(hDC, -rcPos.left, -rcPos.top, NULL);
                    // NOTE: We use WM_PRINT here rather than the expected WM_PRINTCLIENT
                    //       since the latter will not print the nonclient correctly for
                    //       EDIT controls.
                    ::SendMessage(hWndChild, WM_PRINT, wParam, lParam | PRF_NONCLIENT);
                    hWndChild = ::GetWindow(hWndChild, GW_HWNDNEXT);
                }
            }
            ::RestoreDC(hDC, save);
        }
        break;
    case WM_GETMINMAXINFO:
        {
            LPMINMAXINFO lpMMI = (LPMINMAXINFO) lParam;
            if( m_szMinWindow.cx > 0 ) lpMMI->ptMinTrackSize.x = m_szMinWindow.cx;
            if( m_szMinWindow.cy > 0 ) lpMMI->ptMinTrackSize.y = m_szMinWindow.cy;
            if( m_szMaxWindow.cx > 0 ) lpMMI->ptMaxTrackSize.x = m_szMaxWindow.cx;
            if( m_szMaxWindow.cy > 0 ) lpMMI->ptMaxTrackSize.y = m_szMaxWindow.cy;
        }
        break;
    case WM_SIZE:
        {
            if( m_pFocus != NULL ) {
                TEventUI event = { 0 };
                event.Type = UIEVENT_WINDOWSIZE;
                event.pSender = m_pFocus;
                event.dwTimestamp = ::GetTickCount();
                m_pFocus->Event(event);
            }
            if( m_pRoot != NULL ) m_pRoot->NeedUpdate();
        }
        return true;
    case WM_TIMER:
        {
            for( int i = 0; i < m_aTimers.GetSize(); i++ ) {
                const TIMERINFO* pTimer = static_cast<TIMERINFO*>(m_aTimers[i]);
                if( pTimer->hWnd == m_hWndPaint && pTimer->uWinTimer == LOWORD(wParam) && pTimer->bKilled == false) {
                    TEventUI event = { 0 };
                    event.Type = UIEVENT_TIMER;
                    event.pSender = pTimer->pSender;
                    event.wParam = pTimer->nLocalID;
                    event.dwTimestamp = ::GetTickCount();
                    pTimer->pSender->Event(event);
                    break;
                }
            }
        }
        break;
    case WM_MOUSEHOVER:
        {
            m_bMouseTracking = false;
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            CControlUI* pHover = FindControl(pt);
            if( pHover == NULL ) break;
            // Generate mouse hover event
            if( m_pEventHover != NULL ) {
                TEventUI event = { 0 };
                event.ptMouse = pt;
                event.Type = UIEVENT_MOUSEHOVER;
                event.pSender = m_pEventHover;
                event.dwTimestamp = ::GetTickCount();
                m_pEventHover->Event(event);
            }
            // Create tooltip information
            CDuiString sToolTip = pHover->GetToolTip();
            if( sToolTip.IsEmpty() ) return true;
            ::ZeroMemory(&m_ToolTip, sizeof(TOOLINFO));
            m_ToolTip.cbSize = sizeof(TOOLINFO);
            m_ToolTip.uFlags = TTF_IDISHWND;
            m_ToolTip.hwnd = m_hWndPaint;
            m_ToolTip.uId = (UINT_PTR) m_hWndPaint;
            m_ToolTip.hinst = m_hInstance;
            m_ToolTip.lpszText = const_cast<LPTSTR>( (LPCTSTR) sToolTip );
            m_ToolTip.rect = pHover->GetPos();
            if( m_hwndTooltip == NULL ) {
                m_hwndTooltip = ::CreateWindowEx(0, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, m_hWndPaint, NULL, m_hInstance, NULL);
                ::SendMessage(m_hwndTooltip, TTM_ADDTOOL, 0, (LPARAM) &m_ToolTip);
            }
            ::SendMessage(m_hwndTooltip, TTM_SETTOOLINFO, 0, (LPARAM) &m_ToolTip);
            ::SendMessage(m_hwndTooltip, TTM_TRACKACTIVATE, TRUE, (LPARAM) &m_ToolTip);
        }
        return true;
    case WM_MOUSELEAVE:
        {
            if( m_hwndTooltip != NULL ) ::SendMessage(m_hwndTooltip, TTM_TRACKACTIVATE, FALSE, (LPARAM) &m_ToolTip);
            if( m_bMouseTracking ) ::SendMessage(m_hWndPaint, WM_MOUSEMOVE, 0, (LPARAM) -1);
            m_bMouseTracking = false;
        }
        break;
    case WM_MOUSEMOVE:
        {
            // Start tracking this entire window again...
            if( !m_bMouseTracking ) {
                TRACKMOUSEEVENT tme = { 0 };
                tme.cbSize = sizeof(TRACKMOUSEEVENT);
                tme.dwFlags = TME_HOVER | TME_LEAVE;
                tme.hwndTrack = m_hWndPaint;
                tme.dwHoverTime = m_hwndTooltip == NULL ? 400UL : (DWORD) ::SendMessage(m_hwndTooltip, TTM_GETDELAYTIME, TTDT_INITIAL, 0L);
                _TrackMouseEvent(&tme);
                m_bMouseTracking = true;
            }
            // Generate the appropriate mouse messages
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            m_ptLastMousePos = pt;
            CControlUI* pNewHover = FindControl(pt);
            if( pNewHover != NULL && pNewHover->GetManager() != this ) break;
            TEventUI event = { 0 };
            event.ptMouse = pt;
            event.dwTimestamp = ::GetTickCount();
            if( pNewHover != m_pEventHover && m_pEventHover != NULL ) {
                event.Type = UIEVENT_MOUSELEAVE;
                event.pSender = m_pEventHover;
                m_pEventHover->Event(event);
                m_pEventHover = NULL;
                if( m_hwndTooltip != NULL ) ::SendMessage(m_hwndTooltip, TTM_TRACKACTIVATE, FALSE, (LPARAM) &m_ToolTip);
            }
            if( pNewHover != m_pEventHover && pNewHover != NULL ) {
                event.Type = UIEVENT_MOUSEENTER;
                event.pSender = pNewHover;
                pNewHover->Event(event);
                m_pEventHover = pNewHover;
            }
            if( m_pEventClick != NULL ) {
                event.Type = UIEVENT_MOUSEMOVE;
                event.pSender = m_pEventClick;
                m_pEventClick->Event(event);
            }
            else if( pNewHover != NULL ) {
                event.Type = UIEVENT_MOUSEMOVE;
                event.pSender = pNewHover;
                pNewHover->Event(event);
            }
        }
        break;
    case WM_LBUTTONDOWN:
        {
            // We alway set focus back to our app (this helps
            // when Win32 child windows are placed on the dialog
            // and we need to remove them on focus change).
            ::SetFocus(m_hWndPaint);
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            m_ptLastMousePos = pt;
            CControlUI* pControl = FindControl(pt);
            if( pControl == NULL ) break;
            if( pControl->GetManager() != this ) break;
            m_pEventClick = pControl;
            pControl->SetFocus();
            SetCapture();
            TEventUI event = { 0 };
            event.Type = UIEVENT_BUTTONDOWN;
            event.pSender = pControl;
            event.wParam = wParam;
            event.lParam = lParam;
            event.ptMouse = pt;
            event.wKeyState = (WORD)wParam;
            event.dwTimestamp = ::GetTickCount();
            pControl->Event(event);
        }
        break;
    case WM_LBUTTONDBLCLK:
        {
            ::SetFocus(m_hWndPaint);
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            m_ptLastMousePos = pt;
            CControlUI* pControl = FindControl(pt);
            if( pControl == NULL ) break;
            if( pControl->GetManager() != this ) break;
            SetCapture();
            TEventUI event = { 0 };
            event.Type = UIEVENT_DBLCLICK;
            event.pSender = pControl;
            event.ptMouse = pt;
            event.wKeyState = (WORD)wParam;
            event.dwTimestamp = ::GetTickCount();
            pControl->Event(event);
            m_pEventClick = pControl;
        }
        break;
    case WM_LBUTTONUP:
        {
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            m_ptLastMousePos = pt;
            if( m_pEventClick == NULL ) break;
            ReleaseCapture();
            TEventUI event = { 0 };
            event.Type = UIEVENT_BUTTONUP;
            event.pSender = m_pEventClick;
            event.wParam = wParam;
            event.lParam = lParam;
            event.ptMouse = pt;
            event.wKeyState = (WORD)wParam;
            event.dwTimestamp = ::GetTickCount();
            m_pEventClick->Event(event);
            m_pEventClick = NULL;
        }
        break;
    case WM_RBUTTONDOWN:
        {
            ::SetFocus(m_hWndPaint);
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            m_ptLastMousePos = pt;
            CControlUI* pControl = FindControl(pt);
            if( pControl == NULL ) break;
            if( pControl->GetManager() != this ) break;
            pControl->SetFocus();
            SetCapture();
            TEventUI event = { 0 };
            event.Type = UIEVENT_RBUTTONDOWN;
            event.pSender = pControl;
            event.wParam = wParam;
            event.lParam = lParam;
            event.ptMouse = pt;
            event.wKeyState = (WORD)wParam;
            event.dwTimestamp = ::GetTickCount();
            pControl->Event(event);
            m_pEventClick = pControl;
        }
        break;
    case WM_CONTEXTMENU:
        {
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            ::ScreenToClient(m_hWndPaint, &pt);
            m_ptLastMousePos = pt;
            if( m_pEventClick == NULL ) break;
            ReleaseCapture();
            TEventUI event = { 0 };
            event.Type = UIEVENT_CONTEXTMENU;
            event.pSender = m_pEventClick;
            event.ptMouse = pt;
            event.wKeyState = (WORD)wParam;
            event.lParam = (LPARAM)m_pEventClick;
            event.dwTimestamp = ::GetTickCount();
            m_pEventClick->Event(event);
            m_pEventClick = NULL;
        }
        break;
    case WM_MOUSEWHEEL:
        {
            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
            ::ScreenToClient(m_hWndPaint, &pt);
            m_ptLastMousePos = pt;
            CControlUI* pControl = FindControl(pt);
            if( pControl == NULL ) break;
            if( pControl->GetManager() != this ) break;
            int zDelta = (int) (short) HIWORD(wParam);
            TEventUI event = { 0 };
            event.Type = UIEVENT_SCROLLWHEEL;
            event.pSender = pControl;
            event.wParam = MAKELPARAM(zDelta < 0 ? SB_LINEDOWN : SB_LINEUP, 0);
            event.lParam = lParam;
            event.wKeyState = MapKeyState();
            event.dwTimestamp = ::GetTickCount();
            pControl->Event(event);

            // Let's make sure that the scroll item below the cursor is the same as before...
            ::SendMessage(m_hWndPaint, WM_MOUSEMOVE, 0, (LPARAM) MAKELPARAM(m_ptLastMousePos.x, m_ptLastMousePos.y));
        }
        break;
    case WM_CHAR:
        {
            if( m_pFocus == NULL ) break;
            TEventUI event = { 0 };
            event.Type = UIEVENT_CHAR;
            event.chKey = (TCHAR)wParam;
            event.ptMouse = m_ptLastMousePos;
            event.wKeyState = MapKeyState();
            event.dwTimestamp = ::GetTickCount();
            m_pFocus->Event(event);
        }
        break;
    case WM_KEYDOWN:
        {
            if( m_pFocus == NULL ) break;
            TEventUI event = { 0 };
            event.Type = UIEVENT_KEYDOWN;
            event.chKey = (TCHAR)wParam;
            event.ptMouse = m_ptLastMousePos;
            event.wKeyState = MapKeyState();
            event.dwTimestamp = ::GetTickCount();
            m_pFocus->Event(event);
            m_pEventKey = m_pFocus;
        }
        break;
    case WM_KEYUP:
        {
            if( m_pEventKey == NULL ) break;
            TEventUI event = { 0 };
            event.Type = UIEVENT_KEYUP;
            event.chKey = (TCHAR)wParam;
            event.ptMouse = m_ptLastMousePos;
            event.wKeyState = MapKeyState();
            event.dwTimestamp = ::GetTickCount();
            m_pEventKey->Event(event);
            m_pEventKey = NULL;
        }
        break;
    case WM_SETCURSOR:
        {
            if( LOWORD(lParam) != HTCLIENT ) break;
            if( m_bMouseCapture ) return true;

            POINT pt = { 0 };
            ::GetCursorPos(&pt);
            ::ScreenToClient(m_hWndPaint, &pt);
            CControlUI* pControl = FindControl(pt);
            if( pControl == NULL ) break;
            if( (pControl->GetControlFlags() & UIFLAG_SETCURSOR) == 0 ) break;
            TEventUI event = { 0 };
            event.Type = UIEVENT_SETCURSOR;
            event.wParam = wParam;
            event.lParam = lParam;
            event.ptMouse = pt;
            event.wKeyState = MapKeyState();
            event.dwTimestamp = ::GetTickCount();
            pControl->Event(event);
        }
        return true;
    case WM_NOTIFY:
        {
            LPNMHDR lpNMHDR = (LPNMHDR) lParam;
            if( lpNMHDR != NULL ) lRes = ::SendMessage(lpNMHDR->hwndFrom, OCM__BASE + uMsg, wParam, lParam);
            return true;
        }
        break;
    case WM_COMMAND:
        {
            if( lParam == 0 ) break;
            HWND hWndChild = (HWND) lParam;
            lRes = ::SendMessage(hWndChild, OCM__BASE + uMsg, wParam, lParam);
            return true;
        }
        break;
    case WM_CTLCOLOREDIT:
    case WM_CTLCOLORSTATIC:
        {
            // Refer To: http://msdn.microsoft.com/en-us/library/bb761691(v=vs.85).aspx
            // Read-only or disabled edit controls do not send the WM_CTLCOLOREDIT message; instead, they send the WM_CTLCOLORSTATIC message.
            if( lParam == 0 ) break;
            HWND hWndChild = (HWND) lParam;
            lRes = ::SendMessage(hWndChild, OCM__BASE + uMsg, wParam, lParam);
            return true;
        }
        break;
    default:
        break;
    }

    pMsg = NULL;
    while( pMsg = static_cast<TNotifyUI*>(m_aAsyncNotify.GetAt(0)) ) {
        m_aAsyncNotify.Remove(0);
        if( pMsg->pSender != NULL ) {
            if( pMsg->pSender->OnNotify ) pMsg->pSender->OnNotify(pMsg);
        }
        for( int j = 0; j < m_aNotifiers.GetSize(); j++ ) {
            static_cast<INotifyUI*>(m_aNotifiers[j])->Notify(*pMsg);
        }
        delete pMsg;
    }

    return false;
}
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

鎴戝幓榪欓噷浠g爜鏈夌偣澶氾紝鍏堢畝鍗曟崑涓涓嬶紝棣栧厛澶勭悊浜?jiǎn)濡備笅娑堟伅锛?xì)

WM_CTLCOLOREDIT:
WM_CTLCOLORSTATIC
WM_COMMAND:
WM_NOTIFY:
WM_SETCURSOR:
WM_KEYUP
WM_KEYDOWN
WM_CHAR
WM_MOUSEWHEEL
WM_CONTEXTMENU
WM_RBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDBLCLK
WM_LBUTTONDOWN
WM_MOUSEMOVE
WM_MOUSELEAVE
WM_MOUSEHOVER
WM_TIMER
WM_SIZE
WM_GETMINMAXINFO
WM_PRINTCLIENT
WM_PAINT
WM_ERASEBKGND
WM_CLOSE
WM_APP

闄や簡(jiǎn)榪欎簺娑堟伅榪樻湁涓涓壒鍒殑涓滆タ闇瑕佺暀鎰忥細(xì)

m_aAsyncNotify浠ュ悗鍐嶅垎鏋?/p>

 

 

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }



Enic 2013-03-07 21:39 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产69国产精品亚洲| 国产精品美女久久| 亚洲欧美经典视频| 欧美大片免费久久精品三p| 亚洲欧美一区二区三区极速播放 | 欧美日本国产一区| 麻豆freexxxx性91精品| 国产精品最新自拍| 亚洲视频综合| 在线亚洲欧美视频| 免费在线成人| 美女日韩在线中文字幕| 国产女人精品视频| 亚洲一级影院| 亚洲欧美怡红院| 欧美三日本三级少妇三2023| 亚洲国产美国国产综合一区二区| 国产自产2019最新不卡| 亚洲欧美日韩精品一区二区| 亚洲在线一区| 国产精品国产精品国产专区不蜜| 亚洲精品亚洲人成人网| 亚洲精品视频在线观看免费| 另类酷文…触手系列精品集v1小说| 久久精品综合网| 国产一区二区三区视频在线观看| 亚洲一区二区三区色| 亚洲欧美在线观看| 国产精品久久久久久久久久久久久 | 激情av一区| 久久精品国产免费| 久久亚洲不卡| 永久555www成人免费| 老色鬼精品视频在线观看播放| 老司机午夜精品视频| 亚洲高清一区二| 免费在线日韩av| 亚洲人妖在线| 亚洲午夜激情在线| 国产精品女同互慰在线看| 亚洲欧美亚洲| 久久美女艺术照精彩视频福利播放| 国产在线精品一区二区中文| 久久精品欧美日韩| 亚洲电影免费观看高清完整版在线| 亚洲黄网站在线观看| 欧美日韩成人一区二区三区| 一本色道久久88精品综合| 亚洲男人的天堂在线观看 | 国产精品久久99| 先锋亚洲精品| 欧美www在线| 一本一本久久a久久精品牛牛影视| 欧美日韩一区二区三区四区五区 | 精品成人一区二区三区四区| 麻豆精品精华液| 一区二区三区四区五区精品视频| 欧美一区二区视频免费观看| 国产综合亚洲精品一区二| 欧美福利网址| 亚洲性感激情| 欧美福利视频一区| 亚洲制服丝袜在线| 在线精品高清中文字幕| 欧美日韩亚洲一区二| 欧美中文字幕不卡| 日韩视频免费| 久久男人av资源网站| 99国产精品久久久| 国产午夜精品久久久久久免费视| 免费黄网站欧美| 亚洲主播在线观看| 亚洲人成艺术| 久久婷婷综合激情| 亚洲主播在线观看| 亚洲日本va午夜在线电影 | 欧美高清视频在线观看| 亚洲精品国产拍免费91在线| 国产精品高潮视频| 免费在线亚洲| 久久精品论坛| 亚洲一区二区三区中文字幕在线| 欧美成人免费一级人片100| 亚洲欧美日韩在线| 日韩一区二区精品| 亚洲国产美女| 国产在线观看一区| 国产精品有限公司| 国产精品成人久久久久| 欧美h视频在线| 久久精品国产欧美激情| 亚洲欧美日韩国产成人| 99精品欧美一区二区三区综合在线| 男女激情视频一区| 久久久精品动漫| 久久不射电影网| 午夜在线a亚洲v天堂网2018| 一区二区三区日韩精品| 亚洲毛片一区二区| 亚洲欧洲精品一区二区三区不卡 | 亚洲图片欧洲图片日韩av| 亚洲激情二区| 亚洲电影免费观看高清完整版在线观看| 久久久99国产精品免费| 性做久久久久久| 亚洲欧美激情视频| 亚洲尤物视频在线| 亚洲欧美日韩国产| 亚洲欧美国产三级| 亚洲欧美日韩精品一区二区| 在线亚洲一区二区| 亚洲午夜av在线| 亚洲欧美激情一区| 亚洲欧美日韩综合| 欧美一区二区精品在线| 欧美一区二区在线| 久久精品中文字幕一区二区三区| 久久精品中文字幕免费mv| 久久久福利视频| 美日韩丰满少妇在线观看| 蜜桃久久av一区| 欧美风情在线观看| 亚洲精品一区二区三区在线观看| 亚洲精品视频在线| 在线综合视频| 欧美一区二区日韩一区二区| 久久精品一区二区三区四区 | 欧美亚洲一区二区三区| 久久xxxx精品视频| 久久亚洲图片| 欧美精品一区二区三区蜜桃 | 久久五月激情| 亚洲国产va精品久久久不卡综合| 亚洲精品欧美精品| 亚洲图片欧美一区| 久久久久青草大香线综合精品| 老色鬼久久亚洲一区二区| 欧美欧美在线| 国产日韩欧美综合一区| 在线播放不卡| 亚洲午夜极品| 久久九九精品| 亚洲另类在线视频| 欧美在线1区| 欧美精品www在线观看| 国产精品自拍一区| 亚洲精品女人| 欧美淫片网站| 最新国产乱人伦偷精品免费网站| 这里只有精品视频| 蜜臀va亚洲va欧美va天堂| 欧美日韩一卡二卡| 激情久久五月天| 亚洲综合不卡| 欧美肥婆在线| 欧美一区=区| 欧美日韩在线不卡一区| 狠狠色狠狠色综合人人| 亚洲一区综合| 欧美国产日韩xxxxx| 亚洲欧美日韩另类精品一区二区三区| 狂野欧美性猛交xxxx巴西| 国产精品久久久久一区二区三区共 | 另类图片国产| 亚洲视频在线播放| 欧美国产免费| 亚洲高清不卡一区| 久久精品一区二区三区中文字幕 | 国产亚洲va综合人人澡精品| 亚洲精品视频一区二区三区| 久久久久国产免费免费| 在线视频欧美精品| 欧美福利视频网站| 亚洲成人原创| 久久精品视频导航| 亚洲在线第一页| 欧美日韩美女| 亚洲三级色网| 欧美国产日韩一区| 久久青青草原一区二区| 国产一区观看| 欧美在线免费看| 亚洲在线成人精品| 国产精品成人免费| 亚洲图片在线观看| avtt综合网| 欧美系列亚洲系列| 在线亚洲激情| 亚洲美女在线看| 欧美日韩国产区| 在线中文字幕不卡| 亚洲精选一区| 欧美日韩伊人| 亚洲女人小视频在线观看| 一本大道av伊人久久综合| 欧美日韩1080p| 亚洲天堂成人| 亚洲愉拍自拍另类高清精品| 国产精品久久久久久影视| 午夜精品福利一区二区三区av|