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...