右击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); // 静态文本的编号hBitmap6 = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_EXIT));
//------------------
return TRUE;
}
//控件刷新 防止重叠显示
void CMFC39Dlg::RefreshEditnotemsg(UINT uCtlID) //指定刷新的控件的变量uCtlID
{
CRect rc;
GetDlgItem(uCtlID)->GetWindowRect(&rc);
ScreenToClient(&rc);
InvalidateRect(rc);
}