void NFrameBase::Draw(NRender* render, Base::NPoint& ptOffset, HRGN clipRgn) { if(!IsVisible()) return; Base::NRect rect(frameRect_); rect.Offset(ptOffset.X, ptOffset.Y); if(!::RectInRegion(clipRgn, rect)) return; NRenderClip clip(render, clipRgn, rect); if(clip.IsEmpty()) return; PreDrawEvent.Invoke(this, NULL); DrawBkg(render, rect); rect.Left += padding_.Left; rect.Top += padding_.Top; rect.Right -= padding_.Right; rect.Bottom -= padding_.Bottom; DrawContent(render, rect); DrawFore(render, rect); DrawChilds(render, ptOffset, clipRgn); }
void RingDockSite::DrawSite(HDC hDC,RINGPARAMS& param) { LPRINGBARLINEINFO tmp = m_First; RingDockBar* bar; //if(param.uMsg == WM_ERASEBKGND && !DrawBkg(hDC)) // DefaultProc(param); DrawBkg(hDC); if(m_State == TBS_FLAG_DOCKTOP && MASK_MATCH(m_parent->GetStyle(),WS_CAPTION) && tmp && tmp->isVisible) { //非底部且父窗口有标题栏,绘制最上一条横线 RECT rc = {0,0,m_rcPos.right,2}; DrawEdge(hDC,&rc,BDR_SUNKENOUTER,BF_TOP); DrawEdge(hDC,&rc,BDR_SUNKENOUTER,BF_BOTTOM); } while(tmp) { bar = tmp->m_first; while(bar) { //ExcludeClipRect(param.hdc,bar->m_rcClient.left,bar->m_rcClient.top, // bar->m_rcClient.right,bar->m_rcClient.bottom); if(!bar->Draw(hDC)) { OnDockBarHide(bar); bar->Show(bar->IsVisible()?SW_SHOW:SW_HIDE); return; } bar = bar->m_next; } if(tmp->isVisible && tmp->m_SplitRc.right != 0) { if(IsVert()) tmp->m_SplitRc.bottom = tmp->m_SplitRc.top + m_rcPos.bottom - m_rcPos.top; else tmp->m_SplitRc.right = tmp->m_SplitRc.left + m_rcPos.right - m_rcPos.left; DrawEdge(hDC,&tmp->m_SplitRc,BDR_RAISEDINNER,BF_RECT); DrawEdge(hDC,&tmp->m_SplitRc,BDR_RAISEDOUTER,BF_BOTTOMRIGHT); } tmp = tmp->m_nextline; } /*if(IsVert()) { RECT rc; GetClientRect(&rc); if(rc.right > 1) DrawEdge(hDC,&rc,BDR_SUNKENOUTER,BF_TOP); } */ }
void NFrameBase::Draw(NRender* render, Base::NPoint& ptOffset, HRGN clipRgn) { if(!IsVisible() || !IsValid()) return; Base::NRect rect(frameRect_); rect.Offset(ptOffset.X, ptOffset.Y); if(!::RectInRegion(clipRgn, rect)) return; NRenderClip clip(render, clipRgn, rect); DrawBkg(render, rect); DrawContent(render, rect); DrawFore(render, rect); DrawChilds(render, ptOffset, clipRgn); }