對話方塊中滾動條方便用

2021-05-25 14:26:11 字數 2580 閱讀 5050

在對話方塊上要應用滾動條,首先當然是要將對話方塊的屬性vertical scroll選中(在這裡只介紹縱向滾動條,橫向滾動條與之原理相同)。然後是按ctlr+w進入classwizard選中對話訊息wm_onvscroll,並新增它的響應函式,接著進入**編輯區,寫入**:

void crq::onvscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar)

// todo: add your message handler code here and/or call default

scrollinfo scrollinfo;

getscrollinfo(sb_vert,&scrollinfo,sif_all); 

switch (nsbcode) 

case sb_bottom: 

scrollwindow(0,(scrollinfo.npos-scrollinfo.nmax)*10); 

scrollinfo.npos = scrollinfo.nmax; 

setscrollinfo(sb_vert,&scrollinfo,sif_all); 

break; 

case sb_top: 

scrollwindow(0,(scrollinfo.npos-scrollinfo.nmin)*10); 

scrollinfo.npos = scrollinfo.nmin; 

setscrollinfo(sb_vert,&scrollinfo,sif_all); 

break; 

case sb_lineup: 

scrollinfo.npos -= 1; 

if (scrollinfo.nposscrollinfo.npos = scrollinfo.nmin; 

break;

setscrollinfo(sb_vert,&scrollinfo,sif_all); 

scrollwindow(0,10); 

break; 

case sb_linedown:

scrollinfo.npos += 1; 

if (scrollinfo.npos>scrollinfo.nmax) 

scrollinfo.npos = scrollinfo.nmax; 

break; 

setscrollinfo(sb_vert,&scrollinfo,sif_all); 

scrollwindow(0,-10); 

break; 

case sb_pageup: 

scrollinfo.npos -= 5; 

if (scrollinfo.nposscrollinfo.npos = scrollinfo.nmin; 

break; 

setscrollinfo(sb_vert,&scrollinfo,sif_all); 

scrollwindow(0,10*5); 

break; 

case sb_pagedown: 

scrollinfo.npos += 5; 

if (scrollinfo.npos>scrollinfo.nmax) 

scrollinfo.npos = scrollinfo.nmax; 

break; 

setscrollinfo(sb_vert,&scrollinfo,sif_all); 

scrollwindow(0,-10*5); 

break; 

case sb_endscroll: 

// messagebox("sb_endscroll"); 

break; 

case sb_thumbposition: 

// scrollwindow(0,(scrollinfo.npos-npos)*10); 

// scrollinfo.npos = npos; 

// setscrollinfo(sb_vert,&scrollinfo,sif_all); 

break; 

case sb_thumbtrack: 

scrollwindow(0,(scrollinfo.npos-npos)*10); 

scrollinfo.npos = npos; 

setscrollinfo(sb_vert,&scrollinfo,sif_all); 

break; 

cdialog::onvscroll(nsbcode, npos, pscrollbar);

以上**完成後,滾動條已可以使用了。

但是應該如何將其它控制項安排在對話方塊呢?很簡單,你想用多大的對話方塊就將它拉多大,只需要在對話方塊所用的***x.cpp檔案的void c***x::dodataexchange(cdataexchange* pdx)函式體中寫入**:

setwindowpos(null,0,0,800,600,swp_nomove | swp_nozorder);

其中800和600兩個數字分別為對話方塊建立時的寬度和高度。

這樣就可以方便地使用滾動條了。

MFC,對話方塊滾動條使用

不用管是什麼意思,我也不知道,能用就行,對話方塊中設定自動新增那種滾動條,在建立滾動條函式,複製貼上 橫向滾動條 onhscroll scrollinfo scrollinfo getscrollinfo sb horz,scrollinfo,sif all switch nsbcode setsc...

MFC對話方塊處理滾動條

mfc對話方塊處理滾動條 flyfish 原理nmin specifies the minimum scrolling position.滾動條範圍最小值 nmax specifies the maximum scrolling position.滾動條範圍最大值 proportional scro...

mfc 帶滾動條的對話方塊 滾動條訊息響應方法

在對話方塊對應的類屬性裡新增onvscroll 裡面新增 如下 void picture parent dlg onvscroll uint nsbcode,uint npos,cscrollbar pscrollbar setscrollinfo sb vert,scrollinfo,sif al...