终于可以不管MFC和WTL了,是啊,我们要用的是WinX,管其他是什么东西,管其他和WinX到底是相同还是不同呢。我们需要了解WinX的Interface。
这次我们了解的接口的功能是如何更改窗口背景颜色,包括更改控件的背景颜色。
从step002中的几个例子中,我们可以看到在WinX中更改窗口背景色是通过一组宏来实现的:
l WINX_BKGND_BRUSH
l WINX_CTLBKGND_NULL
l WINX_BKGND_PATTERN
l WINX_CTLBKGND_BRUSH
1、WINX_BKGND_BRUSH
WINX_BKGND_BRUSH带一个参数,即颜色,如GRAY_BRUSH等,这个Windows系统一致。顾名思义,就是将窗口的背景色设置为参数表示的颜色。如果你要指定一个窗口的背景色,只需要在类定义中加上这个宏就可以了,如:
{
WINX_BKGND_BRUSH(LTGRAY_BRUSH);
// ……
};
下表列出了一些颜色:
颜色 | 描述 |
WHITE_BRUSH | 白色 |
LTGRAY_BRUSH | 轻灰色 |
GRAY_BRUSH | 灰色 |
DKGRAY_BRUSH | 重灰色 |
BLACK_BRUSH | 黑色 |
2、WINX_CTLBKGND_NULL
WINX_CTLBKGND_NULL带一个参数,即控件窗口类名,如ctlStatic。该宏将参数所指定的这类窗口的背景色 设置为透明。同样,使用方法是,在类定义中加上这个宏,如:
{
WINX_CTLBKGND_NULL(ctlButton);
// ……
};
下表列出了一些窗口类名:
类名 | 描述 |
ctlMsgBox | 消息框 |
ctlEdit | 编辑框 |
ctlListBox | 列表框 |
ctlButton | 按钮 |
ctlDialog | 对话框 |
ctlScrollBar | 滚动条 |
ctlStatic | 文本框 |
3、WINX_BKGND_PATTERN
WINX_BKGND_PATTERN带一个参数,为资源文件中一副位图的ID。该宏设定窗口背景为参数所指定的位图。如:WINX_BKGND_PATTERN(IDB_BKGND);。
4、WINX_CTLBKGND_BRUSH
于宏WINX_BKGND_BRUSH类似,但此宏有两个参数,分别为控件类名、背景颜色。设定控件的ID为指定的背景颜色。控件类名可以为多个类名相或的值,代表同时设置多个控件。如:WINX_CTLBKGND_BRUSH(CtlDialog|CtlStatic, GRAY_BRUSH);。
其他设置窗口背景的宏:
l WINX_BKGND_NULL
设定背景色为透明
l WINX_BKGND_COLOR
设定背景颜色,类似于WINX_BKGND_COLOR,但参数不同,如COLOR_WINDOW,见附表一。
l WINX_CTLBKGND_COLOR
设定控件背景色,类似于WINX_CTLBKGND_BRUSH,但参数不同,参数取值同WINX_BKGND_COLOR,见附表一。
l WINX_CTLBKGND_NULL_ALL
设定所有控件背景色为透明。
由上面可以看出,Backgrnd相关的宏,其实分为两类,一类是WINX_BKGND_XXX,一类是WINX_CTLBKGND_XXX。前者指设置窗口的背景,后者指设置一类窗口的背景。
附表一:
窗口颜色 | 描述 |
COLOR_SCROLLBAR | 滚动条 |
COLOR_BACKGROUND | 略 |
COLOR_ACTIVECAPTION | 略 |
COLOR_INACTIVECAPTION | 略 |
COLOR_MENU | 略 |
COLOR_WINDOW | 略 |
COLOR_WINDOWFRAME | 略 |
COLOR_MENUTEXT | 略 |
COLOR_WINDOWTEXT | 略 |
COLOR_CAPTIONTEXT | 略 |
COLOR_ACTIVEBORDER | 略 |
COLOR_INACTIVEBORDER | 略 |
COLOR_APPWORKSPACE | 略 |
COLOR_HIGHLIGHT | 略 |
COLOR_HIGHLIGHTTEXT | 略 |
COLOR_BTNFACE | 略 |
COLOR_BTNSHADOW | 略 |
COLOR_GRAYTEXT | 略 |
COLOR_BTNTEXT | 略 |
COLOR_INACTIVECAPTIONTEXT | 略 |
COLOR_BTNHIGHLIGHT | 略 |