显示窗口

前文鼠标移动还留下了一个BUG,其实只要在主函数和画面刷新函数,各加上对边界的判断就解决了。

接下来我们尝试制作窗口,和前面制作背景和鼠标一样,先准备一个图层,然后在图层缓冲区内描绘一个貌似窗口的图就行了。

这里的制作窗口的函数,我们只需对设置背景的函数稍加改造就可以得到的,而x按钮的功能可以通过修改鼠标初始化的函数得到啦!代码就不罗列了。

CPU:这个锅我不背!!!

之前我们用HLT指令让CPU有空就睡觉,估计现在已经失眠了呢,现在我们让它做点事情,就数绵羊吧(计数)。

运行一下发现,计数器窗口显示的内容一直在闪烁,看来是CPU不肯睡,一直在眨眼睛呀。(再调皮试试?)

CPU:这个锅我不背!!!你之前写刷新图层的时候,就是先刷背景图层再刷窗口图层的。你这么写我也很绝望呀!!

鼠标指针:哈?

窗口图层刷新是因为窗口内容有变化,所以要显示变化后的内容。既然如此,图层内容没有变化也进行刷新就太浪费了。如果是窗口变了,背景也可以不用刷新。而且假如鼠标指针在上面的话,因为会覆盖鼠标指针的一部分区域,还要进一步刷新。在移动目标处,比新移来的图层位置低的图层没有变化,所以只需刷新移动的图层。
测试一下~

鼠标指针:你的数字好像不闪烁啦!
计数器窗口:是呀,但是鼠标你怎么在闪烁呀?
鼠标指针:哈?

鼠标指针的闪烁是由于计数器的数字不断变化,鼠标一会儿描绘一会儿消除造成的。所以我们就要在刷新窗口时避开鼠标所在的地方对VRAM进行写入处理。

这里我们采用这种方法:先开辟一块和VRAM一样大的内存,姑且称之为map。这块内存用来表示画面上的点事哪个图层的像素,所以他就相当于图层的地图。

当刷新图层1的时候,一边看着这个map一边刷新,妈妈再也不用担心图层1和图层2重叠的部分被覆盖了!!

30天自制操作系统 杂谈6相关推荐

  1. 为什么《30天自制操作系统》封面中的猫是两只尾巴

    刚刚在一社区,发了一贴,被指出一问题,询一高人,得一答案.这便是我没有关注到的封面上的那只猫,我想这也是很多读者没有关注到的.因为在我微博的200转发贴中,并没有人提到封面中的猫为何有两只尾巴.于是咨 ...

  2. 发布在《30天自制操作系统》之前的帮助阅读贴

    说明:这是8月15日即将上市的一本新书,本文的摘选也可以命名为<30天自制操作系统>上市之前必读.本书幽默,有趣,可以说是技术书里的幽默书,让您读起来绝对不会感到乏味.在本书上市之前,您一 ...

  3. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

    <30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...

  4. 写在《30天自制操作系统》上市之前

       这本<30天自制操作系统>马上就要在各大书店和网上商城全面上架了,作为本书的4位译者之一,我负责翻译了本书约三分之二的内容.这是我参与翻译的第一本译著,我感到很激动也很紧张,因为我知 ...

  5. 《30天自制操作系统》笔记(04)——显示器256色

    <30天自制操作系统>笔记(04)--显示器256色 进度回顾 从最开始的(01)篇到上一篇为止,已经解决了开发环境问题和OS项目的顶层设计问题. 本篇做一个小练习:设置显卡显示256色. ...

  6. 《30天自制操作系统》学习笔记--第好多天

    之前看<30天自制操作系统>,参考而成,和书中系统并不完全一致,是在原有基础上按照自己的习惯而成,由于水平和工作原因,未完成内存管理和文件系统,有兴趣者可以通过以下网址https://gi ...

  7. 由《30天自制操作系统》引发的漫画创作

    大家可还记得<30天自制操作系统>的封面上的那只猫吗?记得当时,在果壳网有人问,为何这只猫长了两只尾巴呢,延着这条线,我把这本书捧上了展示的舞台.事隔四个多月,我又重提此书. 这本经我手宣 ...

  8. 30天自制操作系统——第二十三天窗口操作

    窗口及输入切换 我们先来实现用键盘切换窗口,按下F11键,将最下面的窗口移动到最上面,这里F11按键的编码为0x57. bootpack.c节选: void HariMain(void) {(略)fo ...

  9. 30天自制操作系统-初体验

    最近在图书馆翻阅关于操作系统的书籍,看到川和秀实的自制操作系统决定也动手尝试一下,这本书书名就叫做30天自制操作系统.首先还是附上光盘镜像的获取地址吧.30天自制操作系统光盘镜像ISO完整版下载 - ...

最新文章

  1. linux shell显示下载进度,shell脚本测试下载速度
  2. python数据类型-Python核心数据类型概览
  3. [BZOJ3214][ZJOI2013]丽洁体(Hash+DP)
  4. vue的Prop属性
  5. 跑通im2txt 程序(1)
  6. AbortController 中止一个或多个Web请求
  7. eclipse 环境安装
  8. linux内核之进程管理详解
  9. 讨厌的迅雷占用80口
  10. 《02333软件工程课后习题答案-2011版 王立福》
  11. 《凤凰项目-一个IT运维从传奇故事》读后感+个人职业思考
  12. 鼠标键盘录制工具 脚本录制器 游戏脚本录制工具
  13. 【统计学习方法】EM算法原理
  14. shell脚本学习笔记(二)myplayer添加播放列表的源码
  15. 艺术和设计的区别是什么?蓝蓝推荐
  16. 手机无限重启可能跟电压不稳有关
  17. 题目描述: 某城市有一个火车站,铁轨铺设如图所示。 有n节车厢从A方向驶入车站,按进站顺序编号1~n。 现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。 为了重组车厢,可以借助中转站C。
  18. linuxService
  19. Android 闹钟详解
  20. 【Unity3D】水波特效

热门文章

  1. 安卓手机小说阅读器_书城小说阅读器app下载_书城小说阅读器手机版下载
  2. 如何修改Windows上Docker的镜像源
  3. jsp四大作用域和九大对象
  4. 概率统计16——均匀分布、先验与后验
  5. 【概率论】随机变量函数的分布
  6. android的一些简单配置修改(2)
  7. 枚举类型的理解和应用
  8. 安卓学习 Day18:利用单选按钮实现底部导航条
  9. Android studio三周学习总结
  10. SLAM笔记(六)直接法介绍