滾動條的建立(1)

2021-07-10 06:12:29 字數 4031 閱讀 8791

手動建立滾動條的一些api函式:

1.建構函式

cscrollbar()

例如:cscrollbar *pscrollbar;

pscrollbar = new cscrollbar;

2.生成函式

bool create( dword dwstyle, const rect& rect, cwnd* pparentwnd, uint nid );

dwstyle引數可以是以上風格中某幾個的組合,另外一般也會用到ws_child、ws_visible風格。例如,建立乙個水平滾動條控制項,dwstyle引數應該為ws_child|ws_visible|sbs_horz,建立垂直滾動條控制項時dwstyle引數應該為ws_child|ws_visible|sbs_vert。

例如:crect rect(10,10,50,20);

pscrollbar->create(sbs_vert,rect,this,1000);

3.得到滾動條方塊的當前的位置

int getscrollpos( ) const;

例如:int npos = pscrollbar->getscrollpos();

4.設定滾動條方塊的當前位置

int setscrollpos( int npos, bool bredraw = true );

例如:pscrollbar->setscrollpos(5);

5.得到當前的滾動範圍

void getscrollrange( lpint lpminpos, lpint lpmaxpos ) const;

例如:int nmin,nmax;

pscrollbar->getscrollrange(&nmin,&nmax);

6.設定當前的滾動範圍

void setscrollrange( int nminpos, int nmaxpos, bool bredraw = true );

例如:pscrollbar->setscrollrange(0,10,true);

7.顯示滾動條

void showscrollbar( bool bshow = true );

例如:pscrollbar->showscrollbar(false);

8.禁用滾動條

bool enablescrollbar( uint narrowflags = esb_enable_both );

例如:pscrollbar->enablescrollbar(esb_disable_rtdn);

9.設定當前滾動條資訊

bool setscrollinfo( lpscrollinfo lpscrollinfo, bool bredraw = true );

例如:scrollinfo sbinfo;

sbinfo.fmask = sif_all;

sbinfo.nmax = 20;

sbinfo.nmin = 0;

sbinfo.npage = 8;

sbinfo.npos = 17;

pscrollbar->setscrollinfo(&sbinfo,true);

10.獲取當前滾動條資訊

bool getscrollinfo( lpscrollinfo lpscrollinfo, uint nmask );

例如:scrollinfo sbinfo;

pscrollbar->getscrollinfo(&sbinfo);

typedef struct tagscrollinfo    scrollinfo, *lpscrollinfo;    

typedef scrollinfo const *lpcscrollinfo;

一般設定如下:
scrollinfo info;//配置滑塊的一些資訊! 注意是滑塊的! 不是滾動條 是你拖動的那個小快快   

info.cbsize = sizeof(scrollinfo); //固定! 本結構的大小

info.fmask = sif_all; //一些屬性

info.nmin = 0; //滑塊所能到達的最小範圍

info.nmax = bm.bmheight;//滑塊所能到達的最大範圍 假如是乙個影象 則為影象的高度

info.npage = 10;//滑塊的大小

info.npos = m_vscrollpos;//滑塊的位置

11.獲取當前滾動條允許的最大位置

int getscrolllimit( );

例如:int nmax = pscrollbar->getscrolllimit();

onhscroll()與onvscroll()函式

無論是標準滾動條,還是滾動條控制項,滾動條的通知訊息都是用wm_hscroll 和wm_vscroll訊息傳送出去的。對這兩個訊息的預設處理函式是cwnd::onhscroll和cwnd::onvscroll,一般需要在派生類中對這兩個函式進行過載,以實現滾動功能。也就是說,假設在乙個對話方塊中放入了乙個水平滾動條,我們可以在對話方塊類中過載onhscroll函式,並在onhscroll函式中實現滾動功能。

這兩個函式的宣告如下:

afx_msg void onhscroll(uint nsbcode,uint npos,cscrollbar* pscrollbar);

afx_msg void onvscroll(uint nsbcode,uint npos,cscrollbar* pscrollbar);

引數nsbcode是通知訊息碼,主要通知碼及含義的介紹下面已列出。npos 是滾動框的位置,只有在nsbcode為sb_thumbposition或sb_thumbtrack時,該引數才有意義。如果通知訊息是滾動條控制項發來的,那麼pscrollbar 是指向該控制項的指標,如果是標準滾動條發來的,則pscrollbar 為null。

sb_bottom/sb_right:滾動到底端(右端)

sb_top/sb_left:滾動到頂端(左端)

sb_linedown/sb_lineright:向下(向右)滾動一行(列)

sb_lineup/sb_lineleft:向上(向左)滾動一行(列)

sb_pagedown/sb_pageright:向下(向右)滾動一頁

sb_pageup/sb_pageleft:向上(向左)滾動一頁

sb_thumbposition:滾動到指定位置

sb_thumbtrack:滾動框被拖動。可利用該訊息來跟蹤對滾動框的拖動

sb_endscroll:滾動結束

建立過程:

cscrollbar* m_pscrollbar;
m_pscrollbar = new cscrollbar;

crect rect;

getdlgitem(idc_static_one)->getwindowrect(&rect);

screentoclient(&rect);//獲得相對於主窗體的座標

這裡要是要移動的相對位置

//getdlgitem(idc_img_notepad)->movewindow(rect);//移動到目標位置

rect.left = rect.right-20;

m_pscrollbar->create(sbs_vert,rect,this,idc_scrollbar);

m_pscrollbar->setscrollrange(1, 100);

m_pscrollbar->setscrollpos(20);

滾動條相關1

1.頁面文件滾動條 獲取和判斷 1.獲取瀏覽器可視區域的高度 window resize function 2.獲取瀏覽器文件的高度 window resize function 3.判斷當前 滾動條是否 最高,或最低 window scroll function else if scrolltop...

python橫向滾動條 控制滾動條

調過js指令碼控制 python 1.coding utf 8 2.from selenium import webdriver 3.import time 5.driver webdriver.firefox 6.driver.get 7.搜尋 8.driver.find element by i...

谷歌滾動條設定 IE滾動條設定

google瀏覽器chrome設定滾動條樣式 courrlist webkit scrollbar courrlist webkit scrollbar track courrlist webkit scrollbar thumb courrlist webkit scrollbar thumb w...