程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 深入C++ Builder之編寫自己的元件-深入分析VCL繼承、消息機制(1

深入C++ Builder之編寫自己的元件-深入分析VCL繼承、消息機制(1

編輯:vc教程

這篇文章提及內容可能大家已經在很多地方看到過了,作者也是如此,只不過還看了很多VCL源代碼,加上自己實際編寫元件的經驗,拼湊了這麼一篇文章。所以所有言論都是個人觀點、經驗的描述,僅供參考。

你可轉載,拷貝,但必須加入作者署名Aweay,如果用於商業目的,必須經過作者同意。

系統要求

如果你想一起跟著做的話,那麼你應該看看這裡,否則你可以直接跳過。

C++ Builder6 + updata4 (上帝造人的工具,以下簡稱BCB)

Windows2k or higher (必要)

作者強烈建議你使用WinNT,BCB在Win9x下有非常多的問題,而且非常不穩定,就算你不在乎這個,還有一個非常致命的問題,BCB的幫助文件在Win9x下顯示不完全(因為BCB的幫助索引關鍵字數量超過Win9x的限制),這樣非常難於參考幫助。

Delphi6 :( (必要)

什麼?是不是寫錯了,完全沒有寫錯,如果你要深入VCL查看源代碼的話,在沒有比用Delphi6更合適的了,在全部安裝Delphi6後,把VCL Source的目錄加入Search Path中,這樣你可以在編輯器中按住Ctrl鍵,點擊鼠標直接跳轉到源代碼處非常方便,比什麼grep好用多了。

起步

對於VCL的消息機制,大家可以參考CKER的

http://www.csdn.net/develop/read_article.asp?id=8131

重復的內容我就不介紹了,但是對於編寫元件來說上面的消息機制還是很模糊,而且很多時候並不是用那些方法來處理消息的,還有就是元件特有的CM_XXXXXXXX消息如何處理呢?如何加入自己的事件呢?這些問題我會在後面的討論中做詳細介紹。

站在巨人的肩膀

編寫元件的第一件事情就是確定我們從那裡繼承的問題,選取一個好的祖先類是編寫一個好的元件的第一步,那麼到底如何選取他山之石呢?一般性的規則是這樣的:

1.對於有界面的顯示的,需要處理鍵盤事件的,又不是容器的組件從TCustomControl繼承

2.對於有界面的顯示的,需要不處理鍵盤事件的,需要處理鼠標事件的從TGraphicsControl繼承

3.對於沒有界面顯示的,類似與TOpenDialog/TXpMenu這樣的控件從TComponent繼承

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