回精華區
作者itoc, 信區: itoc
標題[功能] menu.c 使選單下面狀態列的時間一直在跑
時間05/05/28
作者: itoc (拯救一個靈魂) 看板: plan
標題: [功能] 使選單最後一行 feeter 的時間一直在跑
時間: Wed Jun 12 02:22:11 2002                          Updated: 2005/05/28

※ 引述《tandrian.bbs@ntcb.twbbs.org.tw (幻域魔城後祖)》之銘言:
> 我想要讓左下角的時間一直跑~~!!
> 不知道我這點子可行嗎?

: menu.c:status_foot()

  int ufo;
  time_t now;
+ struct tm *ptime;
+ struct timeval tv = {1, 0};

  ...
  ...

  if (now > uptime)     /* 過了子夜要更新生日旗標 */
  {
-   struct tm *ptime;

  ...
  ...

- ufo = (now - (uptime - 86400)) / 60;  /* 借用 ufo 來做時間(分) */

- sprintf(feeter, COLOR1 " %8.8s %02d:%02d " COLOR2
-   " 人數 %-4d 我是 %-12s %s [呼叫]%-9s  ",
-   fshm->today, ufo / 60, ufo % 60,
-   total_user, cuser.userid, coinmsg, flagmsg);
- outf(feeter);

+ while (1)
+ {
+   now++;
+   ptime = localtime(&now);
+
+   // 版面可自行調整 
+   sprintf(feeter, COLOR1 " %8.8s %02d:%02d:%02d " COLOR2
+     " 人: %-4d 我是 %-12s %s [呼]%-9s  ",
+     fshm->today, ptime->tm_hour, ptime->tm_min, ptime->tm_sec,
+     total_user, cuser.userid, coinmsg, flagmsg);
+
+   outz(feeter);
+   refresh();
+
+   ufo = 1;
+   if (select(1, (fd_set *) &ufo, NULL, NULL, &tv) > 0)
+     return vkey();
+ }
}

: menu.c:movie() 最後一行的 status_foot() 拿掉

  if ((bbsmode <= M_XMENU) && (cuser.ufo & UFO_MOVIE))
    film_out(FILM_MOVIE, MENU_XNOTE);

- status_foot();

: menu.c:menu() 最後 cmd = vkey(); 換成 cmd = status_foot();

#else
      move(MENU_XPOS + cc, MENU_YPOS + 1);
#endif
    }

menu_key:

-   cmd = vkey();
+   cmd = status_foot();
  }
}

--
  其實時間靜態好..動態數秒其實沒什麼用
  但是要付出每秒更新一次 feeter 的代價

--
□ 本文章由 itocnctu5566.Dorm3.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