重写OnPaint方法(WM_PAINT)和OnCtlColor的方法(WM_CTLCOLOR)
void CPannelRecentUsed::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialogEx::OnPaint()
CRect rect;
GetClientRect(rect);
dc.FillSolidRect(rect, RGB(0, 191, 255)); //绘制背景
SetText(&dc, &rect);//设置字体样式,声明void SetText(CPaintDC *pDC, CRect rec);
CDialog::OnPaint();
}
//设置字体样式
void CPannelRecentUsed::SetText(CPaintDC *pDC, CRect rec)
{
//CFont font;需要定义在头文件中才生效
font.CreatePointFont(180, "微软雅黑", pDC);
GetDlgItem(IDC_STATIC_TITLE)->SetFont(&font);//未绑定控件变量下的
font.CreatePointFont(160, "微软雅黑", pDC);
m_edlit_curBillNo.SetFont(&font);//绑定控件变量下的
}
//解决控件与背景颜色不融合的情况
HBRUSH CPannelRecentUsed::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
UINT id = pWnd->GetDlgCtrlID();
if ((id == IDC_STATIC)||(id == IDC_STATIC_TITLE))//id指控件的ID
{
pDC->SetBkMode(TRANSPARENT);
CRect rc;
pWnd->GetWindowRect(&rc);
ScreenToClient(&rc);
CDC* dc = GetDC();
pDC->BitBlt(0, 0, rc.Width(), rc.Height(), dc, rc.left, rc.top, SRCCOPY); //把父窗口背景图片先画到按钮上
ReleaseDC(dc);
hbr = (HBRUSH) ::GetStockObject(NULL_BRUSH);
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}