4 窗口初始位置(harib22d)

在编写color.hrb的时候笔者注意到一个小问题,color的窗口一开始出现的位置好像有点别扭(注:使用VESA的人画面尺寸非常大,可能并不觉得有什么别扭的)。

4 窗口初始位置(harib22d) - 图1

harib22c运行的时候窗口跑到画面外面去了

因此我们希望让窗口总是显示在画面的中央,而且显示窗口时的图层高度也不能总是固定为3,而是要判断当前画面中窗口的数量并自动显示在最上面。虽说现在窗口也是显示在最上面,不过如果再多打开几个的话,情况就不一样了。

本次的console.c节选

  1. int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int eax)
  2. {
  3. (中略)
  4. } else if (edx == 5) {
  5. (中略)
  6. sheet_slide(sht, (shtctl->xsize - esi) / 2, (shtctl->ysize - edi) / 2);
  7. sheet_updown(sht, shtctl->top); /*将窗口图层高度指定为当前鼠标所在图层的高度,鼠标移到上层*/
  8. (中略)
  9. } else if (edx == 6) {
  10. (中略)
  11. }

好,完工了,这下窗口应该显示在画面中央了,我们来试试看吧。“make run”,成功了!

4 窗口初始位置(harib22d) - 图2

这次显示在画面中央了