win32强化练习2.5_滚动条初步

基本的控件(静态文本+编辑框+按钮+单选+复选+组合框+列表框+滚动条),我们只剩下滚动条控件了。

滚动条控件有些不一样,它不是在WM_COMMAND的消息处理中进行响应的,而是有其独立的消息:

WM_HSCROLL 或 WM_VSCROLL !因此,不要再试图在OnCommand中去实现了~


这个练习非常小,只是用个文本框来显示滚动条所在位置的数字。步骤如下:

1.  声明窗口句柄,在初始化中定义;设定滚动条的取值上下限范围,设定滑块停止的位置!

2. 在WM_HSCROLL消息处理函数中实现a. 进/退1条; b. 进/退1页; 手动滑块移动


HWND hScroll;


    hScroll = GetDlgItem(hwnd, IDC_SCROLL);
    ScrollBar_SetRange(hScroll, 0, 10, TRUE); //设置上下限范围
	ScrollBar_SetPos(hScroll, 0, TRUE);         //设置位置

case WM_HSCROLL:
{
	int i = ScrollBar_GetPos(hScroll);	//先获取位置
	SetDlgItemInt(hWnd, IDC_TEXT, i, TRUE);
	switch(LOWORD(wParam))
	{
	case SB_LINEUP:  //端点箭头
		ScrollBar_SetPos(hScroll, i - 1, TRUE); //设置位置
		break;
	case SB_LINEDOWN:
		ScrollBar_SetPos(hScroll, i + 1, TRUE);
		break;
	case SB_PAGEUP:  //空白处
		ScrollBar_SetPos(hScroll, i - 3, TRUE);
		break;
	case SB_PAGEDOWN:
		ScrollBar_SetPos(hScroll, i + 3, TRUE);
		break;
	case SB_THUMBPOSITION:  //拖动滑块位置
		int n = HIWORD(wParam);
		ScrollBar_SetPos(hScroll, n, TRUE);
		break;
	}
	break;
}

其中,需要注意几点:

1. 垂直滚动条上下与大小是反的;

2. 尽量不要在滚动条中设定负数的范围,会比较麻烦,因为wParam是无符号的,还需要转换;如果不转换那么手动滑块位置的响应就会出现错误了。


这是我们第一次遇到~后面我们还会接触到许多不在WM_COMMAND的消息处理中进行的控件,比如树控件等。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值