windows学习笔记二 --滚动条的绘制
2015-08-02 16:28
288 查看
1.创建窗口时设置垂直滚动条风格
hwnd = CreateWindow(szAppName, TEXT("The hello world program"), WS_OVERLAPPEDWINDOW|WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
2.设定滚动条的范围和初始位置
SetScrollRange(hwnd, SB_VERT, 0, NUMLINES - 1, FALSE);
SetScrollPos(hwnd,SB_VERT,iVscrollPos,TRUE);
3.一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。 wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。lParam 通常是一个指向内存中数据的指针。
case WM_SIZE:
cyClient = HIWORD(lParam);
return 0;
case WM_VSCROLL:
switch (LOWORD(wParam))
{
case SB_LINEUP:
iVscrollPos -= 1;
break;
case SB_LINEDOWN:
iVscrollPos += 1;
break;
case SB_PAGEUP:
iVscrollPos -= cyClient / cyChar;
break;
case SB_PAGEDOWN:
iVscrollPos += cyClient / cyChar;
break;
case SB_THUMBPOSITION:
iVscrollPos = HIWORD(wParam);
break;
}
iVscrollPos = max(0, min(iVscrollPos, NUMLINES - 1));
if (iVscrollPos != GetScrollPos(hwnd, SB_VERT))
{
SetScrollPos(hwnd, SB_VERT, iVscrollPos, TRUE);
InvalidateRect(hwnd, NULL, TRUE);
}
return 0;
case WM_PAINT:
for(i=0;i<100;i++){
y = cyChar * (i - iVscrollPos);
TextOut(hdc, 0, y, a[i], lstrlen(a[i]));
SetTextAlign(hdc, TA_RIGHT | TA_TOP);}
hwnd = CreateWindow(szAppName, TEXT("The hello world program"), WS_OVERLAPPEDWINDOW|WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
2.设定滚动条的范围和初始位置
SetScrollRange(hwnd, SB_VERT, 0, NUMLINES - 1, FALSE);
SetScrollPos(hwnd,SB_VERT,iVscrollPos,TRUE);
3.一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。 wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。lParam 通常是一个指向内存中数据的指针。
case WM_SIZE:
cyClient = HIWORD(lParam);
return 0;
case WM_VSCROLL:
switch (LOWORD(wParam))
{
case SB_LINEUP:
iVscrollPos -= 1;
break;
case SB_LINEDOWN:
iVscrollPos += 1;
break;
case SB_PAGEUP:
iVscrollPos -= cyClient / cyChar;
break;
case SB_PAGEDOWN:
iVscrollPos += cyClient / cyChar;
break;
case SB_THUMBPOSITION:
iVscrollPos = HIWORD(wParam);
break;
}
iVscrollPos = max(0, min(iVscrollPos, NUMLINES - 1));
if (iVscrollPos != GetScrollPos(hwnd, SB_VERT))
{
SetScrollPos(hwnd, SB_VERT, iVscrollPos, TRUE);
InvalidateRect(hwnd, NULL, TRUE);
}
return 0;
case WM_PAINT:
for(i=0;i<100;i++){
y = cyChar * (i - iVscrollPos);
TextOut(hdc, 0, y, a[i], lstrlen(a[i]));
SetTextAlign(hdc, TA_RIGHT | TA_TOP);}
相关文章推荐
- 作业配置规范文档[MS SQL]
- 作为程序员之正则表达式
- C#实现百度站长工具的主动推送功能
- 抽奖转盘
- HDU3480
- netstat监控大量ESTABLISHED连接与Time_Wait连接问题
- wxpython 32 位 ,python 64 位问题
- 【Qt OpenGL教程】06:纹理映射
- C#高级编程六十一天----LINQ中的扩展方法
- tableview的两个获得重用cell方法dequeueReusableCellWithIdentifier的区别
- 图像基础
- hdu1016(Prime Ring Problem)
- [C++] 分享国外程序员的 C++开发资源大全
- Add Binary
- wxpython 32 位 ,python 64 位问题
- FATE(费用背包,没懂)
- Tarena - 变量与java的基本数据类型(int,long,float,double,char,boolean)
- 数据库的最简单实现
- JSON2:JAVA对JSON的相互转换
- 九度OJ 题目1011:最大连续子序列