VC单文档分割窗口3--重绘分割条

1.初始化分割条的大小,在CMySplitter的构造函数中添加如下程序。

CMySplitter::CMySplitter(void)
{
	this->m_cxSplitter = 40;//must >=4,分割条的宽度
	this->m_cySplitter = 10;
	this->m_cxBorderShare = 0;//按下鼠标的拖动量
	this->m_cyBorderShare = 0;
	this->m_cxSplitterGap = 40;//拖动条的宽度
	this->m_cySplitterGap = 10;
}

 

2.接前面的项目,增加CMySplitter的消息响应函数OnDrawSplitter。

void CMySplitter::OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect)

 

3.函数中的nType是当前要重绘的风格类型

splitBox   The splitter drag box.
splitBar   The bar that appears between the two split windows.
splitIntersection The intersection of the split windows. This element will not be called when running on Windows 95.
splitBorder   The split window borders. 
#define CX_BORDER 10
#define CY_BORDER 10
void CMySplitter::OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect)
{
	// TODO: 在此添加专用代码和/或调用基类
	
	if(pDC==NULL)     
	{     
		RedrawWindow(rect,NULL,RDW_INVALIDATE|RDW_NOCHILDREN);   
		return;   
	}     

	CRect rc = rect;
	
	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));
		//break;
		return;    
		
	case   splitBox:   
		/*pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));   
		rc.InflateRect(-CX_BORDER,-CY_BORDER);     
		pDC->Draw3dRect(rc,RGB(255,255,0),RGB(255,255,0));   
		rc.InflateRect(-CX_BORDER,-CY_BORDER);   
		pDC->FillSolidRect(rc,RGB(255,255,0));     
		pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));*/
		//break;
		return;
	case   splitBar:
		//重画分割条,使之为蓝色
		//rc.InflateRect(-5,-5);
		pDC->FillSolidRect(rc,RGB(0,0,255));   
		//pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0));
		//break;
		return;
	default:     
		//ASSERT(FALSE);
		break;
	}     

	CSplitterWnd::OnDrawSplitter(pDC, nType, rect);
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值