第四章 4-3 滚动条
来源:互联网 发布:在淘宝上如何做代理 编辑:程序博客网 时间:2024/05/22 10:23
本文以垂直滚动轴为例,对滚动条的设置进行总结
1,在创建窗口函数的地方添加滚动条参数
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW|WS_VSCROLL, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
WS_VSCROLL 表示垂直滚动条
WS_HSCROLL 表示水平滚动条
2,窗口的尺寸改变是对参数进行相应的更改
case WM_SIZE: cyClient = HIWORD(lParam);//客户区的高度在lParam的高位置 break;
3,创建窗口时对滚动条的位置进行设定
case WM_CREATE: hdc = GetDC(hWnd); GetTextMetrics(hdc, &tm); iVscrollPos = 0; SetScrollRange(hWnd, SB_VERT, 0, MAX_LINE - 1, FALSE); SetScrollPos(hWnd, SB_VERT, 0, TRUE); ReleaseDC(hWnd, hdc); break;
SetScrollRange() 设定滚动条的范围
SetScrollPos() 设定滚动条的位置
4,对滚动条消息的设置
case WM_VSCROLL: switch (LOWORD(wParam))//在wParam的低位置 { case SB_LINEDOWN: iVscrollPos += 1; break; case SB_LINEUP: iVscrollPos -= 1; break; case SB_PAGEDOWN: iVscrollPos += cyClient / cyChar; break; case SB_PAGEUP: iVscrollPos -= cyClient / cyChar; break; case SB_THUMBPOSITION://点击滚动条滑动 iVscrollPos = HIWORD(wParam); break; default: break; } iVscrollPos = max(0, min(iVscrollPos,MAX_LINE-1));//对滚动条的范围进行限定 if (iVscrollPos != GetScrollPos(hWnd,SB_VERT)) { SetScrollPos(hWnd, SB_VERT, iVscrollPos, TRUE); InvalidateRect(hWnd, NULL, TRUE);//对客户区失效让其重画 } break;
5,对文本进行移动
for (int i = 0; i <= MAX_LINE; ++i){ x = 0; y = cyChar*(i - iVscrollPos);//对y轴的坐标进行变动,使其整体向上移动 iLong = wsprintf(szBuffer, TEXT("Hello %d"), i+1); TextOut(hdc, x, y, szBuffer, lstrlen(szBuffer)); }
0 0
- 第四章 4-3 滚动条
- 第四章 4-4 滚动条的升级版
- 第四章 输出文字(滚动条)
- 第四章 输出文字(滚动条)
- 第四章 输出文字(滚动条)
- 第四章 文本输出 (2.滚动条)
- 第四十三节 java学习——滚动条
- 4滚动条 SCROLL BAR
- SkinUI入门教程(七) 第四组UI组件:进度条、分割条、滚动条和滑块
- 滚动条
- 滚动条
- 滚动条
- 滚动条
- 滚动条
- 滚动条
- 滚动条
- 滚动条
- 滚动条
- Centos6.8+cm5.3.6+cdh5.3.6安装
- 程序员为什么要放弃自己的岗位,考虑转行?
- 每一次结束都是一次新的开始
- MySQL 常规排序、自定义排序和按中文拼音字母排序
- java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
- 第四章 4-3 滚动条
- Matlab数字图像处理基础【11】
- docker-compose是干什么的?
- WEB阶段中文乱码解决方式总结:
- Android中Spinner控件的使用
- Java NIO初步了解
- ITK 形态学处理(Morph process)
- iOS每日一记之———————————————为Cell设置部分圆角 类似于ipad的设置界面效果
- 安装sql sever management studio出现29506错误