📄 scroll.c
字号:
/*
ScrollBar - 滚动条
www.ecub2006.com
*/
#include "gui.h"
void show_value(HAND hd) /* 显示滚动条 数值*/
{
char buf[10];
HAND scroll;/* 句柄 */
HDC hdc;/* 绘图句柄 */
scroll=GetObjVar(hd);/* 获得 滚动条 句柄 */
hdc=efGDI->Start(hd);/* 开始作图 */
Bar(hdc,10,30,80,50,COLOR_BLUE);/* 画实心矩形,颜色为蓝色 */
sprintf(buf,"%d\0",efScrollBar->Value(scroll));/* 生成 指定格式的字符串 */
/* efScrollBar->Value(HAND); 返回的数值为 0~(n-1) ,n 为项目数 */
SetColor(hdc,COLOR_WHITE);/* 设置颜色为白色 */
DrawText(hdc,10,30,buf);/* 显示字符串 */
efGDI->End(hd,hdc);/* 完成作图 */
}
void MyWin(HAND hd,MESSAGE msg) /* 消息处理函数 */
{
HAND scroll;/* 句柄 */
if(msg.type == GM_SYSTEM) /* 判断消息类型,消息类型全部为大写 */
switch(msg.message) /* 判断消息 */
{
case GM_Create:/* 对象被创建后产生该消息,一般情况下,收到该消息时,
对象还没有显示。可以在这里进行一些初始化工作。
如果是窗口的GM_Create消息,可以创建新的对象,如 BUTTON 等 */
/* scroll=CreateObject(hd,VSCROLLBAR,1,1,"",260,50,280,170,0,0); */
/* VSCROLLBAR 为竖向滚动条 HSCROLLBAR 为横向滚动条 */
CreateObject(hd,BUTTON,1,1,"TestButton",10,130,120,150,0,0); scroll=CreateObject(hd,HSCROLLBAR,1,1,"",90,50,260,70,0,0);
efScrollBar->SetN(scroll,6); /* 设置项目数 n ,n >=2 */
/* efScrollBar->SetN(scroll,99999999); */
/* efScrollBar->SetN(scroll,999); */
/* efScrollBar->SetN(scroll,10); */
/* efScrollBar->SetN(scroll,2); */
// efScrollBar->SetHost(scroll,hd); /* 设置滚动消息(GM_Scrolling等) 接收对象 */
SetObjVar(hd,scroll);/* 将句柄 保存到自定义数据,方便访问 */
return;
case GM_Draw:/* 对象被显示,或者重绘的时候会产生该消息 */
show_value(hd);/* 调用 显示滚动条 数值的函数 */
return;
default:
return;
}
scroll=GetObjVar(hd);
if(msg.type == GM_CTRL)/* 控件类 消息*/
switch(msg.message)
{
case GM_Scrolling:/* 滚动条发生滚动 */
show_value(hd);/* 调用 显示滚动条 数值的函数 */
return;
default:
return;
}
}
int gmain(void *data)
{
/* 创建窗口 */
CreateObject(0,MAINWINDOW,1,1,"ScrollBar",10,10,630,300,MyWin,0);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -