请教下大家如何用C编写侧边带有滚动条的窗口
请教下大家如何用C编写侧边带有滚动条的窗口,就象Windows界面下的那些窗口.
//////////////////////////////////////////////////////////////////////////显示滚动条
//入口参数:
//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);
}
}