每個(gè)CL_Win32Window創(chuàng)建時(shí)候都會(huì)相應(yīng)的添加到CL_DisplayMessageQueue_Win32隊(duì)列中(析構(gòu)時(shí)刪除).
CL_DisplayMessageQueue_Win32::process_message中會(huì)獲取消息并派發(fā)消息.
而后遍歷所有的窗口調(diào)用窗口對(duì)應(yīng)的輸入接口對(duì)象(CL_InputContext)進(jìn)行處理.
CL_Win32Window在創(chuàng)建時(shí)設(shè)置了自己的消息處理函數(shù)static_window_proc,
處理函數(shù)在收到自己的消息時(shí)調(diào)用處理函數(shù)CL_Win32Window::window_proc進(jìn)行處理.
window_proc根據(jù)不同的消息類型進(jìn)行分流后加入CL_InputDevice的事件棧,等待程序調(diào)用CL_InputContext::process_messages進(jìn)行處理.
一個(gè)疑問(wèn):CL_InputContext_Impl中其他的函數(shù)都加了線程互斥,如處理函數(shù)process_messages,add_mouse等,只有函數(shù)received_event沒有加,這樣能支持多線程操作?
posted on 2010-06-30 16:34
我風(fēng) 閱讀(328)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
ClanLib