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;
其中,需要注意几点:
1. 垂直滚动条上下与大小是反的;
2. 尽量不要在滚动条中设定负数的范围,会比较麻烦,因为wParam是无符号的,还需要转换;如果不转换那么手动滑块位置的响应就会出现错误了。
这是我们第一次遇到~后面我们还会接触到许多不在WM_COMMAND的消息处理中进行的控件,比如树控件等。
滚动条控件有些不一样,它不是在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强化练习2.2_单选与复选控件
- win32强化练习3.4_绘制坦克及四向移动(键盘进阶)
- win32强化练习3.6_贪吃蛇半部
- win32强化练习4.7_快速建立TreeView
- win32强化练习2.3_四则计算器(组合框控件)
- win32强化练习3.7_拖动窗口
- win32强化练习2.4_双击播放MP3(列表框与通知码)
- win32强化练习4.0_资源相关练习简介
- win32强化练习4.4_状态栏、坐标与时钟
- win32强化练习4.3_粗糙的SPY获取别人的窗口
- win32强化练习3.3_定时器与弹球
- win32强化练习4.5_标准工具栏的使用
- win32强化练习4.8_TreeView快速应用(处理消息)
- win32强化练习4.9_快速建立ListView
- win32强化练习4.6_自定义图标或图像的工具栏
- win32强化练习0.1_开发环境搭建
- win32强化练习4.1_更改别人的菜单
- win32强化练习1.1_MessageBox简单应用及手动编译
- win32强化练习5.1_动画秒表(位图初步)
- win32强化练习2.0_手工打造自己的对话框程序模板