vs2013 MFC中静态字体颜色显示 背景显示

vs2013 MFC中静态字体颜色显示 背景显示_第1张图片


右击MFC编辑窗口,选择类向导,

vs2013 MFC中静态字体颜色显示 背景显示_第2张图片

选择消息中添加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_ZONG))->SetBitmap(hBitmap1);
((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);
}

你可能感兴趣的:(vs2013 MFC中静态字体颜色显示 背景显示)