通过MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)添加,不过在默认的消息列表里是没有的,手动添加就可以。
LRESULT OnEraseBkgnd(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
CPaintDC dc(m_hWnd);
CDC MemDC;
CBitmap oldBmp;
CBitmap bmp;
CRect rcWin;
GetClientRect(&rcWin);
MemDC.CreateCompatibleDC(dc);
bmp.LoadBitmap(IDB_BITMAP1);
oldBmp.Attach(MemDC.SelectBitmap(bmp));
dc.BitBlt(0, 0, rcWin.Width(), rcWin.Height(), MemDC, 0, 0, SRCCOPY);
return 0;
};
处理静态文本背景透明:
LRESULT CAboutDlg1::OnCtlColorStatic(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDCHandle dc( (HDC) wParam );
dc.SetTextColor( RGB(0,0,0) );
//dc.SetBkColor(RGB(0, 13, 86));
dc.SetBkMode(TRANSPARENT);
//return (LRESULT) (HBRUSH) m_brRedBk;
return (LRESULT)GetStockObject(NULL_BRUSH);//(LRESULT)GetSysColorBrush(COLOR_3DHILIGHT);
}
如图所示:
