📄 guicapoutbar.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 "..\header\GuiCapOutBar.h"
#include "..\header\GuiDrawLayer.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(GuiCapOutBar, CControlBar)
//{{AFX_MSG_MAP(GuiCapOutBar)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code !
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_ERASEBKGND()
ON_WM_SIZE()
ON_WM_SYSCOLORCHANGE()
ON_WM_NCCALCSIZE()
ON_WM_NCPAINT()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_TIMER()
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
GuiCapOutBar::GuiCapOutBar()
{
m_iBorder=4;
m_MiniTool=NULL;
m_miniSplitter=NULL;
}
GuiCapOutBar::~GuiCapOutBar()
{
}
BOOL GuiCapOutBar::Create (DWORD dwStyle, CWnd* pParentWnd, UINT uID,int iMaxi)
{
SetBarStyle (CBRS_ALIGN_TOP);
m_uID=uID;
m_iHigh=iMaxi;
return CControlBar::Create(0,0,dwStyle,CRect(0,0,0,0),pParentWnd,uID);
}
void GuiCapOutBar::SetStyleFlag(BOOL m_bFlag)
{
m_bIsFlag=m_bFlag; //si quiere que se comporte como un boton
}
void GuiCapOutBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
{
}
CSize GuiCapOutBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
{
return CSize(32767,m_iHigh);
}
int GuiCapOutBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CControlBar::OnCreate(lpCreateStruct)==-1)
return -1;
return 0;
}
void GuiCapOutBar::OnPaint()
{
CPaintDC dc(this);
CRect rcClient;
GetClientRect(&rcClient);
CBrush cb;
cb.CreateSysColorBrush(GuiDrawLayer::GetRGBColorShadow());
dc.FillRect(rcClient,&cb);
}
void GuiCapOutBar::RecalLayout()
{
if (!GetSafeHwnd()) return;
CRect m_rc;
GetClientRect(m_rc);
if (m_MiniTool != NULL && m_miniSplitter != NULL)
{
CRect m_rctemp=m_rc;
m_rctemp.right=m_rc.Width()/2;
m_MiniTool->MoveWindow(m_rctemp);
m_rctemp=m_rc;
m_rctemp.left=(m_rc.Width()/2)+1;
m_miniSplitter->MoveWindow(m_rctemp);
}
else if( m_MiniTool != NULL)
m_MiniTool->MoveWindow(m_rc);
else if (m_miniSplitter != NULL)
m_miniSplitter->MoveWindow(m_rc);
}
BOOL GuiCapOutBar::SetSplitter(CGuiMiniSplitter* m_sppliter)
{
if (!m_sppliter->Create(this))
return FALSE;
m_miniSplitter=m_sppliter;
RecalLayout();
return TRUE;
}
BOOL GuiCapOutBar::SetMiniTool(CGuiMiniTool* m_sppliter)
{
if (!m_sppliter->Create(_T(""),WS_VISIBLE | WS_CHILD |SS_OWNERDRAW,
CRect(0,0,0,0), this))
return FALSE;
m_MiniTool=m_sppliter;
RecalLayout();
return TRUE;
}
BOOL GuiCapOutBar::OnEraseBkgnd(CDC* pDC)
{
CBrush cbr;
cbr.CreateSolidBrush(GuiDrawLayer::GetRGBColorFace());
CRect m_rect;
GetClientRect(m_rect);
pDC->FillRect(m_rect,&cbr);
return TRUE;
}
void GuiCapOutBar::OnSize(UINT nType, int cx, int cy)
{
CControlBar::OnSize(nType,cx,cy);
RecalLayout();
}
void GuiCapOutBar::OnSysColorChange()
{
CControlBar::OnSysColorChange();
}
void GuiCapOutBar::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp)
{
lpncsp->rgrc[0].bottom -= m_iBorder;
lpncsp->rgrc[0].top += m_iBorder+3;
lpncsp->rgrc[0].left += m_iBorder;
lpncsp->rgrc[0].right-=m_iBorder;
}
void GuiCapOutBar::OnNcPaint()
{
CRect rcWindow;
CRect rcClient;
CWindowDC dc(this);
GetWindowRect(&rcWindow);
GetClientRect(&rcClient);
CBrush cbr;
cbr.CreateSolidBrush(GuiDrawLayer::GetRGBColorFace());
rcClient.OffsetRect(-rcWindow.TopLeft());
rcWindow.OffsetRect(-rcWindow.TopLeft());
ScreenToClient(rcWindow);
rcClient.OffsetRect(-rcWindow.left,-rcWindow.top);
dc.ExcludeClipRect(rcClient);
rcWindow.OffsetRect(-rcWindow.left, -rcWindow.top);
int ibotton=rcWindow.bottom;
rcWindow.top=rcWindow.bottom-m_iBorder;
dc.FillRect(rcWindow,&cbr);
rcWindow.top=0;
rcWindow.bottom+=3;
dc.FillRect(rcWindow,&cbr);
dc.FillSolidRect(0,rcWindow.top+1,rcWindow.right+1,1,GuiDrawLayer::GetRGBColorBTNHigh());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -