scrollBar的使用及對話方塊的標準滾動的使用

2021-06-21 07:05:50 字數 3997 閱讀 5333

1.使用scrollbar控制項條的使用

首先,假設新增的是水平滾動條,給滾動條控制項關聯乙個控制項變數m_hscroll;

在初始化對話方塊函式中設定滾動條的範圍

m_hscroll.setscrollrange(0,100);

最大值最小值設定,和設定一開始的滾動條滑塊的位置m_hscroll.setscrollpos(5);

然後,新增滾動條的訊息響應命令wm_hscroll,會自動新增void ccolordlg::onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar)。

在該函式內部的程式如下所示

void ccolordlg::onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar)

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways-unitmove,0,srccopy);

m_hscroll.setscrollpos(pos);

break;

case sb_linedown:

pos+=1;

if (pos>100)

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways+unitmove,0,srccopy);

m_hscroll.setscrollpos(pos);

break;

case sb_pageup:

pos-=10;

if (pos<0)

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways-(unitmove*10),0,srccopy);

m_hscroll.setscrollpos(pos);

break;

case sb_pagedown:

pos+=10;

if (pos>100)

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways+(unitmove*10),0,srccopy);

m_hscroll.setscrollpos(pos);

break;

case sb_top:

pos=0;

m_hscroll.setscrollpos(pos);

break;

case sb_bottom:

pos=100;

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,xlast-rect.width(),0,srccopy);

m_hscroll.setscrollpos(pos);

break;

case sb_thumbposition:

pos=npos;

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,unitmove*npos,0,srccopy);

m_hscroll.setscrollpos(pos);

break;

case sb_thumbtrack:   // drag scroll box to specified position. npos is the

pos=npos;

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,unitmove*pos,0,srccopy);

m_hscroll.setscrollpos(pos);

break; }

//cdialog::onhscroll(nsbcode, npos, pscrollbar);使用自己新增的scrollbar時,注釋該句,否則無法設定pos的值,它總是使pos=0}

2.對話方塊標準滾動條的使用

首先,在oninitdialog函式進行初始設定

bool ccolordlg::oninitdialog()

同理,新增訊息響應命令wm_hscroll,會自動新增

void ccolordlg::onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar)。

void ccolordlg::onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar)

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways-unitmove,0,srccopy);

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

case sb_linedown:

scrollinfo.npos+=1;

if (scrollinfo.npos>scrollinfo.nmax)

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways+unitmove,0,srccopy);

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

case sb_pageup:

scrollinfo.npos-=10;

if (scrollinfo.npos

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways-(unitmove*10),0,srccopy);

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

case sb_pagedown:

scrollinfo.npos+=10;

if (scrollinfo.npos>scrollinfo.nmax)

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,movealways+(unitmove*10),0,srccopy);

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

case sb_top:

scrollinfo.npos=scrollinfo.nmin;

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

case sb_bottom:

scrollinfo.npos=scrollinfo.nmax;

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,xlast-rect.width(),0,srccopy);

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

case sb_thumbposition:

scrollinfo.npos=npos;

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,unitmove*npos,0,srccopy);

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

case sb_thumbtrack:   // drag scroll box to specified position. npos is the

scrollinfo.npos = npos; 

pdc->bitblt(0,0,rect.width(),rect.height(),&dcmem,unitmove*pos,0,srccopy);

setscrollinfo(sb_horz,&scrollinfo,sif_all);

break;

}cdialog::onhscroll(nsbcode, npos, pscrollbar);

}

scrollbar的屬性及樣式分類 css

scrollbar的屬性及樣式分類 css 1 overflow內容溢位時的設定 設定被設定物件是否顯示滾動條 overflow x水平方向內容溢位時的設定 overflow y垂直方向內容溢位時的設定 以上三個屬性設定的值為visible 預設值 scroll hidden auto。2 scro...

scrollbar的動態定位

在.net開發中,有時候需要自定義滾動條的位置,這裡我們以tabpage為例,通常如果你要直接如下賦值 this.tabcontrol.selectedtab.autoscrollposition 20 那麼會提示錯誤,無法賦值,事實上應該如下才可以 point p new point needmo...

Windows 中的 Scroll Bar 控制項

scroll bar 控制項是乙個很簡單的控制項,與他相關的屬性,訊息和函式都不是很多,總體來說是乙個比較簡單的控制項。scroll bar 只有兩個重要的屬性,乙個就是他的滾動範圍,另乙個就是他的當前位置。點選 vertical scroll 時傳送的訊息 sb vscroll 點選 horizo...