程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> C++ Builder中消息處理過程及應用

C++ Builder中消息處理過程及應用

編輯:vc教程

C++ Builder作為一種RAD方式的程序開發工具,其全新的可視化編程環境、面向組件的開發模式無疑會大大地提高編程效率。它對繁雜的Windows 消息及API作了較全面的封裝,者在大多數情況下不需理會Windows消息的細節,只要將心思放在組件的事件處理函數上即可。然而,畢竟Windows操作系統是一個以消息驅動的系統,運行其上的應用程序,自然無法脫離系統之外,因此掌握並運用消息處理,對一些問題的處理會有事半功倍的效果。

盡管C++ Builder的VCL控件封裝了大多數常用的消息,C++ Builder所提供的事件處理能力也具備了相當程度的完備性,但當處理C++ Builder 未定義的Windows消息或自定義消息時,掌握C++ Builder 的內部消息處理機制還是十分必要的。下面,從Windows 操作系統消息驅動機制開始,進而探討C++ Builder的VCL控件中消息的封裝、傳遞和處理機制,最後以新增消息處理過程的應用實例作為對所講內容的驗證和實踐。

一、Windows 消息驅動機制

Windows是以消息驅動的操作系統,Windows 消息提供了應用程序與應用程序以及應用程序與Windows系統之間進行通訊的手段。

Windows 中有一個系統消息隊列,對於每一個正在執行的Windows應用程序,系統為其建立一個“消息隊列”,即應用程序隊列,用來存放該程序可能創建的各種窗口的消息。應用程序中含有一段稱作“消息循環”的代碼,用來從消息隊列中檢索這些消息並把它們分發到相應的窗口函數中。

消息循環代碼是應用程序中主函數winmain ( )中類似如下的程序段:

  while(GetMessage(&&msg,NULL,NULL,NULL))
  { //從消息隊列中取得消息
  TranslateMessage(&&msg);
  //檢索並生成字符消息WM_CHAR
  DispatchMessage(&&msg);
  //將消息發送給相應的窗口函數
   }

由此可見,所謂“消息循環”,實際是程序循環。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved