如下图所示:
首先要导入bmp格式的背景图片:
1、窗口绘制背景图:
BOOL C账号管理器Dlg::OnEraseBkgnd(CDC* pDC)
{
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap Cbp;
Cbp.LoadBitmap(IDB_FILEMGR);
MemDC.SelectObject(&Cbp);
BITMAP Bp;
Cbp.GetBitmap(&Bp);
CRect rect;
GetClientRect(&rect);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,Bp.bmWidth,Bp.bmHeight,SRCCOPY);
MemDC.DeleteDC();
return TRUE;
//return CDialogEx::OnEraseBkgnd(pDC);
}
2、3个编辑框绘制背景图:
HBRUSH C账号管理器Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
switch (pWnd->GetDlgCtrlID())
{
case IDC_STATIC_NAME:
case IDC_STATIC_ID:
case IDC_STATIC_PW:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,255,0));
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);//空画刷,不加此句会有阴影
break;
case IDC_NAME:
case IDC_ID:
case IDC_PASSWORD:
CWnd* pd; CRect rc;
if(pWnd->GetDlgCtrlID() == IDC_NAME) pd = (CWnd*)GetDlgItem(IDC_NAME);
if(pWnd->GetDlgCtrlID() == IDC_ID) pd = (CWnd*)GetDlgItem(IDC_ID);
if(pWnd->GetDlgCtrlID() == IDC_PASSWORD) pd = (CWnd*)GetDlgItem(IDC_PASSWORD);
pd->GetClientRect(&rc);
ScreenToClient(&rc);
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
CBitmap bmp;
bmp.LoadBitmap(IDB_FILEMGR);
CBrush brush(&bmp);
CBrush* pOldBrush = (CBrush*)pDC->SelectObject(&brush);
pDC->FillRect(&rc,&brush);
hbr = (HBRUSH)brush;
break;
}
return hbr;
}
3、CListCtrl控件绘制背景图:在对话框的初始化函数中进行也可以:
m_List.SetTextBkColor(CLR_NONE);
m_List.SetBkColor(CLR_NONE);
m_List.SetTextColor(RGB(255,0,0));
TCHAR szBuffer[_MAX_PATH];
VERIFY(::GetModuleFileName(AfxGetInstanceHandle(), szBuffer, _MAX_PATH));
CString sPath = (CString)szBuffer;
sPath = sPath.Left(sPath.ReverseFind('\\') + 1);
sPath += "file manager.bmp";
m_List.SetBkImage( sPath.GetBuffer(sPath.GetLength()), TRUE); // 定义:CListCtrl m_controllist1;
sPath.ReleaseBuffer();