WM系统滚动条设定

WM滚动条的操作原理,要创建一个带滚动条的窗口,使用createwindow创建时带入WS_VSCROLLWS_HSCROLLod类型就能创建一个带滚动条的窗口,然后在程序中调用SetScrollInfo,配置滚动条。滚动条操作分三部:范围刷新,消息体响应,重绘界面

范围刷新:在这里填充SCROLLINFO结构,建立一系列界面与滚动条尺寸范围的对应关系

下面要填充一个scrollinfo结构,代码显示的是对纵向滚动条定位数据的填充:

    //尺寸

SCROLLINFO sbi = { sizeof(SCROLLINFO)};

 

    //客户区域

RECT rcClient;

    GetClientRect(hWnd, &rcClient);

 

    //窗口类型,需要根据窗口类型设定客户区域,因为如果纵横携有滚动条的话,需要把滚动条所占的区域从客户区域去掉,才是真正的客户显示区

DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);

    rcClient.right -= (dwStyle | WS_HSCROLL) ? 0 : GetSystemMetrics(SM_CXVSCROLL);

rcClient.bottom -= (dwStyle | WS_VSCROLL) ? 0 : GetSystemMetrics(SM_CYHSCROLL);

 

//计算超出,就是在显示区外的尺寸。(计算超出提供给手势操作使用)

    g_nMaxXExtent = g_nBmpWidth - rcClient.right;

g_nMaxYExtent = g_nBmpHeight - rcClient.bottom;

//这是滑块的位置点,位置点和段量是有关系的,段量是10,后面就是102030

    g_nXPos = 0;

    g_nYPos = 0;

 

//info的标志位,SIF_DISABLENOSCROLL表示当界面不需要滚动时,滚动条还在界面上,设为灰化状态,如果不设这段标志,将把滚动条移掉

sbi.fMask= SIF_ALL | <

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值