控件绘制的方法

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 等),不发送该消息,而且它只与标准控件(编辑、列表框等)协同使用。术语

相关文章
相关标签/搜索