您的位置:首页 > 其它

窗口、CListCtrl控件、Edit控件设置背景图片

2017-10-27 10:10 621 查看
如下图所示:



首先要导入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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: