• <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>
            posts - 131, comments - 12, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            2013年5月7日

            http://blog.csdn.net/lanshengsheng2012

            由于
            這個(gè)博客僅限于c++方面。目前進(jìn)行我的博客轉(zhuǎn)移到csdn

            posted @ 2013-05-07 16:53 盛勝 閱讀(365) | 評(píng)論 (0)編輯 收藏

            2013年4月7日

            VC動(dòng)態(tài)創(chuàng)建控件
            2010-12-15 11:09

            動(dòng)態(tài)控件是指在需要時(shí)由Create()創(chuàng)建的控件,這與預(yù)先在對(duì)話框中放置的控件是不同的。 

              一、創(chuàng)建動(dòng)態(tài)控件:

              為了對(duì)照,我們先來(lái)看一下靜態(tài)控件的創(chuàng)建。

              放置靜態(tài)控件時(shí)必須先建立一個(gè)容器,一般是對(duì)話框,這時(shí)我們?cè)趯?duì)話框編輯窗口中,從工具窗口中拖出所需控件放在對(duì)話框中即可,再適當(dāng)修改控件ID,設(shè)置控件屬性,一個(gè)靜態(tài)控件就創(chuàng)建好了,當(dāng)對(duì)話框被顯示時(shí),其上的控件也會(huì)顯示。

              靜態(tài)控件不需要調(diào)用Create()函數(shù)來(lái)創(chuàng)建。

              而創(chuàng)建動(dòng)態(tài)控件有很大不同,以下以按鈕為例,看一下動(dòng)態(tài)控件的創(chuàng)建過(guò)程:

              1.建立控件ID號(hào):

              ID號(hào)是控件的標(biāo)識(shí),創(chuàng)建控件前必須先為它設(shè)置一個(gè)ID號(hào)。

              打開(kāi)資源中的“String Table”,在空白行上雙擊鼠標(biāo),這時(shí)會(huì)彈出一個(gè)ID屬性對(duì)話框,在其中的ID編輯框中輸入ID,如:IDC_MYBUTTON,在Caption中輸入控件標(biāo)題或注解(注:Caption框不能為空,為空會(huì)導(dǎo)致創(chuàng)建失敗),這里我輸入的是按鈕上要顯示的文字--動(dòng)態(tài)按鈕。

              2.建立控件對(duì)象:

              不同種類(lèi)的控件應(yīng)創(chuàng)建不同的類(lèi)對(duì)象:

              ·按鈕控件 CButton (包括普通按鈕、單選按鈕和復(fù)選按鈕)
              ·編輯控件 CEdit
              ·靜態(tài)文本控件 CStatic
              ·標(biāo)簽控件 CTabCtrl
              ·旋轉(zhuǎn)控件 CSpinButtonCtrl
              ·滑標(biāo)控件 CSliderCtrl
              ·多信息編輯控件 CRichEditCtrl
              ·進(jìn)度條控件 CProgressCtrl
              ·滾動(dòng)條控件 CSrcollBar
              ·組合框控件 CComboBox
              ·列表框控件 CListBox
              ·圖像列表控件 CImageCtrl
              ·樹(shù)狀控件 CTreeCtrl
              ·動(dòng)畫(huà)控件 CAnimateCtrl

              本例中我們創(chuàng)建一個(gè)CButton類(lèi)的普通按鈕。注意不能直接定義CButton對(duì)象,如:CButton m_MyBut;這種定義只能用來(lái)給靜態(tài)控件定義控制變量,不能用于動(dòng)態(tài)控件。

              正確做法是用new調(diào)用CButton構(gòu)造函數(shù)生成一個(gè)實(shí)例:

            CButton *p_MyBut = new CButton();

              然后用CButton類(lèi)的Create()函數(shù)創(chuàng)建,該函數(shù)原型如下:

            BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

              lpszCaption是按鈕上顯示的文本;dwStyle指定按鈕風(fēng)格,可以是按鈕風(fēng)格與窗口風(fēng)格的組合,取值有:

              窗口風(fēng)格:

              ·WS_CHILD 子窗口,必須有
              ·WS_VISIBLE 窗口可見(jiàn),一般都有
              ·WS_DISABLED 禁用窗口,創(chuàng)建初始狀態(tài)為灰色不可用的按鈕時(shí)使用
              ·WS_TABSTOP 可用Tab鍵選擇
              ·WS_GROUP 成組,用于成組的單選按鈕中的第一個(gè)按鈕

              按鈕風(fēng)格:

              ·BS_PUSHBUTTON 下壓式按鈕,也即普通按鈕
              ·BS_AUTORADIOBUTTON 含自動(dòng)選中狀態(tài)的單選按鈕
              ·BS_RADIOBUTTON 單選按鈕,不常用
              ·BS_AUTOCHECKBOX 含自動(dòng)選中狀態(tài)的復(fù)選按鈕
              ·BS_CHECKBOX 復(fù)選按鈕,不常用
              ·BS_AUTO3STATE 含自動(dòng)選中狀態(tài)的三態(tài)復(fù)選按鈕
              ·BS_3STATE 三態(tài)復(fù)選按鈕,不常用
             
              以上風(fēng)格指定了創(chuàng)建的按鈕類(lèi)型,不能同時(shí)使用,但必須有其一。

              ·BS_BITMAP 按鈕上將顯示位圖
              ·BS_DEFPUSHBUTTON 設(shè)置為默認(rèn)按鈕,只用于下壓式按鈕,一個(gè)對(duì)話框中只能指定一個(gè)默認(rèn)按鈕
              ·rect指定按鈕的大小和位置;
              ·pParentWnd指示擁有按鈕的父窗口,不能為NULL;
              ·nID指定與按鈕關(guān)聯(lián)的ID號(hào),用上一步創(chuàng)建的ID號(hào)。

              不同控件類(lèi)的Create()函數(shù)略有不同,可參考相關(guān)資料。

              例:p_MyBut->Create( "動(dòng)態(tài)按鈕", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20,10,80,40), this, IDC_MYBUTTON );
            這樣,我們就在當(dāng)前對(duì)話框中的(20,10)處創(chuàng)建了寬60,高30,按鈕文字為“動(dòng)態(tài)按鈕”的下壓式按鈕。

              為了使創(chuàng)建過(guò)程更方便易用,我定義了如下函數(shù):

            CButton* CTextEditorView::NewMyButton(int nID,CRect rect,int nStyle)
            {
            CString m_Caption;
            m_Caption.LoadString( nID ); //取按鈕標(biāo)題
            CButton *p_Button = new CButton();
            ASSERT_VALID(p_Button);
            p_Button->Create( m_Caption, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | nStyle, rect, this, nID ); //創(chuàng)建按鈕
            return p_Button;
            }

              其中m_Caption.LoadString( nID )是從字符串表中讀取按鈕文本,這樣在創(chuàng)建按鈕ID時(shí),應(yīng)該把文本設(shè)置好,參數(shù)nStyle為除必須風(fēng)格外的額外風(fēng)格。

              以下,調(diào)用該函數(shù)在ONINIATIAL中創(chuàng)建三個(gè)按鈕,并指定第一個(gè)按鈕為默認(rèn)按鈕,按鈕的ID在STRING TABLE中已預(yù)先設(shè)置好了:

            //CButton *p_MyBtn[3];//為了在后面釋放資源,改為在類(lèi)頭文件中聲明為

                                                  //公有變量
             p_MyBtn[0]=NewMyButton(ID_MYBTN1,CRect(10,20,60,40),BS_DEFPUSHBUTTON);
             p_MyBtn[1]=NewMyButton(ID_MYBTN2,CRect(10,50,60,70),0);
             p_MyBtn[2]=NewMyButton(ID_MYBTN3,CRect(10,80,60,100),0);

             

             

            二、動(dòng)態(tài)控件的響應(yīng):

              動(dòng)態(tài)控件的響應(yīng)函數(shù)不能用ClassWizard添加,只能手動(dòng)添加。仍以上面的按鈕為例,我們制作按鈕的單擊響應(yīng)函數(shù)。

              1.在MESSAGE_MAP中添加響應(yīng)函數(shù):

              MESSAGE_MAP表中定義了消息響應(yīng)函數(shù),其格式為:消息名(ID,函數(shù)名),當(dāng)我們用ClassWizard添加函數(shù)時(shí),會(huì)自動(dòng)添加在AFX_MSG_MAP括起的區(qū)間內(nèi),如:

            BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
            //{{AFX_MSG_MAP(CTextEditorView)
            ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
            //}}AFX_MSG_MAP
            END_MESSAGE_MAP()

             

             
              手工添加時(shí)不要添加到AFX_MSG_MAP區(qū)間內(nèi),以防ClassWizard不能正常工作,如: 

            BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
            //{{AFX_MSG_MAP(CTextEditorView)
            ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
            //}}AFX_MSG_MAP
            ON_BN_CLICKED(ID_MYBTN1, OnMybtn1)
            ON_BN_CLICKED(ID_MYBTN2, OnMybtn2)
            ON_BN_CLICKED(ID_MYBTN3, OnMybtn3)
            END_MESSAGE_MAP()

             


              其中ON_BN_CLICKED是按鈕單擊消息。

              2.在頭文件中添加函數(shù)定義:

              用ClassWizard添加函數(shù)時(shí),會(huì)在頭文件的AFX_MSG區(qū)間內(nèi)添加函數(shù)定義,如: 

            protected:
            //{{AFX_MSG(CTextEditorView)
            afx_msg void OnIconbut0();
            //}}AFX_MSG
            DECLARE_MESSAGE_MAP()

             


              我們模仿這種形式,只是把函數(shù)定義添加到AFX_MSG區(qū)間外就行了:

            protected:
            //{{AFX_MSG(CTextEditorView)
            afx_msg void OnIconbut0();
            //}}AFX_MSG
            afx_msg void OnMybtn1();
            afx_msg void OnMybtn2();
            afx_msg void OnMybtn3();
            DECLARE_MESSAGE_MAP()

             


              3.編寫(xiě)消息響應(yīng)函數(shù):

              以上是把消息和函數(shù)關(guān)聯(lián)起來(lái)了,具體在單擊按鈕后應(yīng)做的工作在函數(shù)中完成: 

            void CTextEditorView::OnMybtn1()
            {
            MessageBox( "哈!你單擊了動(dòng)態(tài)按鈕。" );
            }
            void CTextEditorView::OnMybtn2()
            {
            ……
            }
            void CTextEditorView::OnMybtn3()
            {
            ……
            }

             


              除了按鈕的響應(yīng)函數(shù)外,你還可以用上面獲得的指針訪問(wèn)按鈕,如:

              修改按鈕的大小和位置:p_MyBtn[0]->MoveWindow(……);

              修改按鈕文本:p_MyBtn[0]->SetWindowText(……);

              顯示/隱藏按鈕:p_MyBtn[0]->ShowWindow(……);等等。

            三、回收資源:

              由于動(dòng)態(tài)控件對(duì)象是由new生成的,它不會(huì)被程序自動(dòng)釋放,所以需手工釋放。在控件不再使用時(shí)可以刪除它,在對(duì)話框中的析構(gòu)函數(shù)中銷(xiāo)毀(析構(gòu)函數(shù)沒(méi)有手動(dòng)添加):

            CMonthCalCtrlDlg::~CMonthCalCtrlDlg()
            {
             for(int i=0;i<3;i++)
                {if(p_MyBtn[i])
                 delete p_MyBtn[i];

                p_MyBtn[0]=NULL;//若采用其他方式釋放,則加上這句,否則會(huì)出錯(cuò)
                }
            }

             


              以上就是按鈕控件動(dòng)態(tài)生成的方法。

            posted @ 2013-04-07 14:36 盛勝 閱讀(402) | 評(píng)論 (0)編輯 收藏

            vc 如何建動(dòng)態(tài)按鈕

             

            在類(lèi)的定義中,定義如下變量

            [c-sharp] view plaincopy
            1. Cbutton m_btn;  

             

             

            那么在類(lèi)的成員函數(shù)中就可以使用了如下來(lái)創(chuàng)建按鈕。

            [c-sharp] view plaincopy
            1. m_btn.Create("動(dòng)態(tài)創(chuàng)建的按鈕",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);  

             

            注,創(chuàng)建第二次的時(shí)候會(huì)出錯(cuò)。所以要用。

            [c-sharp] view plaincopy
            1. M_btn. DestroyWindow();  

             

            來(lái)釋放再進(jìn)行創(chuàng)建。

            借由這個(gè)動(dòng)態(tài)創(chuàng)建,弄清了一些MFC的構(gòu)架,MFC是基于所有的類(lèi)而得出的成果,一個(gè)類(lèi)派生與另一個(gè)基類(lèi),從CWnd到CDialog就是一個(gè)很好的例子。CDialog派生與CWnd。

            如果我要?jiǎng)?chuàng)建一個(gè)按鈕,就必須用CDialog定義一個(gè)新的變量,這個(gè)變量就成了一個(gè)按鈕,我就可以利用這個(gè)按鈕類(lèi)進(jìn)行 各類(lèi)操作,例如定義其的大小,風(fēng)格。

             

            皆由此可見(jiàn),所有的窗口都是一個(gè)類(lèi)定義來(lái)的。無(wú)論是按鈕,標(biāo)簽,ComBox,List等等,都可以使用這個(gè)方法進(jìn)行創(chuàng)建。

            在編輯代碼方面,VC與VB就有了,對(duì)于用戶(hù)來(lái)說(shuō),就有了本質(zhì)上的差別,VB的或許更加方便,而VC需要處理的細(xì)節(jié)太多了。


            //創(chuàng)建按鈕 
            CButton   *m_pBt1   =   new   CButton();     
            ASSERT_VALID(m_pBt1); 
            m_pBt1-> Create(_T("進(jìn)入[A]"),   WS_GROUP ¦WS_CHILD ¦WS_VISIBLE ¦BS_PUSHBUTTON,   CRect(10,10,20,20),   this,   IDC_AUTOCUT_POSTEACH   );         
            m_pBt1-> MoveWindow(0,   152,   100,   100);   
            //修改風(fēng)格   
            HWND       hwnd=m_pBt1-> GetSafeHwnd();       
            long       lStyle=GetWindowLong(hwnd,GWL_EXSTYLE); 
            SetWindowLong(hwnd,GWL_EXSTYLE,lStyle ¦WS_EX_DLGMODALFRAME);               
            ::SetWindowPos(hwnd,0,   12,   55,   55,   111,   SWP_NOREPOSITION ¦SWP_NOACTIVATE ¦SWP_NOMOVE ¦SWP_FRAMECHANGED);

            posted @ 2013-04-07 14:33 盛勝 閱讀(368) | 評(píng)論 (0)編輯 收藏

            2013年3月30日

             //m_pdbado->GetFieldValue(_T("AccountCreateDate"),str);
            m_pdbado->GetFieldValue(_T("AccountCreateDate"),coledatetime);
            str = coledatetime.Format("%Y-%m-%d %H:%M:%S");
            if (str.size()>64)
            {
            m_strError = "超過(guò)長(zhǎng)度";
            //m_pdbado->CloseRecordset();
            return false;
            }
            strcpy_s(user_info.AccountCreateDate,64,str.c_str());
            要用COleDateTime coledatetime; 讀取,再格式化 

            posted @ 2013-03-30 12:10 盛勝 閱讀(195) | 評(píng)論 (0)編輯 收藏

            BOOL C*****::StartMakeing( void )
            {
            unsigned threadID = 0;   
            m_start = true;
            m_hThread =(HANDLE) _beginthreadex(NULL, 0, MakeMontage, (LPVOID)this, 0, &threadID );
            return (m_start != NULL);   
            }

            unsigned __stdcall C*****::MakeMontage( LPVOID lpParameter )
            {
            if(lpParameter)
            {
            C***** *pclient = (CDossierMontage*)lpParameter;
            pclient->doMake();
            }
            return 0xdead;
            }

            void C*****::doMake( )

            posted @ 2013-03-30 10:18 盛勝 閱讀(323) | 評(píng)論 (0)編輯 收藏

            2013年3月29日

            OnPain()
            CPaintDC *pdc=&dc;
            CRect r;
            GetClientRect(&r);
            CBitmap *pBitmap= new CBitmap;
            BITMAP bm;
            pBitmap->LoadBitmap(IDB_BG_NEW);
            pBitmap->GetBitmap(&bm);
            CDC* pDisplayMemDC = new CDC;
            pDisplayMemDC->CreateCompatibleDC(pdc);
            pDisplayMemDC->SelectObject(pBitmap);
            pdc->StretchBlt(r.left,r.top+30,r.Width(),r.Height()-30,pDisplayMemDC,
            0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
            pBitmap->DeleteObject();

            ReleaseDC(pdc);
            ReleaseDC(pDisplayMemDC);
            delete pDisplayMemDC;
            delete pBitmap;

            OnCtlColor
            //修改窗口控件背景顏色
            if (nCtlColor == CTLCOLOR_STATIC)
            {
            pDC->SetBkMode(TRANSPARENT);
            pDC->SetTextColor(#dedede);
            pDC->SetBkColor(#383838);
            hbr = CreateSolidBrush(#383838);
            }
            if (nCtlColor == CTLCOLOR_EDIT)
            {
            pDC->SetTextColor(#dedede);
            pDC->SetBkColor(#13344d);
            hbr = CreateSolidBrush(#13344d);
            }
            OnEraseBkgnd
            CRect windowRect;
            GetWindowRect(windowRect);
            ScreenToClient(windowRect);
            pDC->FillSolidRect(windowRect, #383838);
            return TRUE;

            posted @ 2013-03-29 17:30 盛勝 閱讀(437) | 評(píng)論 (0)編輯 收藏

            if (PathFileExists(path))
            {
            CString tempStr;
            tempStr.Format("shell32.dll,OpenAs_RunDLL %s",path);
            int isError=(int)ShellExecute(NULL, "open", "rundll32.exe ", tempStr, "", SW_SHOW);
            if (isError<32)
            {
            MessageBox("相應(yīng)文件打開(kāi)失敗","提示");
            }
            }
            else
            {
            MessageBox("文件路徑有誤!");
            }

            posted @ 2013-03-29 17:26 盛勝 閱讀(261) | 評(píng)論 (0)編輯 收藏

            關(guān)閉
            SendMessage(WM_SYSCOMMAND, SC_CLOSE);
            最小化
            SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
            最大化
            SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE);
            恢復(fù)原來(lái)大小
            SendMessage(WM_SYSCOMMAND, SC_RESTORE);
            對(duì)話框接受拖動(dòng)
            PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));


            B00L PostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);
            hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含義的兩個(gè)值:
                    HWND_BROADCAST:消息被寄送到系統(tǒng)的所有頂層窗口,包括無(wú)效或不可見(jiàn)的非自身?yè)碛械拇翱凇?nbsp; 被覆蓋的窗口和彈出式窗口。消息不被寄送到子窗口
                    NULL:此函數(shù)的操作和調(diào)用參數(shù)dwThread設(shè)置為當(dāng)前線程的標(biāo)識(shí)符PostThreadMessage函數(shù)一樣
                    Msg:指定被寄送的消息。
            wParam:指定附加的消息特定的信息。
            IParam:指定附加的消息特定的信息。
            返回值:如果函數(shù)調(diào)用成功,返回非零值:如果函數(shù)調(diào)用失敗,返回值是零。若想獲得更多的錯(cuò)誤信息,請(qǐng)調(diào)用GetLastError函數(shù)。

            posted @ 2013-03-29 16:58 盛勝 閱讀(453) | 評(píng)論 (0)編輯 收藏

            2013年3月26日

            SELECT COUNT(1) AS RecordNum FROM (SELECT MonitoryPointID FROM casedatarel WHERE 1=1 AND Type = 1 GROUP BY MonitoryPointID)a

            posted @ 2013-03-26 14:16 盛勝 閱讀(427) | 評(píng)論 (0)編輯 收藏

            2013年3月25日

            在VC中,也常常為一些圖片按鈕添加一些功能提示。
            下面講解實(shí)現(xiàn)過(guò)程:
            該功能的實(shí)現(xiàn)主要是用CToolTipCtrl類(lèi)。該類(lèi)在VC  msdn中有詳細(xì)說(shuō)明。
            首先在對(duì)話框的頭文件中加入初始化語(yǔ)句:public:下,加入:CToolTipCtrl    m_Mytip;
            然后在初始化對(duì)話框函數(shù)中加入:
            m_Mytip.Create(this);  
            m_Mytip.AddTool( GetDlgItem(IDC_BUTTON), "你想要添加的提示信息" ); //IDC_BUTTON為你要添加提示信息的按鈕的ID
            m_Mytip.SetDelayTime(200); //設(shè)置延遲
            m_Mytip.SetTipTextColor( #0000ff ); //設(shè)置提示文本的顏色
            m_Mytip.SetTipBkColor( #ffffff); //設(shè)置提示框的背景顏色
            m_Mytip.Activate(TRUE); //設(shè)置是否啟用提示

            然后在類(lèi)向?qū)е刑砑覲reTranslateMessage消息響應(yīng)函數(shù)
            BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
            {
            // TODO: Add your specialized code here and/or call the base class
              if(pMsg->message==WM_MOUSEMOVE)
              m_Mytip.RelayEvent(pMsg);
            return CDialog::PreTranslateMessage(pMsg);
            }
            注:如果要為多個(gè)按鈕添加功能提示只需在
            m_Mytip.AddTool( GetDlgItem(IDC_BUTTON), "你想要添加的提示信息" );
            的下面再加上類(lèi)似語(yǔ)句,如
            m_Mytip.AddTool( GetDlgItem(IDC_BUTTON1), "你想要添加的提示信息1" );
            m_Mytip.AddTool( GetDlgItem(IDC_BUTTON2), "你想要添加的提示信息2" );
            。。。。。。。。


            例子:

            聲明:
            CToolTipCtrl m_Tip;

            初始化:
            BOOL C***Dlg::OnInitDialog()
            {
            省略部分。。。。。。。。。。
            //按鈕浮動(dòng)提示
            m_Tip.Create(this);
            m_Tip.AddTool(&m_BtnPlay,"播放");
            m_Tip.SetDelayTime(100);
            m_Tip.Activate(TRUE);
            }
            類(lèi)視圖中重寫(xiě):
            BOOL C****Dlg::PreTranslateMessage(MSG* pMsg)
            {
            // TODO: 在此添加專(zhuān)用代碼和/或調(diào)用基類(lèi)
            m_Tip.RelayEvent(pMsg);
            }

            posted @ 2013-03-25 09:25 盛勝 閱讀(759) | 評(píng)論 (0)編輯 收藏

            久久久国产精华液| 久久亚洲AV成人无码| 日本人妻丰满熟妇久久久久久| 91久久精品国产91性色也| 久久久精品人妻一区二区三区蜜桃 | 免费无码国产欧美久久18| 久久这里有精品视频| 久久99精品国产麻豆婷婷| 国产精品永久久久久久久久久| 中文字幕亚洲综合久久| 久久国产精品久久久| 久久久91精品国产一区二区三区| 成人免费网站久久久| 国产精品久久一区二区三区| 欧美亚洲国产精品久久蜜芽| 99久久国产综合精品五月天喷水| 亚洲一区二区三区日本久久九| 亚洲综合精品香蕉久久网97 | 久久精品国产一区二区电影| 九九久久精品无码专区| 久久久久久久久久免免费精品 | 国产成人精品久久| 久久亚洲中文字幕精品有坂深雪 | 91久久精品91久久性色| 99国产精品久久久久久久成人热| 久久99精品久久久久久| 久久久久无码精品| 一本色道久久综合狠狠躁篇| 久久精品中文无码资源站| 婷婷五月深深久久精品| 曰曰摸天天摸人人看久久久| 久久国产香蕉视频| 久久亚洲精品国产精品| 久久国产美女免费观看精品 | 久久99精品国产99久久6男男| 精品久久久久久久久久中文字幕| 久久只这里是精品66| 99国产精品久久| 国产精品久久久久久久人人看| 国产产无码乱码精品久久鸭 | 中文字幕乱码人妻无码久久|