您的位置:首页 > 其它

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

2016-11-19 14:44 357 查看
基本的控件(静态文本+编辑框+按钮+单选+复选+组合框+列表框+滚动条),我们只剩下滚动条控件了。

滚动条控件有些不一样,它不是在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的消息处理中进行的控件,比如树控件等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WIN32