MFC背景图片不能覆盖标题栏,求解决!!!
void CDlgLogon::OnPaint()
{
CPaintDC dc(this);
//获取位置
//CRect ClientRect;
//GetClientRect(&ClientRect);
//绘画标题
//DrawSkinView(&dc);
//变量定义
CRect rect;
CBitmap bmpBackground;
CDC dcMem;
bmpBackground.LoadBitmap(IDB_LOBBY_LOGON_BACK);//加载背景图片
GetClientRect(&rect); //得到窗体的大小
dcMem.CreateCompatibleDC(&dc);
//绘画背景
dcMem.SelectObject(&bmpBackground);
dc.BitBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, SRCCOPY);
//int nXExcursion=GetXExcursionPos();
//int nYExcursion=GetYExcursionPos();
//dc.FillSolidRect(nXExcursion,nYExcursion,ClientRect.Width()-2*nXExcursion,4,m_SkinAttribute.m_crBackFrame);
//dc.FillSolidRect(nXExcursion,ClientRect.Height()-8,ClientRect.Width()-2*nXExcursion,7,m_SkinAttribute.m_crBackFrame);
//dc.FillSolidRect(nXExcursion,nYExcursion+4,12,ClientRect.Height()-nYExcursion-9,m_SkinAttribute.m_crBackFrame);
//dc.FillSolidRect(ClientRect.Width()-nXExcursion-12,nYExcursion+4,12,ClientRect.Height()-nYExcursion-9,m_SkinAttribute.m_crBackFrame);
//dc.FillSolidRect(nXExcursion,119,ClientRect.Width()-2*nXExcursion,5,m_SkinAttribute.m_crBackFrame);
//创建画笔
//CPen BorderPen(PS_SOLID,1,m_SkinAttribute.m_crInsideBorder);
//CPen * pOldPen=dc.SelectObject(&BorderPen);
//dc.SelectObject(m_SkinAttribute.m_brBackGround);
//绘画内框
//CRect rcDrawRect(nXExcursion,nYExcursion,ClientRect.Width()-2*nXExcursion,ClientRect.Height());
//if (m_bMaxSize==true) rcDrawRect.DeflateRect(3,3,3,2);
//else rcDrawRect.DeflateRect(3,4,2,4);
//rcDrawRect.top=123;
//if(m_bNetOption)rcDrawRect.bottom=368;
//else rcDrawRect.bottom=284;
//dc.RoundRect(&rcDrawRect,CPoint(8,8));
//释放资源
//dc.SelectObject(pOldPen);
//BorderPen.DeleteObject();
return;
}
[解决办法]
试一下CWindowDC
不行的话,就去掉标题栏,自己在客户区里面模拟一个
[解决办法]
void CDqq1View::OnDraw(CDC* pDC)
{
CDqq1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CDC memDC;
CWindowDC wdc(GetParent());
memDC.CreateCompatibleDC(&wdc);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
memDC.SelectObject(&bmp);
CRect rt;
GetWindowRect(rt);
wdc.BitBlt(0,0,rt.Width(),rt.Height(),&memDC,0,0,SRCCOPY);
}
[解决办法]
我以前是直接把标题栏去掉,自己添加按钮重绘,直接把位图绘制到标题栏上恐怕不行吧?我也不知道,请指教……
[解决办法]
我这是在单文档View中的,你在对话框中么?那就没有Doc,去掉
[解决办法]
PreCreateWindow(CREATESTRUCT& cs)
{
if(cs.style & WS_CAPTION)
{
cs.style &=~WS_CAPTION;
m_dwStyle
[解决办法]
= WS_WNDIMPL_CAPTION;
}
if(cs.style & WS_SIZEBOX)
{
cs.style &=~WS_SIZEBOX;
m_dwStyle
[解决办法]
=WS_WNDIMPL_SIZEOBOX;
}
if(cs.style & WS_BORDER)
{
cs.style &=~WS_BORDER;
m_dwStyle
[解决办法]
=WS_WNDIMPL_BORDER;
}
//ASSERT(cs.dwExStyle & WS_EX_TOOLWINDOW);
return CWnd::PreCreateWindow(cs);
}
应该在这个函数里去掉标题栏