控件繪製的方法

1·處理WM_PAINT工具

     最極端的選擇是執行一個 WM_PAINT 處理程序,而且本身完成全部的繪製。這意味着,您的代碼將須要進行一些與呈現控件相關的雜事 — 建立適當的設備上下文(一個或多個),決定控件的大小和位置,繪製控件等。在繪製過程當中,不多須要這種級別的控件。開發


2·全部者繪製(owner draw)反射

           控制控件繪製的另外一種方法是利用全部者繪製。事實上,您也許聽開發人員提到過全部者繪製控件,由於它是用於開發自定義控件最普通的技術。該技術廣泛使用的主要緣由在於,Windows 可爲您提供不少幫助。在呈現控件的那一刻,Windows 就已經建立並填寫了設備上下文,決定了控件的大小和位置,而且向您傳遞信息以使您瞭解此刻繪製的需求。對於列表控件(例如,列表框和列表視圖),Windows 將爲列表中的每一項調用繪製代碼,這意味着您只需繪製這些項,而無需考慮控件的其餘方面。注意,全部者繪製可用於大多數控件。然而,它不能用於編輯控件;而且考慮到列表控件,它只能用於報表視圖樣式。程序


3·自定義繪製(custom draw)方法

          對於繪製本身的控件而言,這多是最少爲人所知的技術。事實上,許多技術能力較高的開發人員也混淆了術語全部者繪製 (owner-draw) 和自定義繪製 (custom-draw)。關於自定義控件,首先須要瞭解,它僅針對於指定的公共控件:標頭、列表視圖、rebar、工具欄、工具提示、跟蹤條和樹視圖。此外,儘管全部者繪製只容許繪製報告視圖風格的列表視圖控件,而自定義繪製則使您可以處理列表視圖控件全部視圖風格的繪製。使用自定義繪製的另外一個明顯優點是,您能夠對但願繪製的內容進行嚴格挑選。實現方式是,在控件繪製的每一個階段由 Windows 向代碼發送一個消息。這樣,您能夠決定在每一個階段是本身進行全部的繪製工做,增長默認的繪製,仍是容許 Windows 爲該階段執行全部的繪製。(鑑於自定義繪製是本文的一個主題,所以您很快會看到它的工做方式。)技術


4·處理 WM_CTLCOLOR樣式

         這多是幫助決定如何呈現控件最簡單的方式。正如消息名所指,當要繪製一個控件,而且它能讓您的代碼決定要使用的畫筆時,發送 WM_CTLCOLOR 消息(#add 彷佛不對,應該用消息反射)。一般狀況下,若是您只想更改控件的顏色(SetTextColor SetBkColor),而且不提供除控件自己以外的更多功能,則使用該技術。此外,對於由 Internet Explorer 引入的公共控件(列表視圖、樹視圖、rebar 等),不發送該消息,而且它只與標準控件(編輯、列表框等)協同使用。術語

相關文章
相關標籤/搜索