您的位置:首页 > 其它

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);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: