2010-10-04 57 views
0

通過經驗,我發現原生的窗體/組件不喜歡被改變。我知道使用Delphi或Visual Studio給你的本地窗口組件來填充窗體或窗口,然後你附加這些組件可能做的事件的代碼(onClick舉例)。Windows非本地用戶界面如何工作?

但是,所有這些程序如Word或谷歌Chrome瀏覽器如何改變標準窗口的窗口?我以爲它受到某種保護?

Chrome似乎實際上在窗口的框架上有選項卡?

我知道你也可以得到像Swing和QT這樣的工具包,它們有自己的控件/組件來填充表單。這些工作如何? (操作系統/計算機如何知道非本地按鈕應該如何操作?例如,Chrome的後退和前進按鈕,它們不是本地組件?)。

我可以理解OpenGL/DirectX窗口是如何工作的,因爲您正在告訴計算機到底要用多邊形/四邊形繪製什麼。

我希望這個問題很清楚!

回答

0

Swing ant QT使用基本原語在低級別繪製自己的小部件,但它們也具有可以模仿本機控件的主題引擎。

0

Qt轉移到本地控件。至於如何擺動它,它從操作系統獲得一個基本的窗口。然後,就像Opengl \ Directx一樣,它可以在該窗口中完成所有的繪圖。至於在哪裏定位佈局經理所做的事情。每個經理都有一個佈局樣式,水平,垂直,網格,要繪製的組件以及需要填充的部分窗口。從那裏開始,它將一些非常簡單的數學運算分配給它的控件。

0

沒有什麼神奇的東西:非本機控件簡單地繪製在空白窗口中。或者,代替被吸入它們可以被表示爲基於狀態幾個位圖中的一個(即:一個按鈕可以被表示爲用於正常狀態的.PNG,另一個爲.PNG按壓狀態等)

1

某些Windows控件具有「所有者繪製」模式。如果使用這種方法,則可以繪製控件(或至少控件的重要部分),而Windows則以標準方式處理用戶輸入。

+1

+1。有時也稱爲用戶繪製,這裏是用戶繪製控件的文檔:http://msdn.microsoft.com/en-us/library/b818z6z6.aspx – David 2010-10-04 15:42:13