這個訊息是由windows處理硬體中斷的產生的,windows儲存乙個每次硬體計時器滴答減少的次數,當這個計數減到0時就會產生乙個wm_timer訊息,這個訊息其實時不會造成非同步的(類似鍵盤和滑鼠,由硬體來處理非同步硬體中斷時間)所以,這個訊息同樣要進入訊息佇列等待訊息迴圈的讀取,所以這個訊息的產生並不是非常準確的,這要取決於計算機硬體和之前訊息的處理速度,如果之前的訊息沒有處理完,同樣wm_timer這個訊息也比需等待,所以這個時間實際上並不是特別的準確。
順帶一提,這個訊息和wm_paint是同樣的最低優先順序,因為這一點就可以防止非同步處理訊息,並且同樣的,這個訊息winows也不會同時在訊息佇列內插入多個,而是會將多個此訊息合併為乙個(類似wm_paint)
要使用這個計時器,按照常理我們有:
通常我們會在訊息wm_create和wm_destroy兩個訊息裡分別設定settimer和killtimer,當然,我們發現,settimer這個函式後面跟了乙個特殊的函式指標,實際上這個函式指標裡面的語句就是wm_timer訊息,只是此時這個訊息的執行方式由:計時器滴答計數為0->向訊息佇列內插入wm_timer->等待wndproc接收並處理此訊息變為:計時器滴答計數為0->呼叫函式指標所指向的函式
這個函式是乙個時間訊息過程(類似於視窗過程)timeproc的形式是:void callback timeproc(hwnd,message,計時器id,乙個從gettickcount函式返回值相容的值)(這個gettickcount的返回值是windows啟動後所進過的毫秒數)
這個結構包含了年月日時分秒毫秒,相當的準確
這兩個函式的引數都是(l)psystemtime,其中,前者時當地的時間,這個依賴於計算機的時區,後者則是和英國格林威治的時間大概相同,兩者的精確度完全取決於使用者的設定
來看乙個書上的例子:
/*-----------------------------------------
digclock.c -- digital clock
(c) charles petzold, 1998
-----------------------------------------*/
#include
#define id_timer 1
lresult callback wndproc(hwnd, uint, wparam, lparam);
int winapi winmain(hinstance hinstance, hinstance hprevinstance,
pstr szcmdline, int icmdshow)
cw_usedefault, cw_usedefault,
cw_usedefault, cw_usedefault,
null, null, hinstance, null);
showwindow(hwnd, icmdshow);
updatewindow(hwnd);
while (getmessage(&msg, null, 0, 0))
return msg.wparam;
}void displaydigit(hdc hdc, int inumber)
; // 9
static point ptsegment[7][6] = ;
int iseg;
for (iseg = 0; iseg < 7; iseg++)
if (fsevensegment[inumber][iseg])
polygon(hdc, ptsegment[iseg], 6);
}void displaytwodigits(hdc hdc, int inumber, bool fsuppress)
void displaycolon(hdc hdc)
; polygon(hdc, ptcolon[0], 4);
polygon(hdc, ptcolon[1], 4);
offsetwindoworgex(hdc, -12, 0, null);
}void displaytime(hdc hdc, bool f24hour, bool fsuppress)
lresult callback wndproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)
return defwindowproc(hwnd, message, wparam, lparam);
}
這個程式是做了乙個簡易的電子時鐘,乙個值得注意的點是在獲取時間訊息那裡,它強制性的重新整理了客戶區,雖然會導致出現是不是的閃爍問題,但是這個是美妙重新整理一次顯示最好的解決方法了 第四章筆記
一.引入樣式 1.行內樣式表 2.內部樣式表 在head標籤裡面,title標籤下面 優點方便在同頁面中修改樣式 缺點不利於在多頁面間共享復用 及維護,對內容與樣式的分離也不夠徹底 3.外部樣式表 嵌入式匯入式 嵌入式和匯入式的區別 1.標籤屬於xhtml,import是屬於css2.1 2.使用鏈...
第四章筆記
氣泡排序 從大到小 基本思想 兩層迴圈來完成,每一輪比較之後,把最小數沉到陣列的末尾,之後進行下一輪的比較,比較的次數減少一次,因為最後的數字已經是最小 外層迴圈控制比較的輪數,陣列的長度減一次 內層迴圈進行比較。int testarr for int i 1 i testarr.length 1 ...
K R學習筆記 第四章
全面系統的講解函式了。首先映入我眼簾的是一種奇怪的函式宣告方式 main 它在main函式中宣告了自己編寫的atof char 函式。至於原因是什麼,我也不得而知了。按照書上的說明,c 是不允許在乙個函式裡定義其它函式的,函式本身是external的。下面的 include int main voi...