9.3 静态类

来源:互联网 发布:网络舆情内参征订 编辑:程序博客网 时间:2024/04/29 01:10

摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P305

        你需要用 CreateWindow 函数和“静态”(static)窗口类创建静态子窗口控件。这些都是非常良性的子窗口。它们不接受鼠标或键盘输入,也不会向其父窗口发送 WM_COMMAND 消息

        当你在一个静态子窗口上移动或单击鼠标时,子窗口会俘获 WM_NCHITTEST 消息并向 Windows 返回 HTTRANSPARENT 值。这会导致 Windows 向其底层窗口(通常是其父窗口)发送相同的 WM_NCHITTEST 消息。父窗口通常将该消息传给 DefWindowProc,在那里它会被转换为客户区鼠标消息。

        前 6 个静态窗口样式只是简单地在子窗口的客户区内画一个矩形或框架。“RECT”静态样式(左栏)是填充的矩形;三个“FRAME”样式(右栏)是内部没有被填充的矩形边框。

 SS_BLACKRECT SS_BLACKFRAME SS_GRAYRECT SS_GRAYFRAME SS_WHITERECT  SS_WHITEFRAME

        “BLACK”、“GRAY” 和 “WHITE” 并不意味实际的黑色、灰色和白色。它们更多的是基于下表所示的系统颜色

静态控件系统颜色 BLACK COLOR_3DDKSHADOW GRAY COLOR_BTNSHADOW WHITE COLOR_BTNHIGHLIGHT

        对于这些样式,CreateWindow 调用的窗口文本字段将被忽略。矩形左上角的 x 和 y 坐标是相对于父窗口的。也可以使用 SS_ETCHEDHORZ,SS_ETCHEDVERT 或 SS_ETCHEDFRAME 样式来用白色和灰色创建一个阴影框架。

        静态类还包括三个文本样式:SS_LEFT,SS_RIGHT 和 SS_CENTER。这些样式会创建左对齐、右对齐和居中对齐的文本。相应的文本由 CreateWindow 函数的窗口文本参数指定,可以被 SetWindowText 修改。当静态控件的窗口过程显示此文本时,它会使用 DT_WORDBREAK,DT_NOCLIP 和 DT_EXPANDTABS 等参数来调用 DrawText 函数。子窗口矩形框具有文本自动换行功能。

        这三个文本样式子窗口的背景颜色通常是 COLOR_BTNFACE,文本本身颜色是 COLOR_WINDOWTEXT。你可以俘获 WM_CTLCOLORSTATIC 消息,调用 SetTextColor 和 SetBkColor 分别改变文本颜色和背景颜色,同时返回背景画刷的句柄。这将在 COLORS1 程序中讨论并实现。

        最后,静态类还包括两个窗口样式,分别为 SS_ICON 和 SS_USERITEM。然而,当它们被用来作为子窗口控件时,这些样式是毫无意义的。我们会在讨论对话框的时候再次讨论它们。

0 0
原创粉丝点击