⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guistatusbar.cpp

📁 用bcg库编写的java IDE 源码
💻 CPP
字号:
//-----------------------------------------------------------------------//
// This is a part of the GuiLib MFC Extention.							 //	
// Autor  :  Francisco Campos											 //
// (C) 2002 Francisco Campos <www.beyondata.com> All rights reserved     //
// This code is provided "as is", with absolutely no warranty expressed  //
// or implied. Any use is at your own risk.								 //		
// You must obtain the author's consent before you can include this code //
// in a software library.												 //
// If the source code in  this file is used in any application			 //
// then acknowledgement must be made to the author of this program		 //	
// fco_campos@tutopia.com														 //
//-----------------------------------------------------------------------//


#include "stdafx.h"
#include "GuiStatusBar.h"
#include "XPDrawLayer.h"

// CGuiStatusBar

IMPLEMENT_DYNAMIC(CGuiStatusBar, CStatusBar)
CGuiStatusBar::CGuiStatusBar()
{
	m_Style=DEVSTUDIO;
}

CGuiStatusBar::~CGuiStatusBar()
{
}


BEGIN_MESSAGE_MAP(CGuiStatusBar, CStatusBar)
	ON_WM_PAINT()
END_MESSAGE_MAP()



// CGuiStatusBar message handlers

void CGuiStatusBar::SetStyle(Style nStyle)
{
	m_Style=nStyle;
}
void CGuiStatusBar::PreSubclassWindow() 
{
	ModifyStyle(0,BS_OWNERDRAW);
	CStatusBar::PreSubclassWindow();
}

void CGuiStatusBar::OnPaint()
{
	CRect rcClient,rcTemp;
	CBrush cb;
	CPaintDC dc(this); 
	GetClientRect(&rcClient);
	cb.CreateSolidBrush(GuiDrawLayer::GetRGBColorFace());
	CWnd::DefWindowProc( WM_PAINT, (WPARAM)dc.m_hDC, 0 );
	rcTemp=rcClient;
	rcClient.bottom=rcClient.top+2;
	rcClient.right+=50;
	dc.FillRect(rcClient,&cb);
	Drawpanels(&dc);
}

void  CGuiStatusBar::Drawpanels(CDC *pDC)
{
	int iCont=GetCount();
	CRect rcCli,rcCliente;
	CString m_cad;
	int OldMode=pDC->SetBkMode(TRANSPARENT);
	for (int i=0; i < iCont; i++)
	{
		GetItemRect(i,&rcCli);
		GetPaneText(i, m_cad);
		if (i == iCont-1)
		{
			CSize m_sChar=pDC->GetTextExtent(m_cad,m_cad.GetLength());
			if (rcCli.Width() < m_sChar.cx)
			{
				int dif=m_sChar.cx-rcCli.Width();
				rcCli.right=rcCli.left+m_sChar.cx-dif;
			}
		}
		if (m_Style == DEVSTUDIO)
			pDC->Draw3dRect(rcCli,GuiDrawLayer::GetRGBColorShadow(),GuiDrawLayer::GetRGBColorShadow());
		else
			pDC->Draw3dRect(rcCli,GuiDrawLayer::GetRGBColorTabs(),GuiDrawLayer::GetRGBColorTabs());
		ClearRect(pDC,rcCli);
		if (i == iCont-1)
		{
			rcCli.left=rcCli.right;
			rcCli.right=rcCli.left+2;
			pDC->Draw3dRect(rcCli,GuiDrawLayer::GetRGBColorFace(),GuiDrawLayer::GetRGBColorFace());
			rcCli.right+=1;
			pDC->Draw3dRect(rcCli,GuiDrawLayer::GetRGBColorFace(),GuiDrawLayer::GetRGBColorFace());
			rcCli.right+=1;
			pDC->Draw3dRect(rcCli,GuiDrawLayer::GetRGBColorFace(),GuiDrawLayer::GetRGBColorFace());

		}

		
		//rcCli.left+=1;
	
	}
	pDC->SetBkMode(OldMode);
	GetClientRect(&rcCliente);
	if ((rcCliente.right - rcCli.right) != 0)
	{
		CBrush cb;
		cb.CreateSolidBrush(GuiDrawLayer::GetRGBColorFace());
		rcCliente.left = rcCli.right;
		rcCliente.bottom= rcCliente.top+5;
		pDC->FillRect(rcCliente,&cb);
		//DrawLB(&rcCliente,pDC);
	}
}

void CGuiStatusBar::ClearRect(CDC* pDC,CRect rc)
{
	CRect rcCli=rc;
	rcCli.left+=1;
	rcCli.top+=1;
	for (int i=0; i < 3; i++)
	{
		rcCli.right-=1;
		rcCli.bottom-=1;
        pDC->Draw3dRect(rcCli,GuiDrawLayer::GetRGBColorFace(),GuiDrawLayer::GetRGBColorFace());
	}
}
void CGuiStatusBar::DrawLB(CRect* rcLb,CDC* pDC)
{
	pDC->SelectStockObject(COLOR_3DSHADOW);
	int gap=10;
	for (int i=0; i< 3; i++)
	{
		pDC->MoveTo(rcLb->left+gap,rcLb->bottom);
		pDC->LineTo(rcLb->right,rcLb->top+gap+1);
		gap+=2;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -