1、Windows 是事件驅動的,事件驅動圍繞著消息的產生于處理展開,事件驅動靠消息循環機制實現,,也可以理解為消息是一種報告關于事件發生的通知;2、MFC 是一個廣為使用的編程類庫,對Windows 的消息機制進行了良好的封裝。3、消息(Message)指的就是Windows 操作系統發給應用程序的一個通告[5],它告訴應用程序某個特定的事件發生了(比如單擊了鼠標),最終處理消息的是應用程序的窗口函數,如果程序不負責處理的話系統將會作出默認處理。4、消息是一個結構體,它包含了消息的類型標示符以及其他的一些附加信息。5、系統定義的結構體MSG用于表示消息,MSG 具有如下定義形式:typedef struct tagMSG{HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWord time;POINT pt;}MSG;其中:hwnd 是窗口的句柄,這個參數將決定由哪個窗口過程函數對消息進行處理;message是一個消息常量,用來表示消息的類型;wParam 和lParam 都是32位的附加信息,具體表示什么內容,要視消息的類型而定;time 是消息發送的時間;pt 是消息發送時鼠標所在的位置。6、Windows 是一消息(Message)驅動式系統,Windows 消息提供了應用程序與應用程序之間、應用程序與Windows 系統之間進行通訊的手段。應用程序要實現的功能由消息來觸發,并靠對消息的響應和處理來完成。7、Windows 系統中有兩種消息隊列,一種是系統消息隊列,另一種是應用程序消息隊列。計算機的所有輸入設備由Windows監控,當一個事件發生時,Windows先將輸入的消息放入系統消息隊列中,然后再將輸入的消息拷貝到相應的應用程序隊列中,應用程序中通過消息循環從它的消息隊列中檢索每一個消息,并在發送給相應的窗口函數中。一個事件的發生,到達處理它的窗口函數必須經歷上述過程。所謂消息就是描述事件發生的信息,windows程序是事件驅動的,因為windows程序執行的順序將取決于事件的發生順序,具有不可預知性。8、消息循環是Windows 應用程序存在的根本,應用程序通過消息循環獲取各種消息,并通過相應的窗口過程函數,對消息加以處理;正是這個消息循環使得一個應用程序能夠響應外部的各種事件,所以消息循環往往是一個Windows 應用程序的核心部分。9、MFC 只是通過對Windows消息映射的進行封裝。
Windows應用程序的消息處理機制總結:1)每一個Windows應用程序開始的時候,系統都會為該程序創建一個消息隊列,這個消息隊列用來存放該程序創建的窗口消息;2)當操作系統接收到應用程序的窗口消息,就將消息投遞到該應用程序的消息隊列中;3)然后,應用程序在消息循環中(while(GetMessage())通過調用GetMessage函數從消息隊列中取出一條條的消息,應用程序可以對這些消息進行一些預處理,比如TranslateMessage;4)應用程序通過調用DispatchMessage,將消息回傳給操作系統;5)系統利用WNDCLASS結構體的lpfnWndPRoc成員保存窗口過程函數的指針,此指針指向窗口過程函數,窗口過程函數是一個回調函數,在特定的事件或條件下發生,由另外一方調用,用于對該事件或條件的響應。
新聞熱點
疑難解答