30天自制操作系统 杂谈6
显示窗口
前文鼠标移动还留下了一个BUG,其实只要在主函数和画面刷新函数,各加上对边界的判断就解决了。
接下来我们尝试制作窗口,和前面制作背景和鼠标一样,先准备一个图层,然后在图层缓冲区内描绘一个貌似窗口的图就行了。
这里的制作窗口的函数,我们只需对设置背景的函数稍加改造就可以得到的,而x按钮的功能可以通过修改鼠标初始化的函数得到啦!代码就不罗列了。
CPU:这个锅我不背!!!
之前我们用HLT指令让CPU有空就睡觉,估计现在已经失眠了呢,现在我们让它做点事情,就数绵羊吧(计数)。
运行一下发现,计数器窗口显示的内容一直在闪烁,看来是CPU不肯睡,一直在眨眼睛呀。(再调皮试试?)
CPU:这个锅我不背!!!你之前写刷新图层的时候,就是先刷背景图层再刷窗口图层的。你这么写我也很绝望呀!!
鼠标指针:哈?
窗口图层刷新是因为窗口内容有变化,所以要显示变化后的内容。既然如此,图层内容没有变化也进行刷新就太浪费了。如果是窗口变了,背景也可以不用刷新。而且假如鼠标指针在上面的话,因为会覆盖鼠标指针的一部分区域,还要进一步刷新。在移动目标处,比新移来的图层位置低的图层没有变化,所以只需刷新移动的图层。
测试一下~
鼠标指针:你的数字好像不闪烁啦!
计数器窗口:是呀,但是鼠标你怎么在闪烁呀?
鼠标指针:哈?
鼠标指针的闪烁是由于计数器的数字不断变化,鼠标一会儿描绘一会儿消除造成的。所以我们就要在刷新窗口时避开鼠标所在的地方对VRAM进行写入处理。
这里我们采用这种方法:先开辟一块和VRAM一样大的内存,姑且称之为map。这块内存用来表示画面上的点事哪个图层的像素,所以他就相当于图层的地图。
当刷新图层1的时候,一边看着这个map一边刷新,妈妈再也不用担心图层1和图层2重叠的部分被覆盖了!!
30天自制操作系统 杂谈6相关推荐
- 为什么《30天自制操作系统》封面中的猫是两只尾巴
刚刚在一社区,发了一贴,被指出一问题,询一高人,得一答案.这便是我没有关注到的封面上的那只猫,我想这也是很多读者没有关注到的.因为在我微博的200转发贴中,并没有人提到封面中的猫为何有两只尾巴.于是咨 ...
- 发布在《30天自制操作系统》之前的帮助阅读贴
说明:这是8月15日即将上市的一本新书,本文的摘选也可以命名为<30天自制操作系统>上市之前必读.本书幽默,有趣,可以说是技术书里的幽默书,让您读起来绝对不会感到乏味.在本书上市之前,您一 ...
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
<30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...
- 写在《30天自制操作系统》上市之前
这本<30天自制操作系统>马上就要在各大书店和网上商城全面上架了,作为本书的4位译者之一,我负责翻译了本书约三分之二的内容.这是我参与翻译的第一本译著,我感到很激动也很紧张,因为我知 ...
- 《30天自制操作系统》笔记(04)——显示器256色
<30天自制操作系统>笔记(04)--显示器256色 进度回顾 从最开始的(01)篇到上一篇为止,已经解决了开发环境问题和OS项目的顶层设计问题. 本篇做一个小练习:设置显卡显示256色. ...
- 《30天自制操作系统》学习笔记--第好多天
之前看<30天自制操作系统>,参考而成,和书中系统并不完全一致,是在原有基础上按照自己的习惯而成,由于水平和工作原因,未完成内存管理和文件系统,有兴趣者可以通过以下网址https://gi ...
- 由《30天自制操作系统》引发的漫画创作
大家可还记得<30天自制操作系统>的封面上的那只猫吗?记得当时,在果壳网有人问,为何这只猫长了两只尾巴呢,延着这条线,我把这本书捧上了展示的舞台.事隔四个多月,我又重提此书. 这本经我手宣 ...
- 30天自制操作系统——第二十三天窗口操作
窗口及输入切换 我们先来实现用键盘切换窗口,按下F11键,将最下面的窗口移动到最上面,这里F11按键的编码为0x57. bootpack.c节选: void HariMain(void) {(略)fo ...
- 30天自制操作系统-初体验
最近在图书馆翻阅关于操作系统的书籍,看到川和秀实的自制操作系统决定也动手尝试一下,这本书书名就叫做30天自制操作系统.首先还是附上光盘镜像的获取地址吧.30天自制操作系统光盘镜像ISO完整版下载 - ...
最新文章
- linux shell显示下载进度,shell脚本测试下载速度
- python数据类型-Python核心数据类型概览
- [BZOJ3214][ZJOI2013]丽洁体(Hash+DP)
- vue的Prop属性
- 跑通im2txt 程序(1)
- AbortController 中止一个或多个Web请求
- eclipse 环境安装
- linux内核之进程管理详解
- 讨厌的迅雷占用80口
- 《02333软件工程课后习题答案-2011版 王立福》
- 《凤凰项目-一个IT运维从传奇故事》读后感+个人职业思考
- 鼠标键盘录制工具 脚本录制器 游戏脚本录制工具
- 【统计学习方法】EM算法原理
- shell脚本学习笔记(二)myplayer添加播放列表的源码
- 艺术和设计的区别是什么?蓝蓝推荐
- 手机无限重启可能跟电压不稳有关
- 题目描述: 某城市有一个火车站,铁轨铺设如图所示。 有n节车厢从A方向驶入车站,按进站顺序编号1~n。 现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。 为了重组车厢,可以借助中转站C。
- linuxService
- Android 闹钟详解
- 【Unity3D】水波特效