2010-12-03 20 views
5

可能是我可以在這個問題上得到一些負面的觀點,但是真的這個問題在我腦海中從過去的許多日子裏難以理解,那麼在文本框(或其他這樣的控件)後面的基本/ 。什麼是文本框的原始代碼

我的意思是我明白,我們可以繼承文本框類並進行修改,我們創建它的對象並使用它。

但希望知道該類如何創建一個文本框(允許我們輸入文本的設計)(對其他組件的查詢是相同的),它是使用CG(計算機圖形學)編程或其他任何事情。

請專家解答我的好奇心。

感謝

+1

您在Windows桌面上詢問WinForms,對不對?因爲它在WPF中會有所不同,在Siverlight中是不同的,而在ASP.Net中則明顯不同。 – MarkJ 2010-12-03 11:47:58

回答

7

Windows提供了幾個用於在屏幕上繪圖的基本API。您可以繪製像素,線條,框和更復雜的幾何形狀。還有API來繪製文本。其他API允許您對用戶輸入做出反應,例如鼠標移動和點擊和鍵盤輸入。

從這些基本的API中,您可以通過繪製文本框的外觀和對用戶輸入做出反應的確切像素來創建自己的文本框。但是,Windows有一個內置的文本框概念。此文本框具有標準的外觀和感覺,並且還與焦點,Tab鍵順序,剪貼板和脫字符等UI概念集成。但在幕後,Windows正在使用低級別的API函數來繪製屏幕並對用戶輸入做出反應。

當您在Windows窗體中創建TextBox時,它實際上會創建並打包標準Windows Edit control。這個控件是使用GDI繪製的。但是,其他編程模型(如WPF)可能會創建TextBox控件,它們看起來像普通文本框,但使用WPF提供的自定義實現,並使用DirectX繪製。

3

這是我覺得是這樣做的:

背後TextBox或任何其他Control的原始代碼使用Windows API,負責繪製這些控件,並提供這些控件的Handles供以後參考。

Windows一直在使用不同的方法來繪製它的UI,如GDIGDI+,有時是DirectX。我可能是錯的,可能還有一些我忘記提及的技術人員。

這些控件使用每個窗口的WinProc來接收Input Notification和其他回調,這些回調在點擊,鍵入或例如調整大小時通知這些控件。

+0

感謝您的快速回復,明白了,請給我一個很好的鏈接。 – 2010-12-03 09:56:29

+0

好吧,如果你還沒有用C/C++編寫Windows,你不會對這些東西很熟悉。看看下面的鏈接:http://pravin.insanitybegins.com/win32/ – decyclone 2010-12-03 09:59:42