日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

滚动条详解

發(fā)布時(shí)間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 滚动条详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)上一天學(xué)習(xí)的回顧:

  1>.??TextOut函數(shù)的使用

    TextOut函數(shù)的作用是使用系統(tǒng)當(dāng)前選擇的字體、背景顏色以及正文顏色將一個(gè)字符串輸出到指定位置,?函數(shù)原型:

  BOOL TextOut(HDC hdc, //設(shè)備環(huán)境句柄int nXStart, //字符串開始輸出的x坐標(biāo)int nYStart, // 字符串開始輸出的y坐標(biāo) LPCTSTR lpString, //需要輸出的字符串int cbString // 字符串的長度);

    當(dāng)函數(shù)調(diào)用成功時(shí)返回一個(gè)非零的值,?調(diào)用失敗時(shí),?返回值為0。

?

  2>.?取得當(dāng)前系統(tǒng)字體信息:

    使用GetTextMetrics函數(shù)可以取得當(dāng)前字體信息,?函數(shù)原型如下:

  BOOL GetTextMetrics(HDC hdc, // 設(shè)備環(huán)境句柄LPTEXTMETRIC lptm     // 指向一個(gè)TEXTMETRIC結(jié)構(gòu)的指針, 該結(jié)構(gòu)用于存放字體信息。 );

    參數(shù)二LPTEXTMETRIC指向TEXTMETRIC結(jié)構(gòu),?在函數(shù)調(diào)用成功時(shí),?函數(shù)將系統(tǒng)當(dāng)前字體的各種信息復(fù)制到TEXTMETRIC結(jié)構(gòu)中。

?

?

Windows滾動(dòng)條介紹

  滾動(dòng)條由滾動(dòng)滑塊以及兩端的滾動(dòng)箭頭組成,?滾動(dòng)條的作用是當(dāng)需要顯示的內(nèi)容超過窗口客戶區(qū)大小時(shí)提供上下/左右的翻頁使用戶能夠完整的閱讀顯示信息,?滾動(dòng)條的圖示:

?

?

滾動(dòng)條理論基礎(chǔ)

  1>.?上下滾動(dòng)?

    以垂直方向的滾動(dòng)條為例,?當(dāng)用戶向下滾動(dòng)滾動(dòng)條時(shí)目的是想看到下方更多的的信息,?因此我們需要將下方的信息顯示出來,?如何顯示更多的信息?

    解決方案:?將不需要被顯示的信息顯示到客戶區(qū)外,?令信息自動(dòng)被Windows截掉,?圖示說明:

?

    由圖示看出,?當(dāng)用戶向下翻動(dòng)滾動(dòng)條實(shí)際上我們是將起始輸出部分的y坐標(biāo)設(shè)為負(fù)數(shù),?使已經(jīng)顯示過的信息輸出到客戶區(qū)的上部,?我們知道,?輸出到客戶區(qū)外部的信息會(huì)被Windows自動(dòng)截掉,?所以用戶不會(huì)再次看到已經(jīng)顯示過的信息,?取而代之的就是下方等待顯示的信息,?上翻以及左右翻動(dòng)的顯示思路與下翻相同,?不再介紹。

?

  2>.?如何創(chuàng)建一個(gè)帶有滾動(dòng)條的窗口?

     創(chuàng)建帶有水平/垂直的滾動(dòng)條的窗口十分簡單,?在CreateWindow函數(shù)中說明下即可,?CreateWindow函數(shù)的原型回顧:

  HWND CreateWindow(LPCTSTR lpClassName, //窗口類名稱LPCTSTR lpWindowName, //窗口標(biāo)題DWORD dwStyle, //窗口樣式int x, //窗口初始x坐標(biāo)int y, //窗口初始y坐標(biāo)int nWidth, //窗口初始x方向尺寸int nHeight, //窗口初始y方向尺寸HWND hWndParent, //父窗口句柄HMENU hMenu, //窗口菜單句柄HANDLE hlnstance, //程序?qū)嵗浔鶯PVOID lpParam //創(chuàng)建參數(shù));

     要窗口帶有滾動(dòng)條的窗口, 只需要在第三個(gè)參數(shù)

   DWORD dwStyle, //窗口樣式

   ?  也就是在窗口樣式的屬性中使用位或(?|?)運(yùn)算對(duì)相關(guān)的標(biāo)識(shí)符進(jìn)行組合即可得到一個(gè)帶有垂直/水平滾動(dòng)條的窗口,

WS_HSCROLL //水平滾動(dòng)條的標(biāo)識(shí)符WS_VSCROLL //垂直滾動(dòng)條的標(biāo)識(shí)符

     例如要?jiǎng)?chuàng)建一個(gè)既含有垂直滾動(dòng)條又含有水平滾動(dòng)條的組合:

    WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL

?

  3>.?對(duì)于滾動(dòng)條,?Windows需要做哪些事?

    當(dāng)帶有滾動(dòng)條的窗口創(chuàng)建好后,?Windows就會(huì)做一些必要的處理來協(xié)助我們更好的使用滾動(dòng)條,?Windows需要做的事情如下:

      1>.?處理滾動(dòng)條中的所有鼠標(biāo)消息;

      2>.?當(dāng)用戶單擊滾動(dòng)條時(shí)提供被單擊部分的輕微閃爍;

      3>.?當(dāng)用戶拖動(dòng)滑塊時(shí)在滾動(dòng)條內(nèi)移動(dòng)滑塊;

      4>.?當(dāng)窗口大小被調(diào)整時(shí),?自動(dòng)調(diào)整滾動(dòng)條的長度;

      5>.?向滾動(dòng)條所在的窗口發(fā)送滾動(dòng)條的相關(guān)消息。

?

?

  4>.?我們要做的事情:

    相對(duì)于系統(tǒng),?我們需要做的事情已經(jīng)較為輕松了,?主要有4項(xiàng)任務(wù):

      1>.?初始化滾動(dòng)條的位置和滾動(dòng)條的范圍;

      2>.?處理系統(tǒng)發(fā)來的消息;

      3>.?根據(jù)發(fā)來的消息重置滑塊的位置;

      4>.?根據(jù)滾動(dòng)條消息重繪客戶區(qū)顯示的內(nèi)容。

?

  5>.?將會(huì)收到哪些滾動(dòng)條消息?

    滾動(dòng)條消息來源同其他消息一樣,?伴隨著wParam與lParam消息機(jī)制,?當(dāng)窗口為父窗口時(shí)消息的來源為wParam,?此時(shí)可忽略lParam的值,?lParam用于子窗口消息。

    wParam參數(shù)分為兩部分,?高位字與低位字,?其中高位字代表用戶松開鼠標(biāo)鍵時(shí)滑塊的最終位置,?低位字上代表鼠標(biāo)在滾動(dòng)條上的動(dòng)作,?以一個(gè)值的形式表現(xiàn)出來,?同樣,?為了方便記憶,?有不同的標(biāo)識(shí)符對(duì)這些值進(jìn)行區(qū)分,?這些標(biāo)識(shí)符定義在WINUSER.H頭文件中,?以SB_開頭,?有關(guān)滾動(dòng)條的消息標(biāo)識(shí)符如下:

#define SB_LINEUP 0 //上翻一個(gè)單位 #define SB_LINELEFT 0 //左翻一個(gè)單位 #define SB_LINEDOWN 1 //下翻一個(gè)單位 #define SB_LINERIGHT 1 //右翻一個(gè)單位 #define SB_PAGEUP 2 //上翻一頁 #define SB_PAGELEFT 2 //左翻一頁 #define SB_PAGEDOWN 3 //下翻一頁 #define SB_PAGERIGHT 3 //右翻一頁 #define SB_THUMBPOSITION 4 //當(dāng)鼠標(biāo)放下滑塊時(shí) #define SB_THUMBTRACK 5 //移動(dòng)滑塊時(shí) #define SB_TOP 6 //滑塊到了頂端 #define SB_LEFT 6 //滑塊到了左端 #define SB_BOTTOM 7 //滑塊到了底端 #define SB_RIGHT 7 //滑塊到了右端 #define SB_ENDSCROLL 8 //釋放鼠標(biāo)

?

  6>.??需要使用到的新函數(shù):

   ?、??SetScrollRange

      SetScrollRange函數(shù)的作用是設(shè)置所指定滾動(dòng)條范圍的最小值和最大值,?其函數(shù)的原型如下:

  BOOL SetScrollRange(HWND hWnd,    //窗口句柄int nBar, //被設(shè)置的滾動(dòng)條類型int nMinPos, //滾動(dòng)條的最小位置int nMaxPos, //滾動(dòng)條的最大位置BOOL bRedraw  //重繪標(biāo)志);

    參數(shù)二int?nBar為被設(shè)置的滾動(dòng)條類型,?SB_HORZ表示該窗口的水平滾動(dòng)條,?SB_VERT表示垂直滾動(dòng)條;

    參數(shù)四BOOL?bRedraw指定滾動(dòng)條是否被重繪以反映變化,?當(dāng)參數(shù)為TRUE,?滾動(dòng)條被重繪,?FALSE則不被重繪。

?

    ②.?SetScrollPos

      SetScrollPos函數(shù)的作用是設(shè)置所指定滾動(dòng)條中的滾動(dòng)按鈕的位置,?函數(shù)原型:

  int SetScrollPos(HWND hWnd,     //窗體句柄int nBar,        //被設(shè)置的滾動(dòng)條類型int nPos,      //滾動(dòng)條的新位置BOOL bRedraw   //重繪標(biāo)志);

?

?

?

實(shí)戰(zhàn)滾動(dòng)條

  下面我們嘗試著輸出一些文字,?使其上下、左右均超過客戶區(qū)的尺寸,?這樣我們就可以實(shí)際練習(xí)下水平滾動(dòng)條以及垂直滾動(dòng)條了,??我們準(zhǔn)備了很多行文字,?筆者也不知道到底有多少行,?而且最長的那行文字有多少個(gè)也不知道,?我們把他放在一個(gè)text.h頭文件中,?并計(jì)算他到底有多少行以及最長的那行有多少字,?由于文字行數(shù)較多,?這里將它在代碼框里折疊顯示,?定義的頭文件如下:

View Code - text.h #include<string.h>

#define NUMLINES ( (int)(sizeof(statement) / sizeof(statement[0]) ) ) //計(jì)算總行數(shù)

TCHAR *statement[] = {
TEXT(“沒有一種不通過蔑視、忍受和奮斗就可以征服的命運(yùn)?!?,
TEXT(“偉人之所以偉大,是因?yàn)樗c別人共處逆境時(shí),別人失去了信心,他卻下決心實(shí)現(xiàn)自己的目標(biāo)?!?,
TEXT(“世上沒有絕望的處境,只有對(duì)處境絕望的人?!?,
TEXT(“當(dāng)你感到悲哀痛苦時(shí),最好是去學(xué)些什么東西。學(xué)習(xí)會(huì)使你永遠(yuǎn)立于不敗之地?!?,
TEXT(“給自己定目標(biāo),一年,兩年,五年,也許你出生不如別人好,通過努力,往往可以改變70%的命運(yùn)。破罐子破摔只能和懦弱做朋友?!?,
TEXT(“知道自己要干什么,夜深人靜,問問自己,將來的打算,并朝著那個(gè)方向去實(shí)現(xiàn)。而不是無所事事和做一些無謂的事?!?,
TEXT(“夢想無論怎么模糊,它總潛伏在我們心底,使我們的心境永遠(yuǎn)得不到寧靜,直到夢想成為事實(shí)?!?,
TEXT(“夢是一種欲望,想是一種行動(dòng)。夢想是夢與想的結(jié)晶。”),
TEXT(“生氣,就是拿別人的過錯(cuò)來懲罰自己。原諒別人,就是善待自己。”),
TEXT(“一個(gè)實(shí)現(xiàn)夢想的人,就是一個(gè)成功的人?!?,
TEXT(“大事堅(jiān)持原則,小事學(xué)會(huì)變通。”),
TEXT(“一個(gè)人有錢沒錢不一定,但如果這個(gè)人沒有了夢想,這個(gè)人窮定了?!?,
TEXT(“不要急于表態(tài)不急于表態(tài)或發(fā)表意見,可以使人對(duì)你揣摸猜測。謹(jǐn)慎的沉默是精明人的幫手。一旦表態(tài),你的決定就容易受到批評(píng)和非議。如果這些決定是以失敗告終,你就會(huì)更加倒霉。”),
TEXT(“平凡樸實(shí)的夢想,我們用那唯一的堅(jiān)持信念去支撐那夢想。”),
TEXT(“不要總談?wù)撟约耗闳艨偸钦務(wù)撟约?#xff0c;那么不是吹噓自己,就是貶低自己;前者是虛榮的表現(xiàn),后者是卑微的表現(xiàn)?!?,
TEXT(“千萬不要抱怨,抱怨會(huì)使你丟丑。抱怨會(huì)使人對(duì)你傲慢無禮,并促使別人如你所抱怨的那么做。要贏得別人的幫助,最好的辦法是表揚(yáng)他人。”),
TEXT(“凡事終了時(shí)務(wù)必小心謹(jǐn)慎,順利抽身退出要比順利地進(jìn)入時(shí)更難。”),
TEXT(“很難說什么是辦不到的事情,因?yàn)樽蛱斓膲粝?#xff0c;可以是今天的希望,并且還可以成為明天的現(xiàn)實(shí)。”),
TEXT(“當(dāng)你再也沒有什么可以失去的時(shí)候,就是你開始得到的時(shí)候?!?,
TEXT(“生命猶如一片綠葉,隨著時(shí)間的流逝,慢慢變的枯黃,但他的葉脈還是那么清晰可見。”),
TEXT(“我們可以躲開大家,卻躲不開一只蒼蠅。生活中使我們不快樂的常是一些芝麻小事?!?,
TEXT(“人生的意義不在于拿一手好牌,而在于打好一手壞牌。”),
TEXT(“一個(gè)人想平庸,阻攔者很少;一個(gè)人想出眾,阻攔者很多。不少平庸者與周圍人關(guān)系融洽,不少出眾者與周圍人關(guān)系緊張?!?,
TEXT("“危機(jī)”兩個(gè)字,一個(gè)意味著危險(xiǎn),另外一個(gè)意味著機(jī)會(huì),不要放棄任何一次努力。"),
TEXT(“世上沒有絕望的處境,只有對(duì)處境絕望的人。”),
TEXT(“再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達(dá)。”),
TEXT(“有志者自有千計(jì)萬計(jì),無志者只感千難萬難?!?,
TEXT(“成功與不成功之間有時(shí)距離很短只要后者再向前幾步?!?,
TEXT(“世界會(huì)向那些有目標(biāo)和遠(yuǎn)見的人讓路?!?,
TEXT(“世界青睞有雄心壯志的人。成功所依靠的惟一條件就是思考。當(dāng)你的思維以最高速度運(yùn)轉(zhuǎn)時(shí),樂觀歡快的情緒就會(huì)充斥全身。一個(gè)人最完美的作品都是在充滿愉快、樂觀、深情的狀態(tài)下完成的。學(xué)會(huì)讓自己安靜,把思維沉浸下來,慢慢降低對(duì)事物的欲望。把自我經(jīng)常歸零,每天都是新的起點(diǎn),沒有年齡的限制,只要你對(duì)事物的欲望適當(dāng)?shù)慕档?#xff0c;會(huì)贏得更多的求勝機(jī)會(huì)?!?,
TEXT(“學(xué)會(huì)讓自己安靜,把思維沉浸下來,慢慢降低對(duì)事物的欲望。把自我經(jīng)常歸零,每天都是新的起點(diǎn),沒有年齡的限制,只要你對(duì)事物的欲望適當(dāng)?shù)慕档?#xff0c;會(huì)贏得更多的求勝機(jī)會(huì)。”),
TEXT(“楊瀾:年輕時(shí)候應(yīng)該能夠作一些冒險(xiǎn)。年輕時(shí)候最大的財(cái)富,不是你的青春,不是你的美貌,也不是你充沛的精力,而是你有犯錯(cuò)誤的機(jī)會(huì)?!?,
TEXT(“沒有十全十美的東西,沒有十全十美的人,關(guān)鍵是清楚到底想要什么。得到想要的,肯定會(huì)失去另外一部分。如果什么都想要,只會(huì)什么都得不到。”),
TEXT(“做自己的決定。然后準(zhǔn)備好承擔(dān)后果。從一開始就提醒自己,世上沒有后悔藥吃?!?,
TEXT(“在你內(nèi)心深處,還有無窮的潛力,有一天當(dāng)你回首看時(shí),你就會(huì)知道這絕對(duì)是真的。”),
TEXT(“不為模糊不清的未來擔(dān)憂,只為清清楚楚的現(xiàn)在努力?!?,
TEXT(“沒有一種不通過蔑視、忍受和奮斗就可以征服的命運(yùn)?!?,
TEXT(“偉人之所以偉大,是因?yàn)樗c別人共處逆境時(shí),別人失去了信心,他卻下決心實(shí)現(xiàn)自己的目標(biāo)?!?,
TEXT(“世上沒有絕望的處境,只有對(duì)處境絕望的人?!?,
TEXT(“當(dāng)你感到悲哀痛苦時(shí),最好是去學(xué)些什么東西。學(xué)習(xí)會(huì)使你永遠(yuǎn)立于不敗之地。”),
TEXT(“給自己定目標(biāo),一年,兩年,五年,也許你出生不如別人好,通過努力,往往可以改變70%的命運(yùn)。破罐子破摔只能和懦弱做朋友?!?,
TEXT(“知道自己要干什么,夜深人靜,問問自己,將來的打算,并朝著那個(gè)方向去實(shí)現(xiàn)。而不是無所事事和做一些無謂的事?!?,
TEXT(“夢想無論怎么模糊,它總潛伏在我們心底,使我們的心境永遠(yuǎn)得不到寧靜,直到夢想成為事實(shí)。”),
TEXT(“夢是一種欲望,想是一種行動(dòng)。夢想是夢與想的結(jié)晶?!?,
TEXT(“生氣,就是拿別人的過錯(cuò)來懲罰自己。原諒別人,就是善待自己。生氣,就是拿別人的過錯(cuò)來懲罰自己。原諒別人,就是善待自己。生氣,就是拿別人的過錯(cuò)來懲罰自己?!?,
TEXT(“一個(gè)實(shí)現(xiàn)夢想的人,就是一個(gè)成功的人?!?,
TEXT(“大事堅(jiān)持原則,小事學(xué)會(huì)變通?!?,
TEXT(“一個(gè)人有錢沒錢不一定,但如果這個(gè)人沒有了夢想,這個(gè)人窮定了。”),
TEXT(“不要急于表態(tài)不急于表態(tài)或發(fā)表意見,可以使人對(duì)你揣摸猜測。謹(jǐn)慎的沉默是精明人的幫手。一旦表態(tài),你的決定就容易受到批評(píng)和非議?!?,
TEXT(“平凡樸實(shí)的夢想,我們用那唯一的堅(jiān)持信念去支撐那夢想?!?,
TEXT(“不要總談?wù)撟约耗闳艨偸钦務(wù)撟约?#xff0c;那么不是吹噓自己,就是貶低自己;前者是虛榮的表現(xiàn),后者是卑微的表現(xiàn)?!?,
TEXT(“千萬不要抱怨,抱怨會(huì)使你丟丑。抱怨會(huì)使人對(duì)你傲慢無禮,并促使別人如你所抱怨的那么做。要贏得別人的幫助,最好的辦法是表揚(yáng)他人?!?,
TEXT(“凡事終了時(shí)務(wù)必小心謹(jǐn)慎,順利抽身退出要比順利地進(jìn)入時(shí)更難?!?,
TEXT(“很難說什么是辦不到的事情,因?yàn)樽蛱斓膲粝?#xff0c;可以是今天的希望,并且還可以成為明天的現(xiàn)實(shí)。”),
TEXT(“當(dāng)你再也沒有什么可以失去的時(shí)候,就是你開始得到的時(shí)候?!?,
TEXT(“生命猶如一片綠葉,隨著時(shí)間的流逝,慢慢變的枯黃,但他的葉脈還是那么清晰可見?!?,
TEXT(“我們可以躲開大家,卻躲不開一只蒼蠅。生活中使我們不快樂的常是一些芝麻小事?!?,
TEXT(“人生的意義不在于拿一手好牌,而在于打好一手壞牌?!?,
TEXT(“一個(gè)人想平庸,阻攔者很少;一個(gè)人想出眾,阻攔者很多。不少平庸者與周圍人關(guān)系融洽,不少出眾者與周圍人關(guān)系緊張?!?,
TEXT("“危機(jī)”兩個(gè)字,一個(gè)意味著危險(xiǎn),另外一個(gè)意味著機(jī)會(huì),不要放棄任何一次努力。"),
TEXT(“世上沒有絕望的處境,只有對(duì)處境絕望的人?!?,
TEXT(“再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達(dá)?!?,
TEXT(“有志者自有千計(jì)萬計(jì),無志者只感千難萬難。”),
TEXT(“成功與不成功之間有時(shí)距離很短只要后者再向前幾步?!?,
TEXT(“世界會(huì)向那些有目標(biāo)和遠(yuǎn)見的人讓路?!?,
TEXT(“世界青睞有雄心壯志的人。成功所依靠的惟一條件就是思考。當(dāng)你的思維以最高速度運(yùn)轉(zhuǎn)時(shí),樂觀歡快的情緒就會(huì)充斥全身。一個(gè)人最完美的作品都是在充滿愉快、樂觀、深情的狀態(tài)下完成的?!?,
TEXT(“學(xué)會(huì)讓自己安靜,把思維沉浸下來,慢慢降低對(duì)事物的欲望。把自我經(jīng)常歸零,每天都是新的起點(diǎn),沒有年齡的限制,只要你對(duì)事物的欲望適當(dāng)?shù)慕档?#xff0c;會(huì)贏得更多的求勝機(jī)會(huì)?!?,
TEXT(“楊瀾:年輕時(shí)候應(yīng)該能夠作一些冒險(xiǎn)。年輕時(shí)候最大的財(cái)富,不是你的青春,不是你的美貌,也不是你充沛的精力,而是你有犯錯(cuò)誤的機(jī)會(huì)?!?,
TEXT(“沒有十全十美的東西,沒有十全十美的人,關(guān)鍵是清楚到底想要什么。得到想要的,肯定會(huì)失去另外一部分。如果什么都想要,只會(huì)什么都得不到?!?,
TEXT(“做自己的決定。然后準(zhǔn)備好承擔(dān)后果。從一開始就提醒自己,世上沒有后悔藥吃?!?,
TEXT(“在你內(nèi)心深處,還有無窮的潛力,有一天當(dāng)你回首看時(shí),你就會(huì)知道這絕對(duì)是真的。”),
TEXT(“不為模糊不清的未來擔(dān)憂,只為清清楚楚的現(xiàn)在努力?!?,
TEXT(“沒有一種不通過蔑視、忍受和奮斗就可以征服的命運(yùn)?!?,
TEXT(“偉人之所以偉大,是因?yàn)樗c別人共處逆境時(shí),別人失去了信心,他卻下決心實(shí)現(xiàn)自己的目標(biāo)。”),
TEXT(“世上沒有絕望的處境,只有對(duì)處境絕望的人?!?,
TEXT(“當(dāng)你感到悲哀痛苦時(shí),最好是去學(xué)些什么東西。學(xué)習(xí)會(huì)使你永遠(yuǎn)立于不敗之地。”),
TEXT(“給自己定目標(biāo),一年,兩年,五年,也許你出生不如別人好,通過努力,往往可以改變70%的命運(yùn)。破罐子破摔只能和懦弱做朋友。”),
TEXT(“知道自己要干什么,夜深人靜,問問自己,將來的打算,并朝著那個(gè)方向去實(shí)現(xiàn)。而不是無所事事和做一些無謂的事?!?,
TEXT(“夢想無論怎么模糊,它總潛伏在我們心底,使我們的心境永遠(yuǎn)得不到寧靜,直到夢想成為事實(shí)?!?,
TEXT(“夢是一種欲望,想是一種行動(dòng)。夢想是夢與想的結(jié)晶?!?,
TEXT(“生氣,就是拿別人的過錯(cuò)來懲罰自己。原諒別人,就是善待自己?!?,
TEXT(“一個(gè)實(shí)現(xiàn)夢想的人,就是一個(gè)成功的人。”),
TEXT(“大事堅(jiān)持原則,小事學(xué)會(huì)變通。”),
TEXT(“一個(gè)人有錢沒錢不一定,但如果這個(gè)人沒有了夢想,這個(gè)人窮定了?!?,
TEXT(“不要急于表態(tài)不急于表態(tài)或發(fā)表意見,可以使人對(duì)你揣摸猜測。謹(jǐn)慎的沉默是精明人的幫手。一旦表態(tài),你的決定就容易受到批評(píng)和非議。如果這些決定是以失敗告終,你就會(huì)更加倒霉。”),
TEXT(“平凡樸實(shí)的夢想,我們用那唯一的堅(jiān)持信念去支撐那夢想。”),
TEXT(“不要總談?wù)撟约耗闳艨偸钦務(wù)撟约?#xff0c;那么不是吹噓自己,就是貶低自己;前者是虛榮的表現(xiàn),后者是卑微的表現(xiàn)?!?,
TEXT(“千萬不要抱怨,抱怨會(huì)使你丟丑。抱怨會(huì)使人對(duì)你傲慢無禮,并促使別人如你所抱怨的那么做。要贏得別人的幫助,最好的辦法是表揚(yáng)他人。”),
TEXT(“凡事終了時(shí)務(wù)必小心謹(jǐn)慎,順利抽身退出要比順利地進(jìn)入時(shí)更難?!?,
TEXT(“很難說什么是辦不到的事情,因?yàn)樽蛱斓膲粝?#xff0c;可以是今天的希望,并且還可以成為明天的現(xiàn)實(shí)。”),
TEXT(“當(dāng)你再也沒有什么可以失去的時(shí)候,就是你開始得到的時(shí)候?!?,
TEXT(“生命猶如一片綠葉,隨著時(shí)間的流逝,慢慢變的枯黃,但他的葉脈還是那么清晰可見?!?,
TEXT(“我們可以躲開大家,卻躲不開一只蒼蠅。生活中使我們不快樂的常是一些芝麻小事?!?,
TEXT(“人生的意義不在于拿一手好牌,而在于打好一手壞牌?!?,
TEXT(“一個(gè)人想平庸,阻攔者很少;一個(gè)人想出眾,阻攔者很多。不少平庸者與周圍人關(guān)系融洽,不少出眾者與周圍人關(guān)系緊張。”),
TEXT("“危機(jī)”兩個(gè)字,一個(gè)意味著危險(xiǎn),另外一個(gè)意味著機(jī)會(huì),不要放棄任何一次努力。"),
TEXT(“世上沒有絕望的處境,只有對(duì)處境絕望的人?!?,
TEXT(“再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達(dá)?!?,
TEXT(“有志者自有千計(jì)萬計(jì),無志者只感千難萬難?!?,
TEXT(“成功與不成功之間有時(shí)距離很短只要后者再向前幾步。”),
TEXT(“世界會(huì)向那些有目標(biāo)和遠(yuǎn)見的人讓路?!?,
TEXT(“世界青睞有雄心壯志的人。成功所依靠的惟一條件就是思考。當(dāng)你的思維以最高速度運(yùn)轉(zhuǎn)時(shí),樂觀歡快的情緒就會(huì)充斥全身。一個(gè)人最完美的作品都是在充滿愉快、樂觀、深情的狀態(tài)下完成的。”),
TEXT(“學(xué)會(huì)讓自己安靜,把思維沉浸下來,慢慢降低對(duì)事物的欲望。把自我經(jīng)常歸零,每天都是新的起點(diǎn),沒有年齡的限制,只要你對(duì)事物的欲望適當(dāng)?shù)慕档?#xff0c;會(huì)贏得更多的求勝機(jī)會(huì)?!?,
TEXT(“楊瀾:年輕時(shí)候應(yīng)該能夠作一些冒險(xiǎn)。年輕時(shí)候最大的財(cái)富,不是你的青春,不是你的美貌,也不是你充沛的精力,而是你有犯錯(cuò)誤的機(jī)會(huì)?!?,
TEXT(“沒有十全十美的東西,沒有十全十美的人,關(guān)鍵是清楚到底想要什么。得到想要的,肯定會(huì)失去另外一部分。如果什么都想要,只會(huì)什么都得不到。”),
TEXT(“做自己的決定。然后準(zhǔn)備好承擔(dān)后果。從一開始就提醒自己,世上沒有后悔藥吃?!?,
TEXT(“在你內(nèi)心深處,還有無窮的潛力,有一天當(dāng)你回首看時(shí),你就會(huì)知道這絕對(duì)是真的?!?,
TEXT(“不為模糊不清的未來擔(dān)憂,只為清清楚楚的現(xiàn)在努力?!?
};

//計(jì)算statement所有句子中最長語句的長度
int GetMaxLength()
{
/*
*計(jì)算statement所有句子中最長語句的長度
返回值: int GetMaxLength(void) -> int
/
int maxLength = 0 ;
int i ;
for( i = 0; i < NUMLINES; i++ )
{
if( wcslen(statement[i]) > maxLength )
maxLength = wcslen(statement[i]) ;
}
return maxLength ;
}

?

  在這個(gè)頭文件中, 其中有兩句是十分重要的, 一是計(jì)算總行數(shù):

#define NUMLINES ( (int)(sizeof(statement) / sizeof(statement[0]) ) ) //計(jì)算總行數(shù)

  另一個(gè)是計(jì)算最長串字符個(gè)數(shù)的函數(shù)GetMaxLength, 該函數(shù)的定義如下:

int GetMaxLength() {/**計(jì)算statement所有句子中最長語句的長度*返回值: int GetMaxLength(void) -> int*/int maxLength = 0 ;int i ;for( i = 0; i < NUMLINES; i++ ){if( wcslen(statement[i]) > maxLength )maxLength = wcslen(statement[i]) ;}return maxLength ; }

?

  下面編寫我們的源文件,?LearnScroll.c,?先看一下完整的代碼,?稍后我們?cè)敿?xì)解釋,?代碼如下:

?

1 #include<windows.h>2 #include"text.h"3 4 LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ; //聲明窗口過程函數(shù)5 6 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )7 {8 static TCHAR szAppName[] = TEXT("LearnScroll") ;9 HWND hwnd ;10 MSG msg ;11 WNDCLASS wndclass ;12 13 //窗口類成員屬性14 wndclass.lpfnWndProc = WndProc ;15 wndclass.style = CS_HREDRAW | CS_VREDRAW ;16 wndclass.hInstance = hInstance ;17 wndclass.lpszClassName = szAppName ;18 wndclass.lpszMenuName = NULL ;19 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH) ;20 wndclass.hCursor = LoadCursor(NULL, IDI_APPLICATION) ;21 wndclass.hIcon = LoadIcon(NULL, IDC_ARROW) ;22 wndclass.cbClsExtra = 0 ;23 wndclass.cbWndExtra = 0 ;24 25 //注冊(cè)窗口類26 if( !RegisterClass(&wndclass) )27 {28 MessageBox( NULL, TEXT("無法注冊(cè)窗口類!"), TEXT("錯(cuò)誤"), MB_OK | MB_ICONERROR ) ;29 return 0 ;30 }31 32 //創(chuàng)建窗口33 hwnd = CreateWindow(34 szAppName, TEXT("滾動(dòng)條示例"),35 WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,36 CW_USEDEFAULT, CW_USEDEFAULT,37 CW_USEDEFAULT, CW_USEDEFAULT,38 NULL, NULL, hInstance, NULL39 ) ;40 41 //顯示窗口42 ShowWindow( hwnd, iCmdShow ) ;43 UpdateWindow( hwnd ) ;44 45 //獲取、翻譯、分發(fā)消息46 while( GetMessage( &msg, NULL, 0, 0 ) )47 {48 TranslateMessage( &msg ) ;49 DispatchMessage( &msg ) ;50 }51 52 return msg.wParam ;53 }54 55 LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )56 {57 static int cxChar, cxCaps, cyChar, cyClient, cxClient, iVscrollPos, iHscrollPos ;58 //cxChar:平均字符寬度; cxCaps: 大寫字母平均寬度; cyChar: 字符高; cyClient、cxClient: 客戶區(qū)y、x方向尺寸; 59 //iVscrollPos: 豎直方向滾動(dòng)條滑塊位置; iHscrollPos: 水平方向滾動(dòng)條滑塊位置60 61 HDC hdc ;62 RECT rect ; //記錄客戶區(qū)RECT結(jié)構(gòu)63 int i, x, y; //i循環(huán)控制, x記錄水平方向坐標(biāo), y豎直方向坐標(biāo)64 PAINTSTRUCT ps ;65 TEXTMETRIC tm ;66 67 switch(message)68 {69 case WM_CREATE: //處理WM_CREATE消息70 hdc = GetDC(hwnd) ;71 GetTextMetrics( hdc, &tm ) ; //獲取系統(tǒng)字體信息72 cxChar = tm.tmAveCharWidth ; //獲取平均寬度73 cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ; //大寫字母平均寬度74 cyChar = tm.tmHeight + tm.tmExternalLeading ; //字符高度75 ReleaseDC( hwnd, hdc );76 77 SetScrollRange( hwnd, SB_VERT, 0, NUMLINES - 1, FALSE ) ; //設(shè)置豎直滾動(dòng)條范圍的最小值和最大值78 SetScrollRange( hwnd, SB_HORZ, 0, GetMaxLength() - 1, FALSE ) ; //設(shè)置水平滾動(dòng)條范圍的最小值和最大值79 SetScrollPos( hwnd, SB_VERT, iVscrollPos, TRUE ) ; //設(shè)置豎直滾動(dòng)條中的滾動(dòng)按鈕的位置80 SetScrollPos( hwnd, SB_HORZ, iHscrollPos, TRUE ) ; //設(shè)置水平定滾動(dòng)條中的滾動(dòng)按鈕的位置81 82 return 0 ;83 84 case WM_SIZE: //處理WM_SIZE85 GetClientRect( hwnd, &rect ) ;86 cyClient = rect.bottom ; //得到客戶區(qū)y方向尺寸87 cxClient = rect.right ; //得到客戶區(qū)x方向尺寸88 return 0 ;89 90 case WM_VSCROLL: //處理垂直滾動(dòng)條消息91 switch( LOWORD(wParam) )92 {93 case SB_LINEUP: //上翻一行94 iVscrollPos -= 1 ;95 break ;96 97 case SB_LINEDOWN: //下翻一行98 iVscrollPos += 1 ;99 break ; 100 101 case SB_PAGEUP: //向上翻一整頁 102 iVscrollPos -= cyClient / cyChar ; 103 break ; 104 105 case SB_PAGEDOWN: //向下翻一整頁 106 iVscrollPos += cyClient / cyChar ; 107 break ; 108 109 case SB_THUMBPOSITION: //拖動(dòng)滑塊滑塊被放下時(shí) 110 iVscrollPos = HIWORD(wParam) ; 111 break ; 112 113 default: 114 break; 115 } 116 iVscrollPos = max( 0, min(iVscrollPos, NUMLINES -1) ) ; 117 if( iVscrollPos != GetScrollPos(hwnd, SB_VERT) ) //當(dāng)滑塊位置改變時(shí)重置滑塊位置 118 { 119 SetScrollPos( hwnd, SB_VERT, iVscrollPos, TRUE ) ; 120 InvalidateRect( hwnd, NULL, TRUE ) ; //使客戶區(qū)無效等待重繪 121 } 122 return 0 ; 123 124 case WM_HSCROLL: //處理水平滾動(dòng)條消息 125 switch( LOWORD(wParam) ) 126 { 127 case SB_LINELEFT: //左翻一行 128 iHscrollPos -= 1 ; 129 break ; 130 131 case SB_LINERIGHT: //右翻一行 132 iHscrollPos += 1 ; 133 break ; 134 135 case SB_PAGELEFT: //左翻一頁 136 iHscrollPos -= cxClient / cxCaps ; 137 break ; 138 139 case SB_PAGERIGHT: //右翻一頁 140 iHscrollPos += cxClient / cxCaps ; 141 break ; 142 143 case SB_THUMBPOSITION: //拖動(dòng)滑塊滑塊被放下時(shí) 144 iHscrollPos = HIWORD(wParam) ; 145 break ; 146 147 default: 148 break ; 149 } 150 iHscrollPos = max( 0, min( iHscrollPos, GetMaxLength() -1 ) ) ; 151 if( iHscrollPos != GetScrollPos( hwnd, SB_HORZ ) ) 152 { 153 SetScrollPos( hwnd, SB_HORZ, iHscrollPos, TRUE ) ; 154 InvalidateRect( hwnd, NULL, TRUE ) ; 155 } 156 return 0 ; 157 158 case WM_PAINT: //處理WM_PAINT消息 159 hdc = BeginPaint( hwnd, &ps ) ; 160 161 for( i= 0; i < NUMLINES; i++ ) 162 { 163 y = cyChar * ( i -iVscrollPos ) ; 164 x = cxCaps * ( 0 - iHscrollPos ) ; 165 TextOut( hdc, x, y, statement[i], lstrlen(statement[i]) ) ; //輸出文字 166 } 167 168 EndPaint( hwnd, &ps ) ; 169 return 0 ; 170 171 case WM_DESTROY: //處理WM_DESTROY消息 172 PostQuitMessage( 0 ) ; 173 return 0 ; 174 } 175 176 return DefWindowProc( hwnd, message, wParam, lParam ) ; 177 }

?

  編譯運(yùn)行,?看下成果:

?

  看起來還算不錯(cuò),?當(dāng)滾動(dòng)條向下翻時(shí)文字就隨著向上滾動(dòng),?使下面的文字能夠顯示出來,?水平的滾動(dòng)條也是這樣,?下面詳細(xì)說說重點(diǎn)部分的代碼:

    1>. 創(chuàng)建一個(gè)帶有垂直滾動(dòng)條以及水平滾動(dòng)條的窗口:

  hwnd = CreateWindow(szAppName, TEXT("滾動(dòng)條示例"),WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;

    

    2>.?設(shè)置垂直滾動(dòng)條、水平滾動(dòng)條的范圍以及初始位置:

SetScrollRange( hwnd, SB_VERT, 0, NUMLINES - 1, FALSE ) ;   //設(shè)置垂直滾動(dòng)條范圍的最小值和最大值SetScrollRange( hwnd, SB_HORZ, 0, GetMaxLength() - 1, FALSE ) ; //設(shè)置水平滾動(dòng)條范圍的最小值和最大值SetScrollPos( hwnd, SB_VERT, iVscrollPos, TRUE ) ;       //設(shè)置垂直滾動(dòng)條中的滾動(dòng)按鈕的位置SetScrollPos( hwnd, SB_HORZ, iHscrollPos, TRUE ) ;       //設(shè)置水平定滾動(dòng)條中的滾動(dòng)按鈕的位置

     可以看出,?垂直滾動(dòng)條的范圍為0到行數(shù)-1,?這就意味這,?每下翻/上翻一個(gè)單位,?客戶區(qū)顯示的文字就會(huì)向上//向下滾動(dòng)一行;?

    水平滾動(dòng)條的范圍為0到最長那行文字的長度-1, 每左翻/右翻一個(gè)單位,?客戶區(qū)顯示的文字就會(huì)向右//向左滾動(dòng)一個(gè)字符的寬度。

?

    3>.?當(dāng)窗口大小調(diào)整時(shí)重新獲取客戶區(qū)尺寸數(shù)據(jù):

  case WM_SIZE: //處理WM_SIZEGetClientRect( hwnd, &rect ) ;cyClient = rect.bottom ;   //得到客戶區(qū)y方向尺寸cxClient = rect.right ; //得到客戶區(qū)x方向尺寸return 0 ;

?

    4>. 處理滾動(dòng)條消息:

  case WM_VSCROLL: //處理水平滾動(dòng)條消息switch( LOWORD(wParam) ){case 滾動(dòng)條消息:[處理滾動(dòng)條消息]}

?

    5>. 重置滾動(dòng)條滑塊位置:

iVscrollPos = max( 0, min(iVscrollPos, NUMLINES -1) ) ; //確保滾動(dòng)條的位置在設(shè)置的范圍內(nèi)。 <span style="color: #0000ff;">if</span>( iVscrollPos != GetScrollPos(hwnd, SB_VERT) )     <span style="color: #008000;">//</span><span style="color: #008000;">當(dāng)滑塊位置改變時(shí)重置滑塊位置</span>

{
SetScrollPos( hwnd, SB_VERT, iVscrollPos, TRUE ) ;
InvalidateRect( hwnd, NULL, TRUE ) ;     //使客戶區(qū)無效等待重繪
}
return 0 ;

      這一句注釋上已經(jīng)描述的是否清楚了,?當(dāng)滑塊位置改變時(shí)重置滑塊位置并使客戶區(qū)無效等待重繪。

?

    6>. 處理重繪消息:

    case WM_PAINT: //處理WM_PAINT消息hdc = BeginPaint( hwnd, &ps ) ;   </span><span style="color: #0000ff;">for</span>( i= <span style="color: #800080;">0</span>; i &lt; NUMLINES; i++<span style="color: #000000;"> ){y </span>= cyChar * ( i -<span style="color: #000000;">iVscrollPos ) ;x </span>= cxCaps * ( <span style="color: #800080;">0</span> -<span style="color: #000000;"> iHscrollPos ) ;TextOut( hdc, x, y, statement[i], lstrlen(statement[i]) ) ; </span><span style="color: #008000;">//</span><span style="color: #008000;">輸出文字</span>

  }

  EndPaint( hwnd, </span>&amp;<span style="color: #000000;">ps ) ;</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">0</span> ;</pre>

?

      目的是重繪客戶區(qū)內(nèi)容并使其有效,?注意這里的

y = cyChar * ( i -iVscrollPos ) ;x = cxCaps * ( 0 - iHscrollPos ) ;

      這是計(jì)算從起始輸出的坐標(biāo),?每行對(duì)應(yīng)一個(gè)y值,?當(dāng)滑塊的位置向下滾動(dòng)1時(shí),?y的值就會(huì)減去一個(gè)字符的高度,?使該行顯示到窗口外部,?這樣新的一行就會(huì)被顯示出來,?同樣,?翻動(dòng)一整夜的計(jì)算思路同一行;?x是指水平起始輸出位置,?計(jì)算思路相同。

?

這樣,?一個(gè)簡單的帶有滾動(dòng)條的窗口就完成了! 看起來挺不錯(cuò)的, 不是嗎? 可以先稍微休息一下, 下面我們還有事要做。

?

?

但這還不夠好!

  在上面我們使用的滾動(dòng)條中,?雖說能夠滾動(dòng)文字,?但是依然存在許多小問題:

    問題一:?滑塊的大小是固定的,?而我見到的應(yīng)用軟件滑塊能夠根據(jù)內(nèi)容的多少自動(dòng)調(diào)整滑塊大小;

    問題二:?當(dāng)我拖動(dòng)滑塊時(shí)只有當(dāng)滑塊釋放時(shí)頁面才會(huì)滾動(dòng),?我想要的是當(dāng)滑塊被拖動(dòng)時(shí)頁面也同樣跟著滾動(dòng);

    問題三:?當(dāng)滑塊滾動(dòng)到底部時(shí)最后一行顯示到了客戶區(qū)頂部,?下面留有一大片的空白,?而我并不需要保留下面的空白,?也就是說最后一行在滑塊拖動(dòng)到底部后它只顯示在底部就行。

?

  幸運(yùn)的是, 我們依然有解決方案:

     問題一: 自行設(shè)置滑塊的大小;

    ?問題二:?根據(jù)SB_THUMBTRACK消息處理頁面的滾動(dòng),?SB_THUMBTRACK消息是當(dāng)滑塊被拖動(dòng)時(shí)就會(huì)源源不斷的發(fā)來;

   ? ? ?問題三:?重新設(shè)置滾動(dòng)的范圍。

?

?

?

更好的滾動(dòng)條:

  在使用更好的滾動(dòng)條之前我們首先要認(rèn)識(shí)三個(gè)新函數(shù):?SetScrollInfo、GetScrollInfo以及ScrollWindow.

  1>.?SetScrollInfo

    函數(shù)功能:?用于設(shè)置滾動(dòng)條的相關(guān)參數(shù),?包括滾動(dòng)范圍的最大值和最小值,?頁面大小,?滑塊的位置,?函數(shù)的原型:

  int SetScrollInfo(HWND hWnd;   //窗口句柄int fnBar, //指定被設(shè)定參數(shù)的滾動(dòng)條的類型LPSCROLLINFO lpsi, //指向一個(gè)SCROLLINFO結(jié)構(gòu)BOOL fRedraw //重繪標(biāo)志) ;

  穿插講述: 什么是SCROLLINFO結(jié)構(gòu)?

    SCROLLINFO的成員記錄有關(guān)滾動(dòng)條的信息,?其結(jié)構(gòu)定義如下:

  typedef struct tagSCROLLINFO { UINT cbSize ;    //設(shè)置為sizeof (SCROLLINFO), 表示該結(jié)構(gòu)的大小UINT fMask ;     //要設(shè)置或獲取的值int nMin ;   //滾動(dòng)條范圍的最小值int nMax ;   //滾動(dòng)條范圍的最大值UINT nPage ;    //頁面大小int nPos ;   //當(dāng)前位置 int nTrackPos ; //當(dāng)前追蹤位置 }SCROLLINFO;

    成員一UINT?cbSize?:??該參數(shù)必須在函數(shù)調(diào)用之前設(shè)置,??cbSize表示該結(jié)構(gòu)的大小,?用sizeof?(SCROLLINFO)表示即可。

    成員二UINT?fMask:?用于指定指定結(jié)構(gòu)中的哪些成員是有效的,?通過位或運(yùn)算進(jìn)行組合,?可組合的標(biāo)識(shí)符如下:

  SIF_ALL //整個(gè)結(jié)構(gòu)都有效
  SIF_DISABLENOSCROLL //禁用滾動(dòng)條SIF_PAGE      //用于指定或獲取頁面的大小, 在SetScrollInfo中用于設(shè)定頁面的大小, 在GetScrollInfo用于獲取頁面的大小
  SIF_POS       //設(shè)置/取得滾動(dòng)條滑塊當(dāng)前的位置
  SIF_RANGE      //滾動(dòng)條的范圍SIF_TRACKPOS //僅在GetScrollInfo函數(shù)中使用, 并且僅用在處理SB_THUMBTRACK或者SB_THUMBPOSITION的WM_VSCROLL消息或WM_HSCROLL消息時(shí)使用。取得當(dāng)前滑塊的跟蹤位置。

  ?? 穿插講述完畢! 繼續(xù)講解第二個(gè)新函數(shù)。

?

  2>.?GetScrollInfo

    用于取得滾動(dòng)條的相關(guān)參數(shù),?包括滾動(dòng)范圍的最大值和最小值,?頁面大小,?滑塊的位置,?函數(shù)的原型:

  BOOL GetScrollInfo( HWND hWnd,    //窗口句柄int fnBar, //指定被設(shè)定參數(shù)的滾動(dòng)條的類型LPSCROLLINFO lpsi //指向一個(gè)SCROLLINFO結(jié)構(gòu));

?

  3>.?ScrollWindow

    該函數(shù)的作用是滾動(dòng)所指定的窗口客戶區(qū)域內(nèi)容,?原型如下:

  BOOL ScrollWindow(HWND hWnd,       //窗口句柄int XAmount, //指定水平滾動(dòng)的距離int YAmount, //指定垂直滾動(dòng)的距離CONST RECT *IpRect, //指向RECT結(jié)構(gòu)的指針, 該結(jié)構(gòu)指定了將要滾動(dòng)的客戶區(qū)范圍。若此參數(shù)為NULL,則整個(gè)客戶區(qū)域?qū)⒈粷L動(dòng)。 CONST RECT *lpClipRect //指向RECT結(jié)構(gòu)的指針, 該結(jié)構(gòu)指定了要滾動(dòng)的裁剪區(qū)域。只有這個(gè)矩形中才會(huì)被滾動(dòng)。 );

  好了,?說的差不多夠多了,?研究代碼才是更好的溝通方式,?下面我們實(shí)際實(shí)踐一下更好的滾動(dòng)條,?更多的細(xì)節(jié)請(qǐng)?jiān)诖a中體會(huì), 限于篇幅的長度, 這里將WinMain函數(shù)折疊顯示, 僅將窗口過程函數(shù)部分的代碼全部顯示出來:

View Code - Function - WinMain 1 #include<windows.h>2 #include"text.h"3 4 LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ; //聲明窗口過程函數(shù)5 6 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )7 {8 static TCHAR szAppName[] = TEXT("LearnScroll") ;9 HWND hwnd ; 10 MSG msg ; 11 WNDCLASS wndclass ; 12 13 //窗口類成員屬性 14 wndclass.lpfnWndProc = WndProc ; 15 wndclass.style = CS_HREDRAW | CS_VREDRAW ; 16 wndclass.hInstance = hInstance ; 17 wndclass.lpszClassName = szAppName ; 18 wndclass.lpszMenuName = NULL ; 19 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH) ; 20 wndclass.hCursor = LoadCursor(NULL, IDI_APPLICATION) ; 21 wndclass.hIcon = LoadIcon(NULL, IDC_ARROW) ; 22 wndclass.cbClsExtra = 0 ; 23 wndclass.cbWndExtra = 0 ; 24 25 //注冊(cè)窗口類 26 if( !RegisterClass(&wndclass) ) 27 { 28 MessageBox( NULL, TEXT("無法注冊(cè)窗口類!"), TEXT("錯(cuò)誤"), MB_OK | MB_ICONERROR ) ; 29 return 0 ; 30 } 31 32 //創(chuàng)建窗口 33 hwnd = CreateWindow( 34 szAppName, TEXT("滾動(dòng)條示例"), 35 WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL, 36 CW_USEDEFAULT, CW_USEDEFAULT, 37 CW_USEDEFAULT, CW_USEDEFAULT, 38 NULL, NULL, hInstance, NULL 39 ) ; 40 41 //顯示窗口 42 ShowWindow( hwnd, iCmdShow ) ; 43 UpdateWindow( hwnd ) ; 44 45 //獲取、翻譯、分發(fā)消息 46 while( GetMessage( &msg, NULL, 0, 0 ) ) 47 { 48 TranslateMessage( &msg ) ; 49 DispatchMessage( &msg ) ; 50 } 51 52 return msg.wParam ; 53 }

?

  窗口過程部分的代碼:

1 LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )2 {3 static int cxChar, cxCaps, cyChar, cyClient, cxClient, iVscrollPos, iHscrollPos ;4 //cxChar:平均字符寬度; cxCaps: 大寫字母平均寬度; cyChar: 字符高; cyClient、cxClient: 客戶區(qū)y、x方向尺寸; 5 //iVscrollPos: 豎直方向滾動(dòng)條滑塊位置; iHscrollPos: 水平方向滾動(dòng)條滑塊位置6 HDC hdc ;7 RECT rect ; //記錄客戶區(qū)RECT結(jié)構(gòu)8 int i, x, y; //i循環(huán)控制, x記錄水平方向坐標(biāo), y豎直方向坐標(biāo)9 PAINTSTRUCT ps ;10 TEXTMETRIC tm ;11 SCROLLINFO si ; //SCROLLINFO結(jié)構(gòu)對(duì)象12 int iMaxLength ; //所有語句中的最大長度13 14 iMaxLength = GetMaxLength() ; //取得最大長度15 16 switch(message)17 {18 case WM_CREATE: //處理WM_CREATE消息19 hdc = GetDC(hwnd) ;20 GetTextMetrics( hdc, &tm ) ; //獲取系統(tǒng)字體信息21 cxChar = tm.tmAveCharWidth ; //獲取平均寬度22 cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ; //大寫字母平均寬度23 cyChar = tm.tmHeight + tm.tmExternalLeading ; //字符高度24 ReleaseDC( hwnd, hdc );2526 return 0 ;27 28 case WM_SIZE: //處理WM_SIZE29 GetClientRect( hwnd, &rect ) ;30 cxClient = LOWORD (lParam) ;31 cyClient = HIWORD (lParam) ;32 33 //設(shè)置垂直滾動(dòng)條相關(guān)參數(shù)34 si.cbSize = sizeof (si) ;35 si.fMask = SIF_RANGE | SIF_PAGE ;36 si.nMin = 0 ;37 si.nMax = NUMLINES - 1 ;38 si.nPage = cyClient / cyChar ;39 SetScrollInfo(hwnd, SB_VERT, &si, TRUE) ;40 41 //設(shè)置水平滾動(dòng)條相關(guān)參數(shù)42 si.cbSize = sizeof (si) ;43 si.fMask = SIF_RANGE | SIF_PAGE ;44 si.nMin = 0 ;45 si.nMax = 2 + iMaxLength ;46 si.nPage = cxClient / cxCaps ;47 SetScrollInfo(hwnd, SB_HORZ, &si, TRUE) ;48 49 return 0 ;50 51 case WM_VSCROLL: //處理垂直滾動(dòng)條消息52 si.cbSize = sizeof (si) ;53 si.fMask = SIF_ALL ;54 GetScrollInfo(hwnd, SB_VERT, &si) ;55 56 iVscrollPos = si.nPos ; //記錄當(dāng)前滑塊位置57 58 switch( LOWORD(wParam) ) //處理滾動(dòng)條消息59 {60 case SB_TOP: //到達(dá)頂部61 si.nPos = si.nMin ;62 break ;63 64 case SB_BOTTOM: //到達(dá)底部65 si.nPos = si.nMax ;66 break ;67 68 case SB_LINEUP: //上翻一行69 si.nPos -= 1 ;70 break ;71 72 case SB_LINEDOWN: //下翻一行73 si.nPos += 1 ;74 break ;75 76 case SB_PAGEUP: //向上翻一整頁77 si.nPos -= si.nPage ;78 break ;79 80 case SB_PAGEDOWN: //向下翻一整頁81 si.nPos += si.nPage ;82 break ;83 84 case SB_THUMBTRACK: //移動(dòng)滑塊時(shí)85 si.nPos = si.nTrackPos ;86 break ;87 88 default:89 break;90 }91 si.fMask = SIF_POS ;92 SetScrollInfo(hwnd, SB_VERT, &si, TRUE) ; //重置滑塊位置93 GetScrollInfo(hwnd, SB_VERT, &si) ;94 if( si.nPos != iVscrollPos )95 {96 ScrollWindow(hwnd, 0, cyChar * (iVscrollPos - si.nPos), NULL, NULL) ; //滾動(dòng)內(nèi)容97 UpdateWindow(hwnd) ;98 }99 return 0 ; 100 101 case WM_HSCROLL: //處理水平滾動(dòng)條消息 102 si.cbSize = sizeof (si) ; 103 si.fMask = SIF_ALL ; 104 GetScrollInfo (hwnd, SB_HORZ, &si) ; 105 106 iHscrollPos = si.nPos ; //記錄當(dāng)前滑塊位置 107 switch( LOWORD(wParam) ) 108 { 109 case SB_TOP: //到達(dá)頂部 110 si.nPos = si.nMin ; 111 break ; 112 113 case SB_BOTTOM: //到達(dá)底部 114 si.nPos = si.nMax ; 115 break ; 116 117 case SB_LINELEFT: //左翻一行 118 si.nPos -= 1 ; 119 break ; 120 121 case SB_LINERIGHT: //右翻一行 122 si.nPos += 1 ; 123 break ; 124 125 case SB_PAGELEFT: //左翻一頁 126 si.nPos -= si.nPage ; 127 break ; 128 129 case SB_PAGERIGHT: //右翻一頁 130 si.nPos += si.nPage ; 131 break ; 132 133 case SB_THUMBTRACK: //移動(dòng)滑塊時(shí) 134 si.nPos = si.nTrackPos ; 135 break ; 136 137 default: 138 break ; 139 } 140 si.fMask = SIF_POS ; 141 SetScrollInfo(hwnd, SB_HORZ, &si, TRUE) ; //重置滑塊位置 142 GetScrollInfo(hwnd, SB_HORZ, &si) ; 143 if( si.nPos != iHscrollPos ) 144 { 145 ScrollWindow(hwnd, cxCaps * (iHscrollPos - si.nPos), 0, NULL, NULL) ; //滾動(dòng)內(nèi)容 146 UpdateWindow(hwnd) ; 147 } 148 return 0 ; 149 150 case WM_PAINT: //處理WM_PAINT消息 151 hdc = BeginPaint( hwnd, &ps ) ; 152 153 si.cbSize = sizeof (si) ; 154 si.fMask = SIF_POS ; 155 GetScrollInfo(hwnd, SB_VERT, &si) ; 156 iVscrollPos = si.nPos ; //獲取當(dāng)前垂直滑塊位置 157 158 GetScrollInfo(hwnd, SB_HORZ, &si) ; 159 iHscrollPos = si.nPos ; //獲取當(dāng)前水平滑塊位置 160 161 for( i= 0; i < NUMLINES; i++ ) 162 { 163 y = cyChar * ( i - iVscrollPos ) ; 164 x = cxCaps * ( 0 - iHscrollPos ) ; 165 TextOut( hdc, x, y, statement[i], lstrlen(statement[i]) ) ; //輸出文字 166 } 167 168 EndPaint( hwnd, &ps ) ; 169 return 0 ; 170 171 case WM_DESTROY: //處理WM_DESTROY消息 172 PostQuitMessage( 0 ) ; 173 return 0 ; 174 } 175 176 return DefWindowProc( hwnd, message, wParam, lParam ) ; 177 }

?

看一下成果:

嗯, 這樣看起來就好多了, 如果嫌行間距太擠的話我們可以調(diào)節(jié)字符的高度

cyChar = tm.tmHeight + tm.tmExternalLeading ; //字符高度

使行間距增大些, 這樣看起來會(huì)更舒服。

好了, 到這里,?一個(gè)較為完善的滾動(dòng)條就完成了。

?

--------------------

?

wid, 2012.10.31

?

總結(jié)

以上是生活随笔為你收集整理的滚动条详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久精品国产一区二区 | 中文字幕一二 | 久久99精品国产99久久 | 制服丝袜一区二区 | 久久国产亚洲精品 | 91香蕉视频好色先生 | www狠狠操| 久久综合欧美精品亚洲一区 | 国产一区二区在线播放 | 欧美有色 | 日日操网站 | 日韩精品免费专区 | 一级精品视频在线观看宜春院 | 午夜久久影视 | 国产二区视频在线观看 | 久久久精品视频成人 | 久久免费99精品久久久久久 | 国产剧情一区在线 | 三上悠亚一区二区在线观看 | 五月婷婷另类国产 | 香蕉久草 | 日韩中文字幕第一页 | 黄色中文字幕 | 成人a免费 | 久草在线最新视频 | 日韩网站免费观看 | 亚洲欧美日本国产 | 国产专区视频 | 日韩丝袜 | 激情五月六月婷婷 | 国产精品久久在线观看 | 一区二区三区久久 | 九草视频在线观看 | 九九免费在线观看视频 | 日本高清dvd | 国产精品久久久久久久久大全 | 久久精品久久久久电影 | 国产精品日韩久久久久 | 狠狠干夜夜爽 | 亚洲欧美日本一区二区三区 | www成人精品 | 首页中文字幕 | 免费在线观看av网站 | 黄色精品一区 | 91香蕉视频在线下载 | 69精品久久 | 国产精品视频资源 | 国产手机av在线 | 成人av免费在线播放 | 精品在线视频一区 | 九九爱免费视频在线观看 | 91porny九色91啦中文 | 婷婷色在线播放 | 久久99精品久久久久婷婷 | 中文字幕在线视频第一页 | aa一级片| 天天艹天天爽 | 一区二区三区在线观看中文字幕 | 99亚洲国产 | 中文字幕在线观看视频网站 | 亚洲激情综合 | 在线之家免费在线观看电影 | www.久久免费 | 福利一区二区在线 | 久久精品一区 | 天天操夜夜想 | 中文字幕久久网 | 黄色电影网站在线观看 | 日韩电影在线视频 | 国产一级a毛片视频爆浆 | 精品久操 | 中文字幕观看在线 | 日韩av免费在线电影 | 波多野结衣日韩 | 欧美九九九 | 亚洲高清国产视频 | 免费a现在观看 | 国产亚洲精品久久19p | 91精品国产一区二区三区 | 热99久久精品 | 四虎成人精品永久免费av | 91麻豆操 | 97超碰免费| a级黄色片视频 | av软件在线观看 | 国产专区视频 | 99久久综合狠狠综合久久 | 国产 在线观看 | 久草久视频 | 亚洲视屏在线播放 | 国产精品久久久久久久久大全 | 天天干天天干天天干天天干天天干天天干 | 日韩电影中文字幕在线观看 | 欧美日韩国产一二三区 | 成年人在线观看视频免费 | 中国一级片免费看 | 91中文在线| 久久69精品久久久久久久电影好 | 91在线91拍拍在线91 | 亚洲色五月| 热久久视久久精品18亚洲精品 | 国产精品久久久久久久电影 | 丁香婷婷综合激情 | 国产精品一区二区免费 | 亚洲人在线7777777精品 | 国产一级片免费视频 | 日韩精品一区二区三区外面 | 久草在线费播放视频 | 一区二区三区视频网站 | 日本精品视频在线 | 婷婷深爱五月 | 在线岛国av| 五月婷视频 | 黄网站色欧美视频 | 婷婷在线播放 | 久久久综合色 | 国产精品毛片一区 | 在线观看成年人 | 日韩毛片精品 | 啪啪精品| 国产一区二区在线播放 | 欧美亚洲国产日韩 | 在线看片视频 | 高清有码中文字幕 | 国产在线日本 | 狠狠色丁香久久婷婷综 | 免费进去里的视频 | 国产精品大片免费观看 | 国内精品视频一区二区三区八戒 | 精品国产美女在线 | 久久久久免费网 | 天天操导航 | 久久夜色网 | 婷婷丁香在线视频 | 婷婷色五| adc在线观看 | 美女精品在线观看 | 不卡国产在线 | 欧美一级片在线观看视频 | 国产一级性生活 | 国产在线国偷精品产拍免费yy | 999成人网 | 精品国产一区二区三区久久 | 国产精品美女毛片真酒店 | 天天搞天天干天天色 | 国产精品综合久久久 | 久草久| 人人插人人草 | 丁香色综合 | 91在线播放综合 | 91av视频播放| 色瓜| 天天操天天干天天操天天干 | 亚洲乱码中文字幕综合 | 欧美一级特黄高清视频 | 99热这里只有精品在线观看 | 成人免费观看视频网站 | 五月天激情在线 | 国产日韩欧美网站 | 色综合久久久久综合 | 99久久精品费精品 | 香蕉网站在线观看 | 中文字幕久久精品 | 久久手机免费观看 | 国产视频在线一区二区 | 日本丰满少妇免费一区 | 免费aa大片| 天天天干天天射天天天操 | av成人免费在线 | 99久久精品免费看 | 久久99国产一区二区三区 | 蜜臀一区二区三区精品免费视频 | 97国产精品视频 | 亚洲激情在线播放 | 91电影福利| 欧洲性视频 | 精品久久久久久久久久久久久久久久久久 | 免费看毛片网站 | 在线观看国产 | 美女黄频视频大全 | 五月婷婷六月综合 | 欧美成人精品欧美一级乱 | 国内成人av | 91亚洲视频在线观看 | 中文字幕韩在线第一页 | 中文字幕色网站 | 久久久91精品国产一区二区三区 | 久久激情精品 | 久久久久久高潮国产精品视 | 五月天色网站 | 毛片888| 国产美女免费观看 | 亚洲精品自拍视频在线观看 | 国产美腿白丝袜足在线av | 欧美综合色在线图区 | 欧美性生活久久 | 97香蕉久久国产在线观看 | 国产色道 | 亚洲精品中文字幕在线 | av免费播放| 国产精品久久久久久吹潮天美传媒 | 中文字幕在线不卡国产视频 | 国产免费久久久久 | 亚洲激精日韩激精欧美精品 | 日韩免费在线观看视频 | av黄色大片| 国产麻豆剧传媒免费观看 | 国产不卡精品 | 啪啪精品 | 日韩高清在线不卡 | 亚洲九九九在线观看 | 免费视频一区二区 | 国产在线成人 | 欧美成年人在线观看 | 日韩免费不卡av | 婷婷免费在线视频 | av网站免费线看精品 | 国产一级黄色电影 | 色综合天天综合 | 在线看的毛片 | 国产精品视频免费 | 在线看黄网站 | 九九热只有这里有精品 | 激情网站网址 | 91亚洲综合 | 五月婷婷激情综合网 | 在线观看av网 | 国产三级国产精品国产专区50 | 精品在线不卡 | 久久草草影视免费网 | 国产一区欧美二区 | 亚洲伊人av | 久久精品五月 | 久久精美视频 | 国产手机在线播放 | 久久人91精品久久久久久不卡 | 在线观看黄网 | 国内精品久久久久影院日本资源 | 国产美女免费视频 | 精品资源在线 | 国产黄色一级大片 | 久草在线高清视频 | 91久久精品日日躁夜夜躁国产 | 中文字幕av在线 | 日韩在线免费观看视频 | 日本性xxx | 国产玖玖精品视频 | 操操操人人 | 日韩欧美精选 | 国产精品 国内视频 | 国产亚洲亚洲 | 97视频免费观看2区 亚洲视屏 | 日本精品一二区 | 国产一级在线 | 成人久久免费视频 | 成人黄色大片在线免费观看 | 91成人小视频| 黄色三级免费 | 久草综合视频 | 91精品久久香蕉国产线看观看 | 国产 欧美 日产久久 | 国产视频一区二区在线观看 | 国产91精品看黄网站在线观看动漫 | 久久久久久久久久久久久9999 | 黄网在线免费观看 | 深夜免费小视频 | 香蕉蜜桃视频 | 国产精品自产拍在线观看桃花 | 国产精品久久久久9999吃药 | 国产免费三级在线观看 | 精品在线观看免费 | 欧美黄在线 | 亚洲理论片在线观看 | 九九精品在线观看 | 狠狠干狠狠艹 | 日韩三级视频在线观看 | 亚洲观看黄色网 | 一二区av | av日韩精品 | 特级毛片网站 | 婷婷丁香激情综合 | 欧美性黑人 | 久久久九九 | 久久免费精彩视频 | 在线免费观看视频你懂的 | 欧美韩日精品 | 成人9ⅰ免费影视网站 | 黄色软件网站在线观看 | 正在播放一区二区 | 又紧又大又爽精品一区二区 | 97夜夜澡人人双人人人喊 | 天天天天天天天天操 | 欧美一级艳片视频免费观看 | 91大神电影 | 免费日韩一级片 | 丁香5月婷婷| 伊人成人激情 | 992tv在线成人免费观看 | 国产精品破处视频 | 成年人免费在线播放 | 欧美激情精品久久 | 免费三级黄色 | 日韩精品中文字幕在线播放 | 亚洲午夜大片 | 99精品欧美一区二区三区黑人哦 | 日本久久高清视频 | 日韩在线二区 | 亚洲资源 | 中午字幕在线 | 国产精品美女久久久久久免费 | 男女全黄一级一级高潮免费看 | 国产一区二区三区四区大秀 | 国产在线无 | 亚洲电影一区二区 | 在线看片视频 | 99热99re6国产在线播放 | 国产免费观看视频 | 综合久久婷婷 | 亚洲成av人片在线观看 | 国产精品毛片久久久久久久 | 婷婷四房综合激情五月 | 一区二区三区中文字幕在线 | 国产一区播放 | 在线播放精品一区二区三区 | 青青啪| 国产精品久久久久久999 | 久久激情视频免费观看 | 国产喷水在线 | 最新高清无码专区 | 亚洲高清视频在线播放 | 久久精品9 | 狠狠狠狠干 | 国产精品久久久久永久免费观看 | 日韩免费观看高清 | 欧美精品一区二区在线观看 | 日韩手机视频 | 欧美二区三区91 | 又黄又爽又无遮挡的视频 | 九九99| 中文字幕在线播放第一页 | www.av免费| 99久高清在线观看视频99精品热在线观看视频 | 久久久久久电影 | 91福利在线观看 | 久草在线视频资源 | 中文字幕一区二区三区四区久久 | 色综合天天干 | 国产精品成人一区二区三区吃奶 | 国产精品免费久久久久 | 久久久久亚洲最大xxxx | 欧美性猛片, | 97超碰人人爱 | 日韩美av在线 | 狠狠狠的干 | 国产午夜亚洲精品 | 日韩视频精品在线 | 日韩久久视频 | 婷婷综合五月天 | 中文字幕电影高清在线观看 | 不卡视频一区二区三区 | 国产小视频免费在线观看 | 欧美日韩免费一区二区三区 | 五月天高清欧美mv | 久久久久国产成人免费精品免费 | 国产精品中文字幕av | 最近中文字幕免费 | 免费99视频 | 亚洲国产精彩中文乱码av | 91在线观看视频网站 | 99r在线视频| 色综合天天狠天天透天天伊人 | 97超碰人人模人人人爽人人爱 | 激情综合狠狠 | 成人免费亚洲 | av在线播放网址 | 丝袜制服综合网 | 亚洲精品视频大全 | 国内精品久久久久影院一蜜桃 | 麻豆 videos| 在线一级片 | 亚洲国产播放 | 人人精久 | 99re视频在线观看 | 国产尤物视频在线 | 日韩精品你懂的 | 激情综合网天天干 | www..com毛片| 91精品啪在线观看国产 | 亚洲四虎 | 亚洲精品午夜一区人人爽 | av在线免费在线观看 | 久久久精品午夜 | 精品国模一区二区三区 | 亚洲欧美日韩一区二区三区在线观看 | 91九色免费视频 | 丁香六月婷婷综合 | 日韩美视频 | 国产精品国产亚洲精品看不卡 | 在线观看中文字幕视频 | 999色视频 | 日本性xxx | av免费在线观看网站 | 日本久久久亚洲精品 | 亚洲精品美女久久 | 99久久婷婷国产一区二区三区 | 精品亚洲视频在线观看 | 久99精品 | 日日干夜夜操视频 | 午夜视频一区二区三区 | 亚洲五月婷| 国产九九在线 | 狠狠干中文字幕 | 国产精品日韩在线 | 欧美一区在线观看视频 | 国产特级毛片aaaaaa毛片 | 天天干夜夜操视频 | 国产中年夫妇高潮精品视频 | 国产福利专区 | 久久精品99久久久久久2456 | 久草久视频 | 中文字幕免费久久 | 精品视频123区在线观看 | 日日碰夜夜爽 | 成人亚洲精品国产www | 久久久久久久久综合 | 99免费在线视频 | 国内外激情视频 | 夜色在线资源 | 国产精品欧美日韩 | 日韩videos | 亚洲成a人片77777潘金莲 | 国产91电影在线观看 | 日韩一级黄色片 | 国产成人a v电影 | 成人久久精品 | 国产亚州精品视频 | 色综合久久久久久中文网 | 毛片网在线观看 | 麻豆视频免费在线观看 | 久久美女精品 | 夜夜爽天天爽 | 99久久99热这里只有精品 | 超碰在线免费福利 | 中文字幕一区在线 | 中文字幕中文 | 亚洲成av人片一区二区梦乃 | 91粉色视频 | 波多野结衣小视频 | 国产精品久久艹 | 蜜臀久久99精品久久久无需会员 | 伊人五月天综合 | 91精品国产99久久久久 | 99在线观看 | 色中射 | 在线观看深夜福利 | 草久视频在线 | 丁香六月av | 久久精品一区二区三区中文字幕 | 激情婷婷网| 婷婷色伊人 | 91传媒免费观看 | 日韩欧美国产视频 | 亚洲一级片在线看 | 成年人黄色大全 | 日韩大片免费观看 | 精品国产福利在线 | 日韩有码网站 | 国产精品美女久久久久aⅴ 干干夜夜 | 久久久国产精品成人免费 | 亚洲理论在线观看 | 国产高清无av久久 | 人人爽人人爽人人片 | 日韩精品视频在线观看免费 | 色吊丝在线永久观看最新版本 | 免费一级黄色 | 在线免费观看国产精品 | 丁香免费视频 | 超碰97网站| 成人黄色毛片 | 午夜在线看片 | 久久a级片| 狠狠色丁香婷婷综合久小说久 | 久久精品之| 国产 成人 久久 | 色吊丝av中文字幕 | 亚洲视频一 | 国产成人精品久久二区二区 | 91伊人久久大香线蕉蜜芽人口 | 99热精品视 | 色婷婷九月 | 欧美在线日韩在线 | 中文字幕一区二区三区久久蜜桃 | 国产黄色大片免费看 | 毛片二区 | 四虎成人免费影院 | a午夜电影 | 五月天综合激情 | 婷婷在线观看视频 | 国产视频精品免费播放 | 一区二区三区四区五区在线 | 在线精品视频免费观看 | 青青草国产免费 | 91色在线观看 | 99精品国产免费久久久久久下载 | 国产手机在线播放 | 久久精品女人毛片国产 | 91九色网站 | av免费在线网 | 成人高清在线观看 | 中文字幕乱码在线播放 | 手机在线看永久av片免费 | 亚洲热视频 | 久久久久成人精品免费播放动漫 | 伊人www22综合色 | 国产 视频 久久 | 亚洲永久国产精品 | 亚洲成av人片在线观看香蕉 | 久久综合综合久久综合 | 胖bbbb搡bbbb擦bbbb | 99久久日韩精品视频免费在线观看 | 日韩电影黄色 | 免费看国产曰批40分钟 | 精品亚洲一区二区 | 精品国产91亚洲一区二区三区www | 在线免费看片 | 亚洲一级久久 | 黄色网址在线播放 | 天堂网av在线 | 97视频在线观看免费 | 日韩在线小视频 | 亚洲欧美综合精品久久成人 | 久久精品视频免费播放 | 国产69精品久久久久99尤 | 夜夜干夜夜 | 九九视频在线观看视频6 | 亚洲精品乱码久久久久久蜜桃不爽 | 热久久视久久精品18亚洲精品 | 久久伊人八月婷婷综合激情 | 美女黄网久久 | 久久久精品免费观看 | 色综合天天在线 | 日韩性xxxx| 一区精品在线 | 国产麻豆视频在线观看 | 国产 日韩 在线 亚洲 字幕 中文 | 日韩资源在线观看 | 国产精品一区二区久久国产 | 成人动漫视频在线 | 日韩三级免费 | www99久久| 免费观看完整版无人区 | 国产又粗又猛又爽 | 成人午夜久久 | 久久亚洲精品国产亚洲老地址 | 天天爽夜夜爽人人爽一区二区 | 亚洲精品黄| 婷婷丁香七月 | 欧美日韩一区二区视频在线观看 | 天天操天天射天天操 | 婷婷在线观看视频 | 91黄色在线视频 | 国产精品一区二区精品视频免费看 | 五月天激情电影 | 一级免费看 | 精品欧美小视频在线观看 | 日韩免费av网址 | 欧美精品九九99久久 | 国产黄色大片 | 黄色aa久久 | 欧美日韩观看 | 久久久国产一区 | 99视频免费在线观看 | 亚洲免费精品视频 | 久久久国产在线视频 | 一区二区三区免费在线观看 | avlulu久久精品| 91精品一区二区三区久久久久久 | 日本中文字幕在线电影 | 亚洲国产中文在线观看 | 欧美一级片播放 | 精品一区二区三区在线播放 | 国产视频导航 | 91久久精品日日躁夜夜躁国产 | 中文字幕免费国产精品 | 又黄又刺激 | 九九久久精品视频 | 婷婷色综合网 | 2021av在线 | 欧美狠狠色 | 免费黄色av片 | 日本精品视频免费 | 黄网站大全| 韩国一区二区三区在线观看 | 国产一区二区电影在线观看 | 97精品国产97久久久久久春色 | 黄色av成人在线观看 | 日批视频在线 | 亚洲国产精品成人女人久久 | 国产一区二区在线影院 | 97综合在线| 在线小视频 | 日韩黄色软件 | 91九色蝌蚪国产 | 97精品国产aⅴ | 91九色自拍 | 1000部国产精品成人观看 | 欧美在线视频免费 | 中文字幕在线看片 | 久久高清片 | 亚洲精品www. | 日韩xxxx视频 | 97视频在线免费播放 | 国产一级电影免费观看 | 99视频免费在线观看 | 国内精品视频在线 | 丁香五香天综合情 | 亚洲精品xx| 美国av大片| 日韩一级黄色片 | 国产精品久久久久久久久久久免费看 | 精品一二三区视频 | 久久精品99国产精品亚洲最刺激 | 美女黄频 | 日韩a在线观看 | 九九国产精品视频 | 日本黄色大片免费看 | 国产一区二区免费在线观看 | 国产资源精品在线观看 | 天天操天天操天天爽 | 在线精品观看国产 | 欧美性久久久 | 婷婷久久久久 | 黄色资源在线观看 | 久久热亚洲 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 黄色小网站在线观看 | 欧洲激情在线 | 97人人人| 精品福利在线观看 | 狠狠狠色丁香综合久久天下网 | 国内丰满少妇猛烈精品播放 | 国产免费久久久久 | 免费视频在线观看网站 | 国模视频一区二区 | 午夜影院一级 | 在线观看av的网站 | 特级西西444www大胆高清无视频 | 成人影片在线播放 | 99久久精品免费看国产四区 | 免费久久99精品国产婷婷六月 | 美女久久99| 五月开心婷婷 | 超级碰视频 | 久久免费视频在线观看6 | 国产婷婷视频在线 | 91精品久久久久 | 五月婷婷综合在线视频 | 国产精品 国内视频 | 久草在线欧美 | 97超碰在线视 | 中文字幕av全部资源www中文字幕在线观看 | 波多野结衣亚洲一区二区 | 日韩av一卡二卡三卡 | 精品国产色| 国产日韩欧美自拍 | 免费成人在线观看视频 | 九九久久久久99精品 | 中文字幕888 | 国产一区在线视频播放 | 国产xxxxx在线观看 | 在线免费av网站 | 日日日天天天 | 国产成人精品综合久久久 | 国产精品久久婷婷六月丁香 | 久久久网 | 97在线视频免费看 | 天天插日日射 | 99久久精品免费看国产免费软件 | 精品一区二区久久久久久久网站 | 中文字幕超清在线免费 | 欧洲精品久久久久毛片完整版 | 亚州黄色一级 | 色偷偷人人澡久久超碰69 | 亚洲男男gaygay无套同网址 | 国产一级在线看 | 欧美贵妇性狂欢 | 日本精品小视频 | 国产精品一区二区三区久久久 | 日本久久综合网 | 色综合天天综合网国产成人网 | 九九久久久久久久久激情 | 免费看精品久久片 | 久草精品视频在线观看 | 天天色天天射天天干 | 国产精品乱码久久 | 超碰在线亚洲 | 久久人人爽人人 | 国产精品免费成人 | 亚洲经典精品 | 国产精品婷婷午夜在线观看 | 人人插人人艹 | 欧美激情视频一二区 | 欧美国产日韩在线视频 | 久久久不卡影院 | 国产一区私人高清影院 | 国产伦精品一区二区三区高清 | 婷婷在线网站 | 日本不卡一区二区三区在线观看 | 狠狠操综合 | 一区二区三区在线视频111 | 欧美午夜精品久久久久久浪潮 | 国产精品美女久久久久久久久 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 在线观看av国产 | 国产婷婷在线观看 | 99热在| 国产精品久久久亚洲 | 在线看日韩 | 99中文视频在线 | 欧美嫩草影院 | 日韩成人邪恶影片 | 亚洲成人动漫在线观看 | 久久精彩视频 | 亚洲午夜精品在线观看 | 欧美做受高潮 | 国产精品一区二区三区观看 | 亚洲视频久久久 | 亚洲3级 | 黄色精品国产 | 色在线免费观看 | 91大片网站| 日韩免费视频 | 亚洲精品视频国产 | 久久综合久色欧美综合狠狠 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 婷婷久久国产 | 亚洲一级电影视频 | www色| 欧美高清视频不卡网 | 黄色福利网站 | 国产精品网在线观看 | 在线免费观看一区二区三区 | 久久综合久久久 | 国产精品免费一区二区三区 | 亚洲天天综合网 | 亚洲狠狠丁香婷婷综合久久久 | 91网站免费观看 | 欧美精品v国产精品 | 色婷婷中文 | 免费网站在线观看成人 | 国产老太婆免费交性大片 | 91传媒免费观看 | 国产精品免费视频一区二区 | 在线精品一区二区 | 久久人人爽人人人人片 | 日本aaa在线观看 | 91av色| 亚洲成人国产精品 | 欧美另类高潮 | 久久av一区二区三区亚洲 | 欧美日韩亚洲在线观看 | 欧美日本啪啪无遮挡网站 | 欧美人zozo| 婷婷av综合 | 国产资源网站 | 欧美视频在线观看免费网址 | 色综合久久中文字幕综合网 | 亚洲三级在线播放 | 色欧美视频 | 日韩在线播放av | 欧美性大战| 亚洲成人资源网 | 狠狠干婷婷 | 日本中文字幕在线一区 | 成人97视频一区二区 | 精品国产三级 | 97碰视频 | 国产探花在线看 | 色综合小说| 亚洲黄色区 | 又黄又爽又色无遮挡免费 | 日本h视频在线观看 | 久草在线资源网 | 久久久久久久久久久久久9999 | 91精彩视频在线观看 | 91资源在线| 不卡视频国产 | 美女福利视频网 | 午夜国产福利在线 | 在线观看的黄色 | 亚洲人毛片 | 国产成人一区二区三区 | 欧美精品被 | 天海翼一区二区三区免费 | 婷婷五天天在线视频 | 国产精品免费小视频 | 狠狠狠色丁香婷婷综合久久88 | 97视频在线免费 | 午夜精品视频免费在线观看 | 久久久www成人免费毛片麻豆 | 国产黄色片久久久 | 91在线网址| 天天干天天爽 | 91在线观看视频网站 | 黄色网址国产 | 成人cosplay福利网站 | 九九热只有这里有精品 | 亚洲小视频在线观看 | 特级xxxxx欧美| 91爱爱网址 | av 一区二区三区四区 | 久久99久久99免费视频 | 伊人国产在线播放 | 一区二区成人国产精品 | 日韩在线观看 | 亚洲免费观看视频 | 日韩在线小视频 | 欧美视频在线二区 | 久久综合免费视频影院 | 国内少妇自拍视频一区 | 欧美性天天 | 亚洲精品网站在线 | 一区二区影院 | 色综合色综合久久综合频道88 | 欧美在线一 | 国产视频精选在线 | 日韩av偷拍 | 深爱五月网 | 久草免费在线 | 欧美激情视频三区 | 亚洲精品av中文字幕在线在线 | 欧美日一级片 | 国外av在线 | 国产精品免费人成网站 | 黄色电影在线免费观看 | 操操操日日 | 天天天插 | 久久久久久久av麻豆果冻 | 黄色一级大片免费看 | 人人干狠狠干 | 欧美91精品国产自产 | 免费视频一二三区 | 国产91精品久久久久久 | 日韩高清免费无专码区 | 国内小视频在线观看 | 日韩免费在线网站 | 免费看片黄色 | 久久精品2| 五月婷婷天堂 | 毛片区 | av性网站 | 美女天天操 | 国产亚洲va综合人人澡精品 | 亚洲自拍av在线 | 日日干天天操 | 久久免费电影网 | 亚洲精品88欧美一区二区 | 久久久免费看 | 天天天干天天天操 | 色欧美视频 | 亚洲欧美日韩国产一区二区 | 免费日韩一区二区三区 | 国产日韩精品一区二区三区 | 热久久最新地址 | 麻豆高清免费国产一区 | 国产91精品一区二区麻豆亚洲 | 国产精品毛片一区二区在线 | 在线看小早川怜子av | 亚洲精品www. | 午夜婷婷在线播放 | 成人在线观看资源 | 免费观看一级特黄欧美大片 | 九九热国产视频 | 热久久这里只有精品 | 人人网av | 国产一级特黄电影 | 亚洲第一伊人 | 人人爱人人添 | 色a资源在线 | 精品美女久久 | 天天插天天操天天干 | 中文字幕乱码在线播放 | 国产手机视频在线 | 亚洲尺码电影av久久 | 国产福利在线 | 香蕉视频免费在线播放 | 青青久视频 | 欧美伦理一区二区三区 | 亚洲日韩精品欧美一区二区 | 99热精品在线观看 | 国产黄色观看 | 久久伦理网 | 亚洲第一中文网 | 亚洲 欧美 成人 | 日韩精品专区 | 中文字幕中文字幕在线中文字幕三区 | 久久综合免费视频影院 | av免费网站在线观看 | 永久免费精品视频网站 | 精品福利网站 | 五月婷婷亚洲 | 国产伦精品一区二区三区高清 | 99国产免费网址 | av成人资源 | 一本到在线| 麻豆视频成人 | 免费看黄视频 | 91大神精品视频 | 日韩a欧美 | 亚洲成人资源网 | 精品国产_亚洲人成在线 | 黄色一级在线观看 | 97超碰人人模人人人爽人人爱 | 成年人看片网站 | 免费一级片观看 | 国产日韩在线观看一区 | 久久免费视频4 | 久久久久久伊人 | 国产亚洲欧美日韩高清 | 欧美精品乱码久久久久久 | 成人97视频一区二区 | 久久免费视频5 | 特及黄色片 | 国产一性一爱一乱一交 | 激情综合站 | 国产精品久久久久一区二区 | 狠狠干美女 | 久久久成人精品 | 美女黄网久久 | 一区精品在线 | 日韩欧美成人网 | 依人成人综合网 | a√天堂中文在线 | 99精品在线看 | 国产精品第10页 | 亚洲精品乱码久久久久久写真 | 国产精品一区二区三区久久久 | 一区二区免费不卡在线 | 亚洲精品动漫在线 | 亚洲国产视频网站 | 在线免费观看视频a | 91亚洲国产| 狠狠色丁香婷婷综合久久片 | 综合久久久久久久久 | 六月激情丁香 | 欧美日韩性生活 | 色中色综合 | 日本护士三级少妇三级999 | 在线国产一区二区三区 | 91三级在线观看 | 中文字幕在线免费看线人 | ,午夜性刺激免费看视频 | 国产精品国产三级国产aⅴ无密码 | 欧美日韩精品二区第二页 | 久久久国产一区二区三区四区小说 | 伊人看片 | 97超碰免费 | 亚洲国产一区av | 日韩草比| 四虎国产永久在线精品 | 天天天干| 在线看岛国av | 久草网首页 | 四虎欧美| 久久精品艹 | 精品国产欧美一区二区三区不卡 | 一区二区三区在线观看中文字幕 | 欧美性直播 | 国产精品k频道 | 久草国产在线观看 | 中文字幕在线影院 | 欧洲av不卡| 精品免费久久久久久 | 不卡电影免费在线播放一区 | 午夜久久久精品 | 日本久久影视 | 91亚洲欧美激情 | 国产精品一区在线观看你懂的 | 日韩精品一区二区三区不卡 | 亚洲女欲精品久久久久久久18 | 草久视频在线观看 | 日韩免费一区二区在线观看 | 国产高清视频在线播放 | 四虎成人免费影院 | 成人国产一区二区 | 国产理论一区二区三区 | 中文在线中文a | 久久99视频精品 | 日韩电影在线视频 | 中文十次啦 | 人人看黄色 | 久草在线视频精品 | 日韩成人av在线 | 国产在线精品区 | 91免费视频网站在线观看 | 日韩在线高清 | 亚洲精品国产第一综合99久久 | 久久视频在线观看 |