创建字体
hFont = CreateFont(-16, -9, 0, 0, 0,
FALSE,//斜体
FALSE,//下划线
FALSE,//删除线
DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY,
FF_DONTCARE,
"幼圆"
);
在窗体销毁时释放字体
设置控件的字体,通过发送消息WM_SETFONT设置静态文本0和1的字体
SendMessage(GetDlgItem(hwnd,IDC_STATIC_0), WM_SETFONT, (WPARAM)hFont, NULL);
SendMessage(GetDlgItem(hwnd,IDC_STATIC_1), WM_SETFONT, (WPARAM)hFont, NULL);
设置静态文本颜色,在窗体过程函数的WM_CTLCOLORSTATIC消息响应中处理
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
...
case WM_CTLCOLORSTATIC://静态文本颜色
{
//获取设备上下文
HDC hdcStatic = (HDC)wParam;
//判断是是哪个静态控件
if((HWND)lParam == GetDlgItem(hwnd,IDC_STATIC_0)){
//静态文本0的颜色设置
//文本颜色
SetTextColor( hdcStatic, RGB(222, 0,0) );
//文本背景色
SetBkColor( hdcStatic, RGB(0,156,222) );
//画刷色
HBRUSH hBrush = CreateSolidBrush( RGB(222,156,83) );
//返回画刷
return (INT_PTR)hBrush;
}else{//其它静态文本控件
//设置背景透明
SetBkMode(hdcStatic, TRANSPARENT);
//文本颜色
SetTextColor( hdcStatic, RGB(222, 222,0) );
//文本背景色
SetBkColor( hdcStatic, RGB(0,156,83) );
//返回画刷
return (LRESULT)GetStockObject(NULL_BRUSH);
}
//返回一个正常窗体背景颜色的画刷
return (BOOL)CreateSolidBrush (GetSysColor(COLOR_WINDOW));
}
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

