21.创建一个图形窗口

图形界面编程:创建与刷新窗口
这篇博客介绍了如何在操作系统层面创建一个图形窗口,并实现局部刷新功能,从而提升系统效率。目标是创建一个简单的消息小窗口,通过修改fillRect函数以在指定窗口绘制矩形,并在os.c中声明并初始化窗口数据,编写makeWindow函数来实现窗口创建。文章还提到了代码优化和修复了上一节中fillRect函数存在的问题。

简介

对鼠标移动后局部刷新图层窗口后,系统效率实现了质的飞跃。电脑上看到的图形界面都是操作系统提供相关窗口绘制功能绘制出来的。

目标

实现一个简单的消息小窗口,以窥见GUI的本质。

1.win_sheet.c

//在特定窗口上绘制矩形
void sheet_fillRect(int x,int y,int width,int height,char col,SHEET *sht){
	
	for(int i=y;i<y+height;i++){
        for(int j=x;j<x+width;j++){
            sht->buf[i*sht->width+j] = col;
        }
    }
}

修改以前os.c 中的fillRect 函数实现在指定窗口上绘制矩形的操作,其中绘制的x、y坐标都是相对窗口本身,即矩形最左上角坐标是从(0,0) 开始的。

2.os.c
申明消息窗口指针

//消息窗口
static SHEET *_shtMsg;

初始化窗口数据信息,init_main 函数中创建消息窗口。

//消息框
	_shtMsg = sheet_alloc(_shtctl);
	mem = (unsigned char *)mem_alloc(_memman,160*80);
	sheet_setRect(20,20,160,80,COLOR_INVISIBLE,_shtMsg,mem);
	makeWindow(_shtctl,_shtMsg);
	sheet_setWeight(_shtctl,_shtMsg,2);

编写绘制窗口函数makeWindow

static void makeWindow(SHTCTL *shtctl,SHEET *sht) {
	//这个数组,对应的是小窗口右上角的X按钮,这
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值