首页/技术开发/内容

运用VC6.0完成窗口的任意分割

技术开发2023-12-19 阅读()
RDW_NOCHILDREN);
  return;
  }
  ASSERT_VALID(pDC);
  CRect rc=rectArg;
  switch(nType)
  {
  case splitBorder:
  //重画分割窗口边界,使之为红色
    pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0));
    rc.InflateRect(-CX_BORDER,-CY_BORDER);
    pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0));
    return;
  case splitBox:
    pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
    rc.InflateRect(-CX_BORDER,-CY_BORDER);
    pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
    rc.InflateRect(-CX_BORDER,-CY_BORDER);
    pDC->FillSolidRect(rc,RGB(0,0,0));
    pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
    return;
  case splitBar:
  //重画分割条,使之为绿色
    pDC->FillSolidRect(rc,RGB(255,255,255));
    rc.InflateRect(-5,-5);
    pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0));
    return;
  default:
    ASSERT(FALSE);
  }
  pDC->FillSolidRect(rc,RGB(0,0,255));
}
void CSplitterWndEx::OnInvertTracker(CRect &rect)
{
  ASSERT_VALID(this);
  ASSERT(!rect.IsRectEmpty());
  ASSERT((GetStyle()&WS_CLIPCHILDREN)==0);
  CRect rc=rect;
  rc.InflateRect(2,2);
  CDC* pDC=GetDC();
  CBrush* pBrush=CDC::GetHalftoneBrush();
  HBRUSH hOldBrush=NULL;
  if(pBrush!=NULL) hOldBrush=(HBRUSH)SelectObject(pDC->m_hDC,pBrush->m_hObject);
  pDC->PatBlt(rc.left,rc.top,rc.Width(),rc.Height(),BLACKNESS);
  if(hOldBrush!=NULL)
  SelectObject(pDC->m_hDC,hOldBrush);
  ReleaseDC(pDC);
}
同样我们只要继承CSplitterWnd中的其余的一些虚拟方法就可以生成具有自己个性的分割窗口了。

我的电子信箱:tingya@njpost.com.cn 和tingya@263.net
地址:南京邮政局计算机中心 张中庆
邮政编码:210008

第1页  第2页  第3页  第4页  第5页 

……

相关阅读