MFC默认界面太寒碜我已经无力吐槽了,最近稍微做了一些美化的内容,主要是对话框背景颜色的修改,控件文字大小、字体、颜色的修改,多种配色使得对话框风格活泼不少。
修改前后对比图:
代码如下,仅列出需要修改的函数:
// VirtualMeterDlg.cpp : 实现文件
//
BOOL CVirtualMeterDlg::OnInitDialog()
{
// ... 为便于阅读,自动生成代码省略
// TODO: 在此添加额外的初始化代码
【1.修改IDC_STATIC_STATION控件字体】
CFont* p_font = new CFont;
p_font->CreateFont(36, // nHeight,文字大小
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_BOLD, // nWeight,加粗
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial")); // lpszFac,字体
((CStatic*)GetDlgItem(IDC_STATIC_STATION))->SetFont(p_font, FALSE);
((CStatic*)GetDlgItem(IDC_STATIC_STATION))->SetWindowText(_T("MS50U000"));
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CVirtualMeterDlg::OnPaint()
{
if (IsIconic())
{
// ... 为便于阅读,自动生成代码省略
}
else
{
【2.修改对话框背景颜色】
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect, RGB(240, 240, 220));
CDialogEx::OnPaint();
}
}
【3.响应WM_CTL_COLOR消息,修改STATIC控件和EDIT控件的文字颜色和背景颜色】
HBRUSH CVirtualMeterDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
if (nCtlColor == CTLCOLOR_STATIC)
{
//总体颜色设置
pDC->SetTextColor(RGB(50, 50, 200)); //字体颜色
pDC->SetBkColor(RGB(240, 240, 220)); //字体背景色
//STATIC控件单独颜色设置
switch (pWnd->GetDlgCtrlID())
{
case IDC_STATIC_TEMP:
case IDC_STATIC_HUMI:
case IDC_STATIC_BARO:
pDC->SetTextColor(RGB(50, 50, 100)); //字体颜色
break;
case IDC_STATIC_STATION:
pDC->SetTextColor(RGB(255, 100, 50)); //字体颜色
default:
break;
}
}
if (nCtlColor == CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(150, 105, 200)); //字体颜色
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}