分享
 
 
 

CScrollBar

王朝百科·作者佚名  2010-06-27
窄屏简体版  字體: |||超大  

CScrollBar

CScrollBar是滚动条类,窗口自带的滚动条绝大部分时候是系统处理的,我们设置一下相关属性就行了。

成员函数简介BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

动态创建一个滚动条。

dwStyle是风格;rect是范围,也就是滚动条位置和大小;pParentWnd, 父窗口;nID是ID,唯一标识。

int GetScrollPos( ) const;

取得滚动条的位置。

int SetScrollPos( int nPos, BOOL bRedraw = TRUE );

设置滚动条的位置,bRedraw是否重画。

void GetScrollRange( LPINT lpMinPos, LPINT lpMaxPos ) const;

取得滚动条的范围,就是最小值和最大值。

void SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE );

设置滚动条的范围。

void ShowScrollBar( BOOL bShow = TRUE );

显示或隐藏滚动条。

BOOL EnableScrollBar( UINT nArrowFlags = ESB_ENABLE_BOTH );

启用或禁用滚动条的箭头。nArrowFlags取值如下:

ESB_ENABLE_BOTH,启用两个箭头。

ESB_DISABLE_LTUP,禁用左边(或上边)的箭头。

ESB_DISABLE_RTDN,禁用右边(或下边)的箭头。

ESB_DISABLE_BOTH,禁用两个箭头。

BOOL SetScrollInfo( LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE );

设置滚动条。

BOOL GetScrollInfo( LPSCROLLINFO lpScrollInfo, UINT nMask );

取得滚动条。

int GetScrollLimit( );

取得滚动条的最大位置。

相关结构体typedef struct tagSCROLLINFO { // si

UINT cbSize;

UINT fMask;

int nMin;

int nMax;

UINT nPage;

int nPos;

int nTrackPos;

} SCROLLINFO;

typedef SCROLLINFO FAR *LPSCROLLINFO;

cbSize,本结构体的大小,单位是字节。

fMask,参数设置,取值如下:

SIF_ALL,所有参数都有效。

SIF_DISABLENOSCROLL,

SIF_PAGE,nPage参数有效。

SIF_POS,nPos参数有效。

SIF_RANGE,nMin和nMax有效。

SIF_TRACKPOS,nTrackPos有效。

nMin,最小值。

nMax,最大值。

nPage,页大小。

nPos,位置。

nTrackPos,拖动位置。

代码实例在Windows 95中,滚动条控件被轨道条取代,不提倡使用单独的滚动条控件,所以只弄一个简单的例子。

一,新建一个基于对话框的工程ScrollBar。

二,在对话框上加一个水平滚动条,钩选“Tab stop”属性,这样方便用键盘操作。利用类向导为其关联一个成员变量CScrollBar型的变量m_scroll。

三,在BOOL CScrollBarDlg::OnInitDialog()的最后加如下代码:

m_scroll.SetScrollRange(0,100);

四,增加一个编辑框,ID为IDC_EDIT1,钩选只读属性。

五,利用类向导在CScrollBarDlg中为增加WM_HSCROLL的响应函数,代码如下:

void CScrollBarDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

if( NULL != pScrollBar && m_scroll.GetDlgCtrlID() == pScrollBar->GetDlgCtrlID())

{

int iPos = m_scroll.GetScrollPos();

if( SB_LINELEFT == nSBCode )

iPos-- ;

else if(SB_PAGELEFT == nSBCode )

iPos -= 10 ;

else if( SB_LINERIGHT == nSBCode )

iPos++ ;

else if(SB_PAGERIGHT == nSBCode )

iPos += 10 ;

else if( SB_LEFT == nSBCode )

iPos = 0 ;

else if( SB_RIGHT == nSBCode )

iPos = 100 ;

else if (SB_THUMBTRACK == nSBCode )

{

SCROLLINFO scrollInfo;

scrollInfo.cbSize = sizeof(scrollInfo);

pScrollBar->GetScrollInfo(&scrollInfo,SIF_TRACKPOS);

iPos = scrollInfo.nTrackPos ;

}

else

return ;

if(iPos < 0 )

iPos = 0 ;

if( iPos > 100 )

iPos = 100;

CString strMess ;

strMess.Format("分数=%d

",iPos);

CWnd* pWnd = GetDlgItem(IDC_EDIT1);

if( NULL != pWnd )

pWnd->SetWindowText(strMess);

pScrollBar->SetScrollPos(iPos);

}

CDialog::OnHScroll(nSBCode, nPos, pScrollBar);

}

[1]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有