vs2013 MFC中静态字体颜色显示 背景显示
右击MFC编辑窗口,选择类向导,
选择消息中添加WM_CTLCOLOR设置背景函数 确定进入函数
HBRUSH DANKONG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
static CBrush gBr;
static bool isInited = false;
if (!isInited)
{
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1); //背景图提前插入资源到资源视窗里的Dialog中
gBr.CreatePatternBrush(&bitmap);
COLORREF clearColor = -1;
bitmap.DeleteObject();
isInited = true;
}
if (pWnd == this)
{
pDC->SetBkMode(TRANSPARENT);
return gBr; //主窗口背景使用这个背景刷
}
else
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH); //其他控件使用透明背景 不使用注视掉后其他控件有白边
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
//静态字体显示 按键贴图显示等
BOOL CMFC39Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
ShowWindow(SW_MAXIMIZE); //窗口最大化显示
//静态文本字体大小设置
CWnd* pWnd = GetDlgItem(IDC_STATIC); // 静态文本的编号cfont.CreateFont(40, //字体大小
0, 0, 0, FW_NORMAL,
FALSE, FALSE,
0,
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, _T("宋体")); // 字体
pWnd->SetFont(&cfont); //赋予字体
//------------------设置按键贴图
HBITMAP hBitmap1,hBitmap2,hBitmap3,hBitmap4,hBitmap5,hBitmap6;
hBitmap1 = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_ZONG));
hBitmap2 = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_ZU));
hBitmap3 = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_DAN));
hBitmap4 = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_SHE));
hBitmap5 = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_RIZHI));
hBitmap6 = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_EXIT));
((CButton *)GetDlgItem(IDC_BUTTON_ZU))->SetBitmap(hBitmap2);
((CButton *)GetDlgItem(IDC_BUTTON_DAN))->SetBitmap(hBitmap3);
((CButton *)GetDlgItem(IDC_BUTTON_SET))->SetBitmap(hBitmap4);
((CButton *)GetDlgItem(IDC_BUTTON_RIZHI))->SetBitmap(hBitmap5);
((CButton *)GetDlgItem(IDCANCEL))->SetBitmap(hBitmap6);
//------------------
return TRUE;
}
//控件刷新 防止重叠显示
void CMFC39Dlg::RefreshEditnotemsg(UINT uCtlID) //指定刷新的控件的变量uCtlID
{
CRect rc;
GetDlgItem(uCtlID)->GetWindowRect(&rc);
ScreenToClient(&rc);
InvalidateRect(rc);
}