国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C++ > 正文

C++ Builder開發(fā)經(jīng)驗(yàn)幾則 

2019-09-06 23:34:02
字體:
供稿:網(wǎng)友

                        Borland C++ Builder 是Inprise公司繼Delphi之后推出的又一激情之作,它使得C++的可視化編程真正成為了可能,這就為那些既不忍心放棄自己心愛的C++語言,又十分向往Windows平臺下RAD編程的程序員們提供了一個(gè)近乎于完美的解決方案。其中堅(jiān)版本Borland C++ Builder 3.0更是一優(yōu)秀的全能型的開發(fā)工具。從開發(fā)功能上來說,其功能和現(xiàn)在如日中天的Microsoft的Visual C++相比不相上下,而從易用性方面來說,其易用性則要大大優(yōu)于前者,正因?yàn)槿绱耍訠orland C++ Builder3.0在國內(nèi)也逐漸得到了一些程序員的認(rèn)同。但是Borland C++ Builder在國內(nèi)的應(yīng)用情況還遠(yuǎn)不及它的同門師兄Delphi一樣普及,所以相對來說Borland C++ Builder3.0的參考資料也比較少。在這里筆者把自己這一年來使用Borland C++ Builder 3.0所總結(jié)出來的經(jīng)驗(yàn)?zāi)贸鰩讞l來與大家共饗,只希望能對你在編程時(shí)有一定的幫助,讓你少走一些彎路。

  1.全局變量的定義

  這個(gè)問題在標(biāo)準(zhǔn)的C/C++編程領(lǐng)域可以說根本不能算是一個(gè)問題,但是在Borland C++Builder3.0中卻有些不同。當(dāng)一個(gè)程序包含一個(gè)定義在獨(dú)立頭文件中的全局變量時(shí),程序編譯將會(huì)很順利地通過,但是在程序鏈接時(shí)則會(huì)出現(xiàn)找不到全局變量目標(biāo)模塊的錯(cuò)誤。這個(gè)問題曾令包括筆者在內(nèi)的很多Borland C++ Builder 程序員感到困惑。直到前不久,我才找到了問題出現(xiàn)的原因和解決問題的方法。
  在Borland C++ Builder 3.0中對全局變量的定義采用了定義函數(shù)一樣的方式,即全局變量不僅要有聲明部分,還要有實(shí)例定義部分。只有這樣定義過的全局變量在使用時(shí)才不會(huì)出錯(cuò)。
  以下舉例說明,在程序中要定義一個(gè)全局整型變量i,它的聲明部分寫在Struct.H頭文件中,如下所示:
  #ifndef StructH
  #define StructH
  #include //此行必須加上
  //------------------
  extern int i;//此處為全局變量i的聲明
  //-------------------
  #endif
  而它的實(shí)例定義部分則應(yīng)該寫在Struct.cpp文件中,具體如下:
  //------------------
  #include “struct.h”
  #pragma package(smart_init)//此行必須加上。
  //------------------
  int i;//此處為全局變量i的實(shí)例定義
  //-------------------
  只有經(jīng)過以上處理后,在程序中使用自定義全局變量時(shí)才不會(huì)出錯(cuò)。

  2.使同一個(gè)元件的Hint在StatusBar中與動(dòng)態(tài)提示時(shí)有不同的顯示內(nèi)容

  這是我在閱讀VCL源碼時(shí)無意中發(fā)現(xiàn)的。雖然是一個(gè)小技巧,但是卻很是實(shí)用,以下具體舉例說明:
  ⑴:在Borland C++ Builder 3.0中新建一個(gè)項(xiàng)目,然后在窗口中加入一個(gè)Button元件和一個(gè)StatusBar元件,并在對象檢器中將Button元件的ShowHint屬性和StatusBar元件的SimplePanel屬性值都置為true。
  ⑵:將Button元件的Hint屬性置為“這是一個(gè)按鈕的提示信息|這是在提示行上顯示的信息”。
  ⑶:在窗口頭文件的窗口類中定義一個(gè)函數(shù)原型如下:
  void __fastcall DisplayHint(TObject *Sender);
  然后在CPP文件中編寫這個(gè)函數(shù)的代碼如下:
  void __fastcall TForm1::DisplayHint(TObject *Sender)
  {
   StatusBar1->SimpleText=GetLongHint(Application->Hint);
   //應(yīng)用程序在顯示動(dòng)態(tài)提示信息時(shí),只會(huì)顯示“|"以前的部分,而想要顯示“|"以后的部分就只有通過調(diào)用GetLongHint函數(shù)來實(shí)現(xiàn)了。
  }
  ⑷:最后再在窗口的構(gòu)造函數(shù)中加入以下一行代碼:
   Application->OnHint=DisplayHint;
  ⑸:保存并編譯項(xiàng)目后運(yùn)行程序。
  這時(shí)你會(huì)發(fā)現(xiàn),當(dāng)你把鼠標(biāo)移到Button上時(shí),Button上所顯示的動(dòng)態(tài)提示信息和StatusBar上所顯示的提示信息是不同的。
  下面附送一個(gè)為整個(gè)應(yīng)用程序安裝動(dòng)態(tài)提示的程序段。它摘自我正在開發(fā)的一個(gè)應(yīng)用程序:
  void __fastcall TForm1::DisplayHint(TObject *Sender)
  {
   // 先對已經(jīng)存在窗口的Tag屬性賦值,然后再通過判斷當(dāng)前窗口的方法來進(jìn)行動(dòng)態(tài)提示。
   //如果將建的窗口也需要?jiǎng)討B(tài)提示的話,那么可先給窗口的Tag屬性賦值,然后再將判斷這個(gè)Tag屬性的代碼加入到下面的switch語句中。
   switch(Screen->ActiveForm->Tag)
   {
   case 1 :DFSStatusBar1->Panels->Items[1]->Text=GetLongHint(Application->Hint);break;
   case 5 :Form5->StatusBar1->SimpleText=GetLongHint(Application->Hint);break;
   case 8 :Form8->StatusBar1->SimpleText=GetLongHint(Application->Hint);break;
   case 11:Form11->StatusBar1->SimpleText=GetLongHint(Application->Hint);break;
   }
  }

  3.如何使DateToStr函數(shù)轉(zhuǎn)換后的結(jié)果為長格式的日期字符串

  這是我在實(shí)際開發(fā)過程中遇到的一個(gè)問題。當(dāng)我把TDateTimePicker元件的Date屬性通過DateToStr函數(shù)轉(zhuǎn)換后賦給一個(gè)Edit元件的Text屬性時(shí),Text得到的日期字符串?dāng)?shù)據(jù)只是以yy-mm-dd格式表示的短格式日期字符串?dāng)?shù)據(jù)。千年蟲!眼看就要到二千年了,這怎么能行。本來我想用判斷字符串的辦法來解決這個(gè)問題,但是后來經(jīng)過深入思考后發(fā)現(xiàn)該方法有很多的弊端。所以只有用一種通用的方法來解決問題了。在這種情況下,我查找了很多的資料,但是很不幸的是,我所查找的資料中沒有一個(gè)提到解決這個(gè)問題的方法。無奈之下我打開了Borland C++ Builder 3.0的幫助文件,查看了所有關(guān)于日期的幫助信息。此招果然有效,在幫助文件中我找到了一組用于日期顯示的外部變量,其中有兩個(gè)AnsiString型變量,它們分別是ShortDateFormat和LongDateFormat。從它們的名稱就可以看出,它們是用來存儲(chǔ)短日期格式和長日期格式的。當(dāng)時(shí)靈機(jī)一動(dòng),想通過修改這兩個(gè)變量值的方法來解決問題,于是當(dāng)即寫了一段代碼并運(yùn)行之,才發(fā)現(xiàn)我的想法是可行的。具體代碼段如下:
  void __fastcall TForm7::WriteLongDate(void)
  {
   AnsiString temp=ShortDateFormat;
   ShortDateFormat=LongDateFormat;
   Edit1->Text=DateToStr(DateTimePicker1->Date);
   ShortDateFormat=temp;
  }
  該程序段先保存短日期格式變量,然后將長日期格式變量賦給短日期格式變量,這樣做后就使得當(dāng)前的短日期格式和長日期格式的表示方式相同了。接下來使用日期轉(zhuǎn)字符串函數(shù)DataToStr來將日期數(shù)據(jù)轉(zhuǎn)換為AnsiString型數(shù)據(jù),轉(zhuǎn)換后的AnsiString就已經(jīng)變成了長格式的日期數(shù)據(jù)。最后將先前保存的短日期格式變量恢復(fù)一下即可。就這樣,問題被很好地解決了。同理,如果將長格式日期字符串轉(zhuǎn)換為短格式日期數(shù)據(jù),也可以使用上述方法,只不過要將上面賦值的順序反過來即可。

  4.程序在編譯鏈接時(shí)提示找不到某某文件應(yīng)該怎么辦?

  這是一個(gè)實(shí)際編程工作中經(jīng)常遇到的問題。造成這個(gè)問題的原因很多,很難一一介紹,所以我在這里只向大家介紹幾個(gè)造成這個(gè)問題的典型原因,以及其解決方法。希望能對你在解決這個(gè)問題時(shí)起到拋磚引玉的作用。
  ⑴:編譯器找不到存在的文件。
  這個(gè)問題經(jīng)常出現(xiàn)在編譯添加新元件的應(yīng)用程序時(shí)。其原因在于項(xiàng)目文件的搜索路徑中并沒有這個(gè)新元件所在路徑的信息。這個(gè)問題解決起來比較簡單,只需打開Project/Options菜單,在彈出的“選擇”窗口中選擇“Directories/Conditionals"標(biāo)簽頁,然后將新元件的路徑信息添加到包含路徑(Include Path)和庫文件路徑(Library Path)中即可。
  ⑵:編譯器要找不存在的文件情況之一
  也許你在編程中有過這樣的遭遇,當(dāng)你編譯并鏈接一個(gè)新的程序時(shí),編譯程序竟然會(huì)告訴你,需要你已經(jīng)卸載了的元件參加編譯。不知道你當(dāng)時(shí)的感覺怎么樣,反正,當(dāng)我還不知道這個(gè)問題解決辦法的時(shí)候,它總給我一種死去的元件陰魂不散的感覺。其實(shí)造成這個(gè)問題的原因是由于新元件在安裝時(shí)要將其庫文件的信息添加到缺省項(xiàng)目文件中的“編譯鏈接所需庫文件”部分,而元件在卸載時(shí)又不能自動(dòng)將其刪除。這就使得以后所有新建的項(xiàng)目在編譯鏈接時(shí)都需要使用這些庫文件。為了解決這個(gè)問題,我們就只有對缺省項(xiàng)目文件進(jìn)行編輯了。進(jìn)入Borland C++ Builder 3.0的BIN目錄下,你可以找到一個(gè)叫做DEFAULT.BPR的項(xiàng)目文件,這個(gè)文件就是缺省項(xiàng)目文件,即所有新建項(xiàng)目文件的父本。打開這個(gè)文件后,找到SPARELIBS段,將“死去元件”的“陰魂”Kill掉,即可永絕后患了。
  ⑶:編譯器要找不存在的文件情況之二
  這種情況的出現(xiàn)還是與新元件的安裝有關(guān)。當(dāng)你在安裝一些有源碼的Delphi元件時(shí),有可能遇到這樣的情況:編譯器告訴你找不到某某文件,使得挺好的一個(gè)元件就是無法使用。其實(shí)這個(gè)問題的出現(xiàn)多半是由于元件源碼中的一些判斷Delphi版本的預(yù)編譯信息所造成的。由于Delphi的不同版本之間都有著一定的差異,所以很多Delphi元件為了增強(qiáng)自己的可移植性都在元件的源碼中加入了判斷Delphi版本的預(yù)編譯信息。然而Borland C++ Builder 3.0的Delphi編譯器對這些Delphi版本的信息支持并不是很好,這就造成了Borland C++ Builder 3.0在編譯這些元件時(shí)通常是“胡子眉毛一把抓”,自然會(huì)出錯(cuò)(值得注意的是,在編譯Delphi元件時(shí)的很多其它編譯錯(cuò)誤也是由于這個(gè)原因所造成的)。這時(shí)我們就只有使用手工刪除這些不需要的預(yù)編譯信息(一般為{$IFDEF中的內(nèi)容)的方法來解決這個(gè)問題了。
  ⑷:編譯器要找不存在的文件情況之三
  有一次一個(gè)從BC++轉(zhuǎn)到Borland C++ Builder 3.0的朋友給我打電話問我,說他一時(shí)間動(dòng)了懷舊的情緒,使用Borland C++ Builder 3.0編譯了一個(gè)OWL程序。但是在編譯時(shí)編譯器卻提示找不到OWL所需要的類庫文件,問我這是為什么。當(dāng)即我便回答了他,告訴他Borland C++ Builder 3.0的默認(rèn)安裝將不安裝對OWL和MFC的支持庫(這在Borland C++ Builder 3.0安裝程序的安裝類型界面中已經(jīng)寫得很明白了,只不過是英文的,他沒有注意看罷了。)。如果需要這些東西的話,就只有在安裝時(shí)選擇定制安裝或完全安裝來安裝對其的支持了。如果你也遇到了以上的問題,那么請你照我上面所說的話去做吧。

   5 動(dòng)態(tài)調(diào)用窗體Form

   在缺省情況下,由File/NewForm生成添加入項(xiàng)目文件中的窗體都具有"AutoCreate"(自動(dòng)創(chuàng)建)的特性。即只要程序運(yùn)行,該窗體就存在于內(nèi)存中了,不管當(dāng)前它是否被調(diào)用。具有這種特性的窗體一般適用于窗體屬性比較固定、經(jīng)常被調(diào)用的情況。其優(yōu)點(diǎn)是速度快,缺點(diǎn)是占用內(nèi)存。在實(shí)際程序設(shè)計(jì)中,會(huì)遇見大量類似對話框功能的窗體,它們用于顯示狀態(tài)或輸入信息,僅須在程序中調(diào)用一下,完成其功能就行了,無需常駐內(nèi)存。這時(shí)可以通過選擇Project/Options/Forms,將"Auto--Createforms"欄中相應(yīng)的窗體,如Form1,用">"鍵移動(dòng)到"Availableforms"欄中,并在程序需調(diào)用該窗體處,加入下列語句:
TForm1 *myform=newTForm1(this);
myform->ShowModal();
deletemyform;
 
  6 用Enter鍵控制焦點(diǎn)切換的方法

   在Windows環(huán)境下,要使一個(gè)控件取得焦點(diǎn),可在該控件上用鼠標(biāo)單擊一下,或按Tab鍵將焦點(diǎn)移至該控件上。這種控制焦點(diǎn)切換的方法有時(shí)不符合用戶的習(xí)慣。就圖一而言,用戶就希望用Enter鍵,控制焦點(diǎn)由Edit1切換到Edit2。要實(shí)現(xiàn)這樣的功能需借助WinAPI函數(shù)SendMessage來完成。方法是:先設(shè)Form1的KeyPreview屬性為true,然后在Form1的OnKeyPress事件中加入如下的代碼。這樣,用戶就可以通過按Enter,鍵控制焦點(diǎn)按定義好的Taborder順序來移動(dòng)了!

void__fastcallTForm1::

FormKeyPress(TObject*Sender,char&Key)
{
if(Key==VK_RETURN)
  {
  SendMessage(this->Handle,WM_NEXTDLGCTL,0,0);
  Key=0;
  }
}


  7 為TStringGrid的文字加上顏色

TStringGrid是C++Builder提供給用戶的一種字符網(wǎng)格控件。美中不足的是,它沒有提供分別修改各單元字體顏色、大小的方法。其實(shí)要為TStringGrid實(shí)現(xiàn)這樣功能,只需在程序中稍加處理就行了。方法是自定義一個(gè)二維數(shù)組cellbuf,它的下標(biāo)與網(wǎng)格單元列行一一對應(yīng),用于存放各網(wǎng)格單元的顏色、文字等信息。

structCellStru

{

AnsiStringmsg; //文字信息

TColorcolor; //文字顏色

};

CellStrucellbuf[MAXCOL][MAXROW];


----初始化cellbuf后,再在字符網(wǎng)格控件StringGrid1的OnDrawCell響應(yīng)事件中,加入如下的代碼即可。

void__fastcallTForm1::StringGrid1DrawCell

(TObject*Sender,intCol,

intRow,TRect&Rect,TGridDrawStateState)

{

StringGrid1->Canvas->Font->

Color=cellbuf[Col][Row].color;

StringGrid1->Canvas->TextOut(Rect.Left+3,

Rect.Top+3,cellbuf[Col][Row].msg);

}


 8 軟件封面的實(shí)現(xiàn)

----現(xiàn)代軟件設(shè)計(jì)的流行做法是,在程序運(yùn)行完成初始化之前,先調(diào)用一幅畫面做為封面,通常是1/4屏幕大小,顯示一下軟件的名稱、作者、版本等信息。要用C++Builder實(shí)現(xiàn)這樣的功能,方法很簡單:①自定義一窗體類TSplashForm,將其設(shè)置成"透明窗口",即BorderIcons下的所有選項(xiàng)均置成false,BorderStyle=bsNone,F(xiàn)ormStyle=fsStayOnTop,Position=poScreenCenter;②在TSplashForm窗體上放置一TPanel(相當(dāng)于圖形的鏡框);③在TPanel上放置一TImage控件,調(diào)入所需要的圖形;④對WinMain函數(shù)稍加修改,加入如下所示代碼即可。需要指出的是,這段代碼通過函數(shù)FindWindow,搜索內(nèi)存中是否有窗口標(biāo)題為"Demo"應(yīng)用程序存在,若存在,則退出程序的運(yùn)行。該功能可防止程序的再次運(yùn)行。在某些場合這樣設(shè)計(jì)是必須的。

WINAPIWinMain(HINSTANCE,HINSTANCE,LPSTR,int)

{

try

{

if(FindWindow(NULL,"Demo")!=0)

{

Application->MessageBox

("程序已經(jīng)運(yùn)行!","警告",MB_ICONSTOP);

return0;

}



TSplashForm*splash=newTSplashForm(Application);

splash->Show();

splash->Update();



Application->Initialize();

Application->CreateForm(__classid(TForm1),&Form1);



splash->Close();

deletesplash;



Application->Run();

}

catch(Exception&exception)

{

Application->ShowException(&exception);

}

return0;

}


9 如何永久清除DBF中的已被刪除的記錄

----用table->Delete()刪除的DBF記錄,并沒有真正從DBF數(shù)據(jù)庫中被刪除,而僅僅是做上了一個(gè)刪除標(biāo)記。如何實(shí)現(xiàn)類似dBase中的Pack命令的功能呢?請看下面的代碼。

table->Close();

for(;;)

try

{

table->Exclusive=true;

table->Open();

break;

}

catch(...)

{

}



if(DbiPackTable(table->DBHandle,table->Handle,NULL,szDBASE,true)!=DBIERR_NONE)

Application->MessageBox("不能刪除記錄","錯(cuò)誤",MB_ICONSTOP);

  最后再說一種最糟的情況。由于你的某種誤操作,造成了某些編譯器在編譯時(shí)所需要文件被誤刪除。這時(shí)你唯一的解決方法就只有從Borland C++ Builder 3.0的光盤上將你所需要的文件直接拷貝過來。如果你的Borland C++ Builder 3.0只是一個(gè)安裝版的話,那么你也就只好準(zhǔn)備一杯清茶或一杯咖啡,在重新安裝Borland C++ Builder 3.0時(shí)慢慢品味了。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产三区视频在线观看| 天天插天天射| 久艹在线视频| 久久精品视频观看| 国产男女av| 国产欧美日韩精品综合| 国产区视频在线| 国产黄色免费在线观看| 国产精品186在线观看在线播放| 中文字幕在线视频不卡| 国产精品视频一区二区免费不卡| 尤物视频在线免费观看| 国产青草视频在线观看视频| 在线看黄色av| 国产美女视频一区二区二三区| 国产视频青青| www.操操操.com| 国产一区精品| 四虎a级欧美在线观看| 国产美女视频一区二区三区| av免费在线一区二区三区| 国产永久免费高清在线观看| 国产福利在线观看| 另类视频在线| av超碰在线| 国产一二三在线观看| 日本国产在线| 在线一区观看| 国产精品18久久久久网站| 美女网站在线观看| av网址在线看| 在线天堂中文www视软件| 天堂在线免费观看| 免费看ww视频网站入口| av免费在线观看网站| 91精选福利| 国产黄色免费网| 国产大学生粉嫩无套流白浆| 超碰在线网站| 日本视频一二三区中文字幕| 18成年在线观看| 国产日韩精品在线看| 黄色av免费在线| www.色婷婷| 亚洲精品影视在线| 永久免费网站在线| 在线中文视频| 香蕉视频网站在线播放| eeuss在线观看| www久久日com| 成年人在线观看| 狠狠操视频网| 国产一区二区三区四区尤物| 麻豆国产在线播放| 成人欧美亚洲| 最新中文字幕av专区| 99色在线视频| 国产成人亚洲精品播放器下载| 日本中文字幕在线2020| 国产精品秘入口| av二区三区| 日本亚洲精品| 日本中文字幕在线看| 国产porny蝌蚪视频| 亚洲人成电影| 成人欧美亚洲| 在线中文av| 黄色av免费在线| 国产一卡2卡3卡4卡网站免费| 中文字幕不卡免费视频| 97一区二区三区| 久蕉依人在线视频| 国产一区二区三区美女秒播 | 中文字幕免费中文| 国产第一页在线| а√最新版在线天堂| 中文字幕亚洲免费| 免费在线黄色网址| 91视频黄色| 福利视频在线导航| 夜夜嗨yeyeh| 中文字幕一区免费| 欧美xxxxx性| 91最新在线| 国产三级免费观看| 久色视频在线观看| 亚洲精品在线视频免费| 国产精品久久久久一区二区国产| www.91在线播放| 91中文字幕| 国产黄色免费电影| 国产免费麻豆视频| 狠狠干五月天| 天天激情综合| www555久久| 四虎成人免费观看在线网址| 国产激情视频一区二区| 黄色国产在线| 久久er视频| 麻豆网站在线| 狠狠干天天干| 欧美黑人乱大交ⅹxxxxx| av影视在线看| 一本大道香蕉久久| 樱花草在线观看www| 伊人狠狠av| 中文av字幕| av在线不卡网站| 青青草免费在线视频| www.夜夜操| 黄色av网站在线免费观看| h网站免费在线观看| 亚洲综合在线网| 阿v免费在线观看| 狠狠插狠狠操| 国产精品人人爱一区二区白浆| 国产美女一区视频| 国产精品666| 在线看a视频| 国产真实伦在线观看| 国产在线看片| 国产丝袜自拍| 亚洲字幕成人中文在线观看| 久久精品免视着国产成人| 国产精品亚洲色图| 国产黄色网页| av丝袜在线| 九色成人在线| 国产福利在线播放| 白浆爆出在线观看| 国产天堂av| 六月天色婷婷| 91极品在线| 女人色在线免费视频| 日本中文字幕高清视频| 亚洲一本大道| 国产黄在线播放| 超碰在线影院| 在线免费看黄网站| 中文字幕有码在线视频| www.夜夜操| 精品乱码一区二区三四区视频| 午夜亚洲成人| 91在线超碰| 国产精品入口麻豆高清| 非洲黑人最猛性xxxx交| www.操.com| 亚洲第一区视频| 精品入口蜜桃| 国产导航在线| 国产激情视频一区二区三区| 国产尤物视频在线| 久久久久久久久久久久久91| 亚洲视频精品在线观看| 99久久99久久免费精品小说| 国产午夜视频在线观看| 九九热视频免费观看| av大片在线播放| 91视频久色| 精品视频在线一区二区| 国产日本在线| 国产精品剧情一区二区在线观看 | 中文字幕在线免费| 国产永久在线观看| 黄色片视频在线观看| 国产在线观看色| av在线网页| 欧美大交乱xxxx| 超碰免费在线播放| 黄网址在线播放免费| 美女国产在线| 九九热视频免费在线观看| 麻豆精品不卡国产免费看| 蜜桃av网站| 最好看更新中文字幕| 最近中文字幕mv免费高清在线| 最近中文字幕在线中文视频| 天天操天天是| 国产精品冒白浆免费视频| 国产人成在线视频| 91在线最新| 亚洲天堂电影在线观看| a视频在线观看免费| 日本免费一二区| 国产美女视频网站| 91这里只有精品| 狂野欧美性猛交xxxx乱大交| 最新天堂资源在线| av在线免费播放网站| 天天av综合网| 在线播放www| 成年网在线观看免费观看网址| 国产精品蜜臀| 青青青国产视频| 国产精品yjizz视频网一二区| 99免费视频| 国产理论电影在线| 在线āv视频| 国产精品剧情一区二区在线观看| jizz在线视频|