30天自制操作系统吧 关注:1,390贴子:5,008
  • 8回复贴,共1

如何放大命令行窗口?

只看楼主收藏回复

...


来自手机贴吧1楼2018-11-19 14:58回复
    不知如何调整命令行窗口,请问有人会吗?


    来自Android客户端2楼2018-11-19 15:00
    回复
      2025-07-31 21:26:02
      广告
      不感兴趣
      开通SVIP免广告


      来自Android客户端3楼2018-11-19 15:02
      回复
        有人吗?


        来自Android客户端4楼2018-11-19 18:24
        回复
          命令行的缩放功能判断条件
          1. 按下左键不放
          2. 在命令行的边沿区域
          3. 进行拖拽
          上面的的三个条件中,1和2的顺序是可调的。但是基于现有的代码就有了上面的顺序。
          if ((mdec.btn & 0x01) != 0) {
          if (mmx < 0){
          if (0 <= x && x < sht->bxsize && 0 <= y && y < sht->bysize){
          if (x < 3 || x >= sht-bxsize -3 ||y < 3 || y >= sht-bysize -3 ){
          rooming = 1;
          }
          }
          }
          }
          判断了是否进行缩放,下一步就是记录缩放的x,y 具体数值。
          if (zooming){
          room_xsize = (sht->bxsize + x +2) & ~3;
          room_ysize = sht->bysize + y;
          }
          然后再根据新的缩放尺寸重新分配内存。复制原来文本框所在区域内容到新分配内存文本框所在内存处。然后释放以前命令行所在sheet所对应的显示缓存,挂载上刚刚分配的并已经复制了内存的新图形缓存。设置sheet对应的新的高度和宽度,然后sheet_slide();搞定。思路目前如此。若有更佳的点子望不吝赐教。


          IP属地:安徽来自iPhone客户端5楼2018-11-21 22:37
          回复
            要改变命令行窗口的大小,需要修改下面几个地方:
            1,bootpack.c:
            struct SHEET *open_console(struct SHTCTL *shtctl, int memtotal)
            中的窗口W,H的大小尺寸。buf空间的大小等。
            int *buf = (int *) memman_alloc_4k(memman, 4*CONSOLE_W * CONSOLE_H);
            sheet_setbuf32(sht, buf, CONSOLE_W, CONSOLE_H, -1);
            make_window32(buf, CONSOLE_W, CONSOLE_H, "Debug", 0);
            结束命令行窗口时释放空间的命令也要相应更改:
            memman_free_4k(memman, (int) sht2->buf, CONSOLE_W * CONSOLE_H);
            2,console.c的
            void console_task(struct SHEET *sheet, int memtotal)
            里面也要根据窗口大小,调整一下参数,包括根据窗口的高度,调整相应增加显示的行数。
            扩大命令行窗口后,对于调试程序,观察运行中的中间结果,是很有帮助的。


            IP属地:上海6楼2021-01-30 13:20
            收起回复
              主窗口改好后,还要考虑文字输入时的左面边界,换行时的下面边界。
              修改一下console.c里面的几个函数:
              void console_task(struct SHEET *sheet, int memtotal)
              void cons_newline(struct CONSOLE *cons)
              void cons_putchar(struct CONSOLE *cons, int chr, char move)
              旧窗口文字宽度是240,行数高度是112(有换行时128),
              只要把这几个数值改成你扩大后宽度,高度值就可以了。


              IP属地:上海7楼2023-08-06 12:08
              回复