SetTextColor设置的是文本的颜色,SetBkColor设置的是文本的背景色,SetBkMode可设置文本透明。返回的画刷决定文本控件的背景颜色
通过GetStockObject或者CreateSolidBrush可以得到画刷
GetStockObject的参数可以是以下默认的画刷
BLACK_BRUSH
黑色画笔。
DKGRAY_BRUSH
深灰色画笔。
DC_BRUSH
纯色画笔。 默认颜色为白色。 可以使用 SetDCBrushColor 函数更改颜色。 有关详细信息,请参见“备注”部分。
GRAY_BRUSH
灰色画笔。
HOLLOW_BRUSH
空心画笔 (等效于NULL_BRUSH) 。
LTGRAY_BRUSH
浅灰色画笔。
NULL_BRUSH
null 画笔 (等效于HOLLOW_BRUSH) 。
WHITE_BRUSH
白色画笔。
BLACK_PEN
黑色触笔。
DC_PEN
纯色笔颜色。 默认颜色为黑色。 可以使用 SetDCPenColor 函数更改颜色。 有关详细信息,请参见“备注”部分。
NULL_PEN
null 触笔。 null 笔不绘制任何内容。
WHITE_PEN
白色触笔。
ANSI_FIXED_FONT
Windows 固定间距 (单空间) 系统字体。
ANSI_VAR_FONT
Windows 可变间距 (比例空间) 系统字体。
DEVICE_DEFAULT_FONT
设备依赖字体。
DEFAULT_GUI_FONT
用户界面对象(如菜单和对话框)的默认字体。 不建议使用DEFAULT_GUI_FONT或SYSTEM_FONT来获取对话框和窗口使用的字体;有关详细信息,请参阅备注部分。
默认字体为 Tahoma。
OEM_FIXED_FONT
原始设备制造商 (OEM) 依赖固定间距 (单空间) 字体。
SYSTEM_FONT
系统字体。 默认情况下,系统使用系统字体绘制菜单、对话框控件和文本。 不建议使用DEFAULT_GUI_FONT或SYSTEM_FONT来获取对话框和窗口使用的字体;有关详细信息,请参阅备注部分。
默认系统字体为 Tahoma。
SYSTEM_FIXED_FONT
固定间距 (单空间) 系统字体。 此库存对象仅用于与低于 3.0 的 16 位 Windows 版本兼容。
DEFAULT_PALETTE
默认调色板。 此调色板由系统调色板中的静态颜色组成。
CreateSolidBrush的参数通过RGB宏指定返回画刷的颜色
CreateSolidBrush的参数也可以通过GetSysColor可以得到系统预定义的颜色
系统预定义的颜色
COLOR_3DDKSHADOW
21
三维显示元素的暗影。
Windows 10或更高版本:不支持此值。
COLOR_3DFACE
15
三维显示元素和对话框背景的人脸颜色。
COLOR_3DHIGHLIGHT
20
三维显示元素的突出显示颜色 (面向光源的边缘。)
Windows 10或更高版本:不支持此值。
COLOR_3DHILIGHT
20
三维显示元素的突出显示颜色 (面向光源的边缘。)
Windows 10或更高版本:不支持此值。
COLOR_3DLIGHT
22
面向光源的边缘的三维显示元素的浅色 (。)
Windows 10或更高版本:不支持此值。
COLOR_3DSHADOW
16
三维显示元素的阴影颜色 (面向面向光源的边缘) 。
Windows 10或更高版本:不支持此值。
COLOR_ACTIVEBORDER
10
活动窗口边框。
Windows 10或更高版本:不支持此值。
COLOR_ACTIVECAPTION
2
活动窗口标题栏。
关联的前景色 COLOR_CAPTIONTEXT。
如果启用了渐变效果,则指定活动窗口标题栏的颜色渐变中的左侧颜色。
Windows 10或更高版本:不支持此值。
COLOR_APPWORKSPACE
12
多个文档界面的背景色 (MDI) 应用程序。
Windows 10或更高版本:不支持此值。
COLOR_BACKGROUND
1
桌面设备。
Windows 10或更高版本:不支持此值。
COLOR_BTNFACE
15
三维显示元素和对话框背景的人脸颜色。 关联的前景色 COLOR_BTNTEXT。
Windows 10或更高版本:不支持此值。
COLOR_BTNHIGHLIGHT
20
三维显示元素的突出显示颜色 (面向光源的边缘。)
Windows 10或更高版本:不支持此值。
COLOR_BTNHILIGHT
20
三维显示元素的突出显示颜色 (面向光源的边缘。)
Windows 10或更高版本:不支持此值。
COLOR_BTNSHADOW
16
三维显示元素的阴影颜色 (面向面向光源的边缘) 。
Windows 10或更高版本:不支持此值。
COLOR_BTNTEXT
18
按下按钮上的文本。 关联的背景色COLOR_BTNFACE。
COLOR_CAPTIONTEXT
9
标题、大小框和滚动条箭头框中的文本。 关联的背景色COLOR_ACTIVECAPTION。
Windows 10或更高版本:不支持此值。
COLOR_DESKTOP
1
桌面设备。
Windows 10或更高版本:不支持此值。
COLOR_GRADIENTACTIVECAPTION
27
活动窗口标题栏的颜色渐变中的右侧颜色。 COLOR_ACTIVECAPTION指定左侧颜色。 将SPI_GETGRADIENTCAPTIONS与 SystemParametersInfo 函数一起使用,以确定是否启用了渐变效果。
Windows 10或更高版本:不支持此值。
COLOR_GRADIENTINACTIVECAPTION
28
非活动窗口标题栏的颜色渐变中的右侧颜色。 COLOR_INACTIVECAPTION指定左侧颜色。
Windows 10或更高版本:不支持此值。
COLOR_GRAYTEXT
17
已禁用) 文本的灰显 (。 如果当前显示驱动程序不支持纯灰色,则此颜色设置为 0。
COLOR_HIGHLIGHT
13
在控件中选择的项 () 。 关联的前景色COLOR_HIGHLIGHTTEXT。
COLOR_HIGHLIGHTTEXT
14
在控件中选择的项 () 的文本。 关联的背景色COLOR_HIGHLIGHT。
COLOR_HOTLIGHT
26
超链接或热跟踪项的颜色。 关联的背景色COLOR_WINDOW。
COLOR_INACTIVEBORDER
11
非活动窗口边框。
Windows 10或更高版本:不支持此值。
COLOR_INACTIVECAPTION
3
非活动窗口标题。
关联的前景色COLOR_INACTIVECAPTIONTEXT。
如果启用了渐变效果,则指定非活动窗口标题栏的颜色渐变中的左侧颜色。
Windows 10或更高版本:不支持此值。
COLOR_INACTIVECAPTIONTEXT
19
非活动标题中的文本颜色。 关联的背景色COLOR_INACTIVECAPTION。
Windows 10或更高版本:不支持此值。
COLOR_INFOBK
24
工具提示控件的背景色。 关联的前景色COLOR_INFOTEXT。
Windows 10或更高版本:不支持此值。
COLOR_INFOTEXT
23
工具提示控件的文本颜色。 关联的背景色COLOR_INFOBK。
Windows 10或更高版本:不支持此值。
COLOR_MENU
4
菜单背景。 关联的前景色COLOR_MENUTEXT。
Windows 10或更高版本:不支持此值。
COLOR_MENUHILIGHT
29
当菜单显示为平面菜单时,用于突出显示菜单项的颜色 (请参阅 SystemParametersInfo) 。 突出显示的菜单项带有COLOR_HIGHLIGHT。
Windows 2000、Windows 10或更高版本:不支持此值。
COLOR_MENUBAR
30
当菜单显示为平面菜单时菜单栏的背景色, (请参阅 SystemParametersInfo) 。 但是,COLOR_MENU继续指定菜单弹出窗口的背景色。
Windows 2000、Windows 10或更高版本:不支持此值。
COLOR_MENUTEXT
7
菜单中的文本。 关联的背景色COLOR_MENU。
Windows 10或更高版本:不支持此值。
COLOR_SCROLLBAR
0
滚动条灰色区域。
Windows 10或更高版本:不支持此值。
COLOR_WINDOW
5
窗口背景。 关联的前景颜色COLOR_WINDOWTEXT和COLOR_HOTLITE。
COLOR_WINDOWFRAME
6
窗口框架。
Windows 10或更高版本:不支持此值。
COLOR_WINDOWTEXT
8
窗口中的文本。 关联的背景色COLOR_WINDOW。
按钮颜色设置
按钮在创建时需要设置BS_OWNERDRAW属性
CreateWindow("button",
"button",
WS_CHILD | WS_VISIBLE|BS_OWNERDRAW,
250,60, 100, 30,
hwnd,
(HMENU)IDC_BUTTON_0,
((LPCREATESTRUCT)lParam)->hInstance,
NULL);
对WM_CTLCOLORBTN消息的响应中可以设置按钮的颜色
case WM_CTLCOLORBTN://按钮颜色
{
//得到控件句柄
HWND hBtn = (HWND)lParam;
//设备上下文
HDC hdc = (HDC)wParam;
RECT rc;
char text[64] = {0};
//获取按钮文字
GetWindowText(hBtn,text,sizeof(text)-1);
//获取按钮区域
GetClientRect(hBtn,&rc);
//如果按钮是按下状态设置一种颜色
if(SendMessage(hBtn, BM_GETSTATE, NULL, NULL) & BST_PUSHED){
//文本颜色
SetTextColor(hdc,RGB(0,255,255));
//文本背景透明
SetBkMode(hdc,TRANSPARENT);
//绘制按钮文字
DrawText(hdc,text,strlen(text),&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
//返回画刷背景色
return (INT_PTR)CreateSolidBrush(RGB(61, 89, 171));
}else{//按钮非按下状态的颜色
//文本颜色
SetTextColor(hdc,RGB(255,255,255));
//文本透明
SetBkMode(hdc,TRANSPARENT);
//绘制文字
DrawText(hdc,text,strlen(text),&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
//返回画刷背景色
return (INT_PTR)CreateSolidBrush(RGB(161, 89, 171));
}
}
return 0;

g++编译参数 -mwindows取消控制台背景-lgdi32连接gdi32库
g++ a0118.cpp -lgdi32 -mwindows