維尼的蜂巢

Archive for 四月 28th, 2006

win32 api的 SetTimer

Posted by: kevinlin on: 四月 28, 2006

SetTimer是一個計數器
原型是這樣   UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc ) ;
在程式裡我們可以 設定多少時間要做什麼事情 他會觸發WM_TIMER

#define TIMER_SEC 1
#define TIMER_MIN 2
然後使用兩個SetTimer來設定兩個計時器:
SetTimer (hwnd, TIMER_SEC, 1000, NULL) ;
SetTimer (hwnd, TIMER_MIN, 60000, NULL) ;
WM_TIMER的處理如下所示:
case WM_TIMER:
 switch (wParam)
 {
  case TIMER_SEC:
   //每秒一次的處理
   break ;
  case TIMER_MIN:
   //每分鐘一次的處理
   break ;
 }
 return 0 ;

我發現了一個問題
如果TIMER_SEC(每秒1次)做了2分鐘 那TIMER_MIN(每分1次)該怎麼辦
事實上WM_TIMER的訊息在整個OS上的優先權很低的跟WM_PAINT一樣都很低
就是說 當我們正在處理WM_TIMER時 又有WM_TIMER想進來訊息佇列 他會自己當作沒看到 就像是 你只付一人份的錢 以為雙胞胎想輪流著吃飯我會不知道嗎
訊息佇列總會只有一份WM_TIMER存在 所以如果TIMER_SEC處理了2分鐘 那就等到處理完 再看哪個計數器幸運 牌比較前面

4天沒睡

Posted by: kevinlin on: 四月 28, 2006

星期天晚上 沒睡著
星期一晚上 沒睡著
星期二晚上 沒睡著
星期三晚上 沒睡著
星期四晚上 終於有睡著一下子了  精神有比較好一點

4天沒睡覺 但又不是沒睡 是睡不著
看來應該是要去看神經內科 聽說自律神經失調 還是容易緊張的人都會這樣
 
然後我突然想起來我好像忘記拿畢業紀念冊了  我一定要去拿回來 錢都繳了