Message
視窗程式是以Message為基礎的,依靠Message的傳送和回應使得視窗程式能夠運作。
Message是一個32位元的數字。
當我們移動滑鼠時,Message (WM_MOUSEMOVE)就會被傳送到目前的視窗;當我們改變視窗位置時,Message(WM_MOVE)就會被傳送到目前的視窗。
這些Message會被排入Queue(佇列)中,視窗會將他們從Queue中取出,並進行對應的動作,若是視窗得到了WM_SIZE(改變視窗大小)的Message,視窗就會在螢幕上重新繪製。
Handles
視窗程式要使用Handles來判斷各個不同的視窗。
Handles是一個參考不同視窗物件的方法,我們可以將Handles想像成指向各個視窗的一種指標,Handles必須要在使用完之後銷毀,否則會使程式及系統當機。
Messages 和Handles的運作
假設我們擁有一個視窗,我們擁有視窗的Handles,我們將這個Handles命名為My_HWND。
如果作業系統要告知要重新繪製視窗,系統就會傳送一個Message
PostMessage(My_HWND, WM_PAINT, 0, 0); |
void HandleMessage(long Message) { switch(Message) { case WM_PAINT: DrawWindows(); break; case WM_SIZE: //do something break; } } |
沒有留言:
張貼留言