为对话框添加一个静态控件,并修改它的Caption属性为“操作界面”
创建一个MFC类,名称为CCaption,继承自CStatic。
为其添加一个成员函数HBRUSH CtlColor(CDC* pDC, UINT nCtlColor)
和void CCaption::Init(int nX, int nY, int nW, int nH)用来初始化标题栏位置
在实现文件中添加如下代码:
BEGIN_MESSAGE_MAP(CCaption, CStatic)
ON_WM_CTLCOLOR_REFLECT()
END_MESSAGE_MAP()
HBRUSH CCaption::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: 在此更改 DC 的任何特性
CFont font;
LOGFONT lf;
if (!pDC)
return NULL;
//创建一个空画刷,返回这个画刷可以让静态控件的背景透明
HBRUSH hr = (HBRUSH)GetStockObject(NULL_BRUSH);
//让文字的背景透明
pDC->SetBkMode(TRANSPARENT);
//设置文字的颜色为白色
pDC->SetTextColor(RGB(25, 255, 55));
::ZeroMemory(&lf, sizeof(lf));
//设置逻辑字体的高度
lf.lfHeight = 20;
//设置逻辑字体为粗体字
lf.lfWeight = FW_BOLD;
//设置字体为黑体
::lstrcpy(lf.lfFaceName, _T("黑体"));
//用逻辑字体创建一个CFont对象
font.CreateFontIndirect(&lf);
//应用字体
pDC->SelectObject(&font);
return hr;
}
void CCaption::Init(int nX, int nY, int nW, int nH)
{
MoveWindow(nX, nY, nW, nH);
}
为对话框中的静态控件IDC_STATIC_CAPTION添加一个成员变量,类型CStatic,名称为m_static,然后修改它的类型为CCaption。
在对话框的OnInitDialog中添加标题栏的位置初始化,具体代码如下:
m_static.Init(10, 12, 100, 40);
实现结果