注册 登录
编程论坛 C图形专区

请教下大家如何用C编写侧边带有滚动条的窗口

wsfwsl 发布于 2008-02-24 15:04, 1140 次点击
请教下大家如何用C编写侧边带有滚动条的窗口,就象Windows界面下的那些窗口.
1 回复
#2
ba_wang_mao2008-02-25 09:02
//////////////////////////////////////////////////////////////////////////显示滚动条
//入口参数:
//Item = 当前项
//注:堆栈中保存如下信息:
//stack.MENU.VSCROLL.rect.top.x = 垂直滚动条窗口左上角X坐标(像素)
//stack.MENU.VSCROLL.rect.top.y = 垂直滚动条窗口左上角Y坐标(像素)
//stack.MENU.VSCROLL.rect.bottom.x = 垂直滚动条窗口右下角X坐标(像素)
//stack.MENU.VSCROLL.rect.bottom.y = 垂直滚动条窗口右下角Y坐标(像素)
//stack.MENU.VSCROLL.FillColor = 垂直滚动条填充颜色
//stack.MENU.BkColor =垂直滚动条背景颜色
//滚动条高度固定=32个像素
////////////////////////////////////////////////////////////////////////void POPUP_Display_Scroll(int Item)
{
    int y;
    GUI_STACK stack;

    if (TOP_STACK(&stack))//获取栈顶信息
    {
        setfillstyle(SOLID_FILL,stack.MENU.BkColor);//设置Bar的填充颜色(类似TURBO C)
        POPUP_Bar(stack.MENU.VSCROLL.rect.top.x,stack.MENU.VSCROLL.rect.top.y,stack.MENU.VSCROLL.rect.bottom.x,stack.MENU.VSCROLL.rect.bottom.y);//用滚动条背景颜色填充滚动窗口
        y = stack.MENU.VSCROLL.rect.top.y + Item*(stack.MENU.VSCROLL.rect.bottom.y - stack.MENU.VSCROLL.rect.top.y - 32)/stack.MENU.Max;//计算滚动条起始位置
        if (y+32 > stack.MENU.VSCROLL.rect.bottom.y)
            y = stack.MENU.VSCROLL.rect.bottom.y - 32;
        setfillstyle(SOLID_FILL,stack.MENU.VSCROLL.FillColor);
        POPUP_Bar(stack.MENU.VSCROLL.rect.top.x,y,stack.MENU.VSCROLL.rect.bottom.x,y+32);
    }
}
1